Lenguaje de Programación Tema 1: Introducción Profesor John Ledgard Trujillo Trejo Universidad Nacional Mayor de San Marcos Ingeniería Eléctrica y Electrónica Curso 2017-II Introducción Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.1 Introducción Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.2 Introducción Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.3 Introducción Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.4 Introducción Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.5 Introducción Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.6 Qué es la Informática Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Informática (Del fr. informatique). 1. f. Conjunto de conocimientos científicos y técnicas que hacen posible el tratamiento automático de la información por medio de ordenadores. (Extraído del Diccionario de la RAE, 2016) Computadora electrónica 1. f. Máquina electrónica digital, dotada de una memoria de gran capacidad y de métodos de tratamiento de la información, capaz de resolver problemas matemáticos y lógicos mediante la utilización automática de programas informáticos. Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.7 Qué es una computadora Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Hardware (Voz ingl.).1. m. Inform. Conjunto de los componentes que integran la parte material de una computadora. Fundamentos de computadores Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 Software (Voz ingl.).1. m. Conjunto de programas, instrucciones y reglas informáticas para ejecutar ciertas tareas en una computadora. Introducción a la programación 1.8 Qué es un Sistema Informático Tema 1 SOFTWARE Introducción a lenguajes de programación Definición de Algoritmos ALGORITMOS ORDENADOR SISTEMA INFORMATICO Estructura de un programa SOFTWARE DATOS INFORMACIÓN HARDWARE PROGRAMAS Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.9 Qué es un Sistema Informático Tema 1 Introducción a lenguajes de programación Es el conjunto que resulta de la integración de cuatro elementos: Hardware, Software, Datos y Personas. Definición de Algoritmos Estructura de un programa Estos componentes se relacionan haciendo posible el procesamiento automático de los datos, a través de ordenadores, para producir información útil. Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 Qué es un Sistema Informático Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 Qué es un Sistema Informático Tema 1 Dato e información son dos términos que suelen confundirse Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Datos.- Representación de algún hecho, concepto o entidad real (los datos pueden tomar diferentes formas; por ejemplo, palabras escritas o habladas, números y dibujos). Información.- Implica datos procesados y organizados. Sistema de procesamiento de información.- Es un sistema que transforma datos brutos en información organizada, significativa y útil. Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 Qué es un Sistema Informático Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Sistema de Banca Electrónica Reservas de pasajes Sistemas Hospitalarios Sistemas Bibliográficos Lectura remota de datos Procesos industriales en tiempo real Control de inventarios en tiempo real Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 ¿Qué entiende la computadora? Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa La computadora manipula únicamente información digital: Datos e instrucciones se codifican como dígitos binarios (0’s y 1’s) ¿Por qué no se usa una representación de otro tipo? Problema tecnológico (es más fácil representar ceros y unos) ¿A qué nos conduce la solución adoptada para evitar el problema tecnológico? La máquina sólo puede trabajar con cadenas de ceros y unos Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.14 Lenguajes Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Lenguaje es el empleo de notaciones, señales y vocales (voz, palabras) para expresar ideas, comunicarse, y establecer relaciones entre los seres humanos. Un lenguaje no sólo consta de “palabras”, sino también de su pronunciación y los métodos para combinar las palabras en frases y oraciones; los lenguajes se forman mediante combinaciones de palabras definidas en un diccionario terminológico previamente establecido. Las combinaciones posibles deben respetar un conjunto de reglas sintácticas establecidas, a ello se le conoce con el nombre de Sintaxis. Además, las palabras deben tener determinado sentido, deben ser comprendidas por un grupo humano en un contexto dado, a ello se le denomina Semántica. Aunque existen muchas clasificaciones, en general se puede distinguir entre dos clases de lenguajes: los lenguajes naturales (ingles, alemán, español, etc.) y los lenguajes artificiales o formales (matemático, lógico, computacional, etc.). Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 Lenguaje máquina Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Pasos a = (b + c)/(d + e) y x sumar b y c, y guardar el resultado en una dirección de memoria temporal X sumar d y e, y guardar el resultado en una dirección de memoria temporal Y dividir el contenido de X por el de Y y guardar el resultado en la dirección de memoria de a Ejemplo de código máquina codigoOp direccOp1 direccOp2 direccRes Código de la suma Direcc. Temporal X 0000 00001000 00001100 00001110 0000 00011000 00011100 00011110 0101 00011110 00001110 00000100 Direcc. Temporal Y Código de la división Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.16 Lenguaje máquina (cont.) Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Inconvenientes Grandes posibilidades de error Portabilidad: máquina-dependiente No se puede llevar el programa a otra máquina porque, entre otras cosas, el repertorio de instrucciones es distinto Tedioso Nula capacidad de abstracción Es muy complicado formular una solución a problemas del mundo real con ese lenguaje tan específico Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.17 Lenguaje ensamblador Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Lenguaje simbólico con una mínima capacidad de abstracción Nombres nemotécnicos para los códigos de operación Nombres simbólicos para las direcciones de memoria Ejemplo de instrucción de código ensamblador codigoSimbOp direccSimbOp1, direccSimbOp2, direccSimbRes Códigos simbólicos de las operaciones SUM = La suma DIV = La división a = (b + c)/(d + e) SUM B, C, X SUM D, E, Y DIV X, Y, A Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.18 Lenguaje ensamblador (cont.) Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Cuestiones ¿Cómo entiende la máquina el lenguaje ensamblador? Si las direcciones de memoria son simbólicas ¿en qué direcciones de memoria se colocan los datos? Estructura de un programa Código fuente (lenguaje ensamblador) Programa ensamblador Código objeto (lenguaje máquina) Programa ensamblador Traducción a código binario de códigos simbólicos de operación Traducción de las direcciones simbólicas a direcciones reales de memoria Inconveniente: sigue siendo dependiente de la máquina Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.19 Lenguajes de alto nivel Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Lenguaje que permite representar el mecanismo de resolución de los problemas usando instrucciones independientemente de la computadora Cercanía conceptual al programador Pascal, C, Java, etc. son lenguajes de alto nivel Capacidad de abstracción Abstracción procedimental (poder representar operaciones más complejas como calcular las raíces de un polinomio) Abstracción de datos (poder representar información más compleja como el estado de una cuenta bancaria) ¿Cómo conseguir que la computadora “entienda” los programas escritos en lenguajes de alto nivel? Intérprete Analiza el programa fuente y lo ejecuta directamente en la máquina Compilador Analiza el programa fuente y lo traduce a lenguaje máquina Ej. Turbo C++ es un compilador de C++ Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.20 Abstracción Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Abstracción de datos Tipos de datos Elementales (HW) • Enteros • Reales • Booleanos • Caracteres Nivel: de la máquina Primitivos Tipo básico Proporcionados por el Hw Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.21 Abstracción Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Abstracción de datos Tipos de datos Estructurados (LP) • Arreglos • Registros Nivel: Del Lenguaje de Programación Proporcionado por los LP Con base en tipos elementales Se utilizan constructores de tipo que pertenece al LP Abstractos (U) • Stacks • Colas, etc Nivel: Del usuario Definidos por el usuario para enriquecer el LP Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.22 Abstracción Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Abstracción de control Lógica del código Sentencias: Constructores de código que facilitan la programación estructurada • Asignación • Decisión • Iteración Unidades de Programas Permiten programación modular Generalizan la noción de operador Permiten encapsular parte de un algoritmo Tienen una única definición Tienen múltiples activaciones Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.23 Clasificación de los Lenguajes de Programación Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.24 Evolución de los Lenguajes de Programación Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.25 Lenguajes interpretados vs Lenguajes Compilados Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Lenguaje Compilado Un lenguaje compilado es término un tanto impreciso para referirse a un lenguaje de programación que típicamente se implementa mediante un compilador. Esto implica que una vez escrito el programa, éste se traduce a partir de su código fuente por medio de un compilador en un archivo ejecutable para una determinada plataforma (por ejemplo Solaris para Sparc, Windows NT para Intel, etc.). (Lenguaje Compilado - Wikipedia) Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.26 Lenguajes interpretados vs Lenguajes Compilados Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Lenguaje Interpretado Un lenguaje interpretado es aquel en el que las instrucciones se traducen o interpretan una a una en tiempo de ejecución a un lenguaje intermedio o lenguaje máquina o a través de una máquina virtual, siendo típicamente unas 10 veces más lentos que los programas compilados.(Adaptación de la definición en Wikipedia) Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.27 Lenguajes de Programación Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.28 Ranking de los lenguajes de programación más utilizados en 2011 Tema 1 Introducción a lenguajes de programación Según los datos del Índice Comunitario de Programación TIOBE, ofrecemos el ranking con los lenguajes de programación más usados por los desarrolladores. Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.29 ¿Qué es algoritmo? Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Algoritmo 1. m. Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema. (Extraído del Diccionario de la RAE, 22ª edición) Un algoritmo es un conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea y resolver un problema. De un modo más formal, un algoritmo es una secuencia finita de operaciones realizables, cuya ejecución da una solución de un problema en un tiempo finito, usando el procedimiento más adecuado para la resolución de un problema. Los algoritmos son independientes del lenguaje de programación en que se expresan como así también de la computadora que se ejecuten. Un algoritmo es, por tanto, una sistemática que transforma un estado inicial en un estado final La entrada del Algoritmo: Precondiciones Descripción del estado inicial (datos y situación de partida) La salida del Algoritmo: Postcondiciones Descripción del estado final (datos y situación deseada al acabar) Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.30 Características de los Algoritmos Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa El científico de computación Donald Knuth ofreció una lista de cinco propiedades, que son ampliamente aceptadas como requisitos para un algoritmo: Carácter finito. "Un algoritmo siempre debe terminar después de un número finito de pasos". Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso". Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes de que el algoritmo comience, o dinámicamente mientras el algoritmo corre. Estas entradas son tomadas de conjuntos específicos de objetos". Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación específica con las entradas". Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de que todas las operaciones a realizar en un algoritmo deben ser suficientemente básicas como para que en principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre usando lápiz y papel". Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.31 Tipos de Algoritmos Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Existen dos tipos y son llamados así por su naturaleza: Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso. Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.32 Medios de expresión de un algoritmo Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Las técnicas para la formulación de algoritmos más populares son: Diagramas de flujo Pseudocódigo Diagrama estructurado (N-S) Diagramas de Flujo Ejemplo: Cruzar la calle sin peligro de ser atropellado por un automóvil. Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.33 Medios de expresión de un algoritmo Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Pseudocódigo Un pseudocódigo (falso lenguaje), es una serie de normas léxicas y gramaticales parecidas a la mayoría de los lenguajes de programación, pero sin llegar a la rigidez de sintaxis de estos ni a la fluidez del lenguaje coloquial. Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.34 Medios de expresión de un algoritmo Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Diagrama estructurado (Nassi - Schneiderman) El diagrama estructurado N-S es una técnica hibrida (una mezcla) entre Diagramas de Flujo y Pseudocódigo. Esta técnica, también conocida como Diagrama de Chapín, utiliza una serie de cajas, similar a los diagramas de flujos, pero no requiere la utilización de flechas, debido a que su flujo siempre es descendente. Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.35 Resolución de Problemas con Computadoras Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Utilizamos los lenguajes de programación para expresar los algoritmos de forma que el ordenador los entienda De igual forma, que utilizamos la lengua castellana para expresar nuestras ideas a otras personas Recuerda: Programar BIEN no es sólo conocer la sintaxis de uno o varios lenguajes de programación Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.36 Etapas en la solución de problemas Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Las fases en la construcción de un programa para resolver un problema mediante la computadora son, en orden, las siguientes: Análisis del problema Diseño del algoritmo Programación Ejecución y pruebas El paso cero sería Entender el problema, parece banal, pero no lo es cuando se piensa en la gran cantidad de proyectos de computación que se desarrollaron sin haber comprendido bien para que se hacían, o cual era el problema que supuestamente iban a resolver. Comprender la importancia de entender con claridad el problema antes de abocarnos a encontrar una solución. Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.37 Etapas en la solución de problemas Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Análisis del problema Diseño del algoritmo Programación Ejecución y pruebas. Estructura de un programa El análisis consiste en una clara definicion del problema, donde se contemple exactamente lo que debe hacer el programa y el resultado o solucion deseada. Dado que se busca una solución por computadora, se precisan especificaciones detalladas de entradas y salidas. Para resolver un problema con un ordenador hay que disponer de los datos de entrada, estudiar el tratamiento que se ha de realizar a dichos datos, la información que se desea obtener como resultado y de que manera debe presentarse. Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.38 Etapas en la solución de problemas Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Análisis del problema Diseño del algoritmo Programación Ejecución y pruebas. Estructura de un programa Es decir, después de analizar el problema, se han de conocer claramente tres cosas. Datos de Entrada de que se dispone Proceso o Tratamiento que ha de realizarse con estos datos. Información de salida deseada. Una de las técnicas mas empleadas recibe el nombre de H.I.P.O. (Hierarchy the plus input process output) que consiste en esquematizar cada programa, o una parte del mismo en los tres bloques (los descritos anteriormente).. E N T R A D A P R O C E S O Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 S A L ID A 1.39 Etapas en la solución de problemas Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Análisis del problema Diseño del algoritmo Programación Ejecución y pruebas. Estructura de un programa Ejemplo Sin entrar en el campo de la informática, para hacer la nómina de los mejores alumnos de una carrera, se necesita saber: ENTRADA: Los datos de cada uno de los alumnos y si estos datos están en papel o en un fichero donde está toda la información de los alumnos. PROCESO: La fórmula matemática para calcular el promedio de notas es: (nota 1 + nota 2 + nota 3 + .....+ nota n) / cantidad de notas SALIDA: El modelo del informe donde se desean imprimir el promedio de los alumnos. E N T R A D A P R O C E S O Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 S A L ID A 1.40 Etapas en la solución de problemas Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Análisis del problema Diseño del algoritmo Programación Ejecución y pruebas. Teniendo en cuenta que un algoritmo es un método para resolver problemas, una vez analizado el mismo se precisa diseñar un algoritmo que indique claramente los pasos a seguir para resolverlo. Para realizar un determinado proceso, se le debe suministrar al ordenador una fórmula para la resolución de un problema (algoritmo), cuyo diseño debe ser independiente de la computadora que resuelve el problema. Dada la importancia del algoritmo en la ciencia de la computación, un aspecto muy importante será el diseño del algoritmo. En esta etapa se realizará una representación de la secuencia. Estas representaciones son las herramientas de: diagramas de flujo, pseudocódigos y/o tablas de decisión. Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.41 Etapas en la solución de problemas Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Análisis del problema Diseño del algoritmo Programación Ejecución y pruebas. Una vez que el diagrama de flujo o el algoritmo de resolución del problema está definido se pasa a la fase de codificación del programa en cualquier lenguaje (C, basic, cobol, pascal, etc.) cuyo resultado será el programa fuente, el cual sigue las reglas de sintaxis que el lenguaje escogido exija. Después de codificado el programa, se introduce en el ordenador mediante unos programas especiales llamados editores. Una vez dentro del ordenador, el programa deber ser traducido al único lenguaje que éste entiende: Lenguaje de máquina. Dicha operación se realiza mediante el correspondiente programa traductor o compilador del lenguaje en el que está escrito el programa. PRO G RAM ACIO N AN ALISIS ALG O R ITM O Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 CO DIFICACIO N ED IC IO N TRAD U C C IO N 1.42 Etapas en la solución de problemas Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Análisis del problema Diseño del algoritmo Programación Ejecución y pruebas. El hecho de haber diseñado un buen algoritmo y luego haberlo codificado en algún lenguaje de programación no significa que el programa resuelva correctamente el problema en cuestión. Por eso, antes de dar por finalizada cualquier labor de programación, es fundamental preparar un conjunto de datos lo más representativo posible del problema, que permitan probar el programa cuando se ejecute y así verificar los resultados. Cuanto más exhaustivas sean las pruebas de un programa, mayor seguridad se tendrá de que éste funcione correctamente y, por lo tanto, menor posibilidad de errores. El programa se considera terminado cuando se han realizado pruebas y ensayo de su fiabilidad con el conjunto de datos seleccionados y otros nuevos, hasta incluso con datos reales, y no Lenguaje de Programación se encuentren errores de ningún tipo. John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.43 ¿Qué significa todo esto? Casa Software “Quiero 3 habitaciones, 2 baños, garaje...” Análisis Planos, diseño circuito eléctrico y de agua... Diseño Se construye la casa Se comprueba la solidez de la estructura, el funcionamiento de las instalaciones, el acabado... Algunas reparaciones, se cierra la terraza, se instala aire acondicionado... ¿Qué tiene que hacer exactamente nuestro programa? ¿Cómo vamos a organizar el programa? ¿Qué partes tendrá y cómo funcionará? Implementación Se construye el software Pruebas Ponemos a prueba nuestro programa, incluso en situaciones límite Mantenimiento Pequeñas modificaciones o correcciones (parches), actualizaciones, etc... 1.44 Estructura general de un programa Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Un programa puede considerarse como una secuencia lógica de acciones (instrucciones) que manipulan un conjunto de objetos (datos) para obtener unos resultados que serán la solución al problema que resuelve dicho programa. Todo programa, en general contiene dos bloques bien diferenciados para la descripción de los dos aspectos anteriormente citados: Bloque de declaraciones. En él se especifican todos los objetos que utiliza el programa (constantes, variables, tablas, registros, archivos, etc.) indicando las características de estos. Este bloque se encuentra localizado siempre por delante del comienzo de las acciones. Bloque de instrucciones. Constituido por el conjunto de operaciones que se han de realizar para la obtención de los resultados deseados. Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.45 Partes principales de un programa Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Las partes principales de un programa están relacionadas con sus dos bloques ya mencionados. Dentro del bloque de instrucciones podemos diferenciar tres partes fundamentales, como se muestra en la siguiente figura: Estructura de un programa Entrada de Datos: La constituyen todas las instrucciones que toman los datos de entrada desde un dispositivo externo y los almacena en la memoria principal para que puedan ser procesados. Proceso o algoritmo: Está formado por las instrucciones que modifican los objetos a partir de su estado inicial (datos de entrada) hasta el estado final (resultados) dejando los objetos que lo contiene disponibles en la memoria principal. Salida de resultados: Conjunto de instrucciones que toman los datos finales (resultado) de la memoria principal y los envían a los dispositivos externos. Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.46 Proceso de ejecución de un programa Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Escribir el programa fuente y almacenarlo en un dispositivo de almacenamiento. Introducir el programa fuente en la memoria del computador Compilación del programa. Verificar y depurar errores de compilación. Obtención del programa objeto. El linkeador enlaza y obtiene el programa ejecutable. Ejecución del programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.47 La tortuga y la liebre: Desarrollo de software Tema 1 Introducción a lenguajes de programación Antecedentes y Problemas y retos Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.48 La tortuga y la liebre: Desarrollo de software Tema 1 Introducción a lenguajes de programación Modelos de Desarrollo del Ciclo de Vida y Procesos Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.49 La tortuga y la liebre: Desarrollo de software Tema 1 Introducción a lenguajes de programación Análisis de Requerimientos y Especificaciones Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.50 La tortuga y la liebre: Desarrollo de software Tema 1 Introducción a lenguajes de programación Diseño de Software y Metodologías Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 La tortuga y la liebre: Desarrollo de software Tema 1 Introducción a lenguajes de programación Sistemas de Alta Integridad Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 La tortuga y la liebre: Desarrollo de software Tema 1 Introducción a lenguajes de programación Métodos Formales Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 La tortuga y la liebre: Desarrollo de software Tema 1 Introducción a lenguajes de programación Administración de Proyectos de Software Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 La tortuga y la liebre: Desarrollo de software Tema 1 Introducción a lenguajes de programación Administración de la Calidad del Software Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 La tortuga y la liebre: Desarrollo de software Tema 1 Introducción a lenguajes de programación Ambientes de Desarrollo de Software Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 La tortuga y la liebre: Desarrollo de software Tema 1 Introducción a lenguajes de programación Mantenimiento del Software Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 La tortuga y la liebre: Desarrollo de software Tema 1 Introducción a lenguajes de programación Cumplimiento Exitoso del Proyecto Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 La tortuga y la liebre: Desarrollo de software Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Depurar Revisar: Hacer una nueva versión Revisar Depurar Depurar: Encontrar y remover errores Revisar Codificar Objetivo final Prueba Pensar, Razonar, reflexionar Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 Codificar Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.60 Discusión, preguntas... Tema 1 Introducción a lenguajes de programación Definición de Algoritmos Estructura de un programa Lenguaje de Programación John Ledgard Trujillo Trejo 27 de septiembre de 2017 1.61 Bibliografía J OYANES AGUILAR, Luis. 2003. FUNDAMENTOS DE PROGRAMACIÓN Algoritmos, Estructura de Datos y Objetos. McGraw-Hill, Madrid. DEITEL H., Deitel P. 2008. C++ Como programar. 6a Ed. Pearson. Prentice-Hall. México. 1112 p. 1.62 ¿ Preguntas ? 1.63