Tema 03: Programación estructurada M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1
Contenido Qué es programación? Qué es el código fuente? Qué es un programa computacional? Lenguaje de programación Primeras programaciones Paradigma de programación Programación estructurada Paradigma de la programación estructurada Teorema de la programación estructurada Lenguajes de programación estructurada Pseudocódigo y la Programación Estructurada Ejemplo 01 2
Qué es programación? La programación es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. 3
Qué es el código fuente? El código fuente de un programa computacional (o software) es un conjunto de líneas de texto que son las instrucciones que debe seguir la computadora, escritas en un lenguaje de programación para ejecutar dicho programa. Por tanto, en el código fuente de un programa está descrito por completo su funcionamiento. 4
El proceso de escribir código requiere frecuentemente conocimientos en varias áreas distintas, además del dominio del lenguaje a utilizar, algoritmos especializados y lógica formal. 5
El código fuente es escrito en un lenguaje de programación. El propósito de la programación es crear programas que exhiban un comportamiento deseado. 6
Qué es un programa computacional? Un programa computacional es un conjunto de instrucciones que una vez ejecutadas realizarán una o varias tareas en una computadora. Al conjunto general de programas, se le denomina software, que se refiere al equipamiento lógico o soporte lógico de una computadora digital. 7
Lenguaje de programación Un lenguaje de programación es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por un equipo computacional. Un lenguaje de programación se usa para crear programas que controlen el comportamiento físico y lógico de una máquina, esto permite crear soluciones a problemas reales e interacciones humano-maquina. https://en.wikipedia.org/wiki/list_of_programming_languages 8 http://spectrum.ieee.org/static/interactive-the-top-programming-languages-2016
Un lenguaje de programación está formado de un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Sintáctica (reglas que gobiernan la combinatoria de los símbolos y la formación de unidades superiores a estos) Semántica (aspectos del significado, sentido o interpretación del significado de un determinado elemento, símbolo, palabra, expresión o representación formal) Sintaxis Lenguaje 9 Semántica
Primeras programaciones En los inicios de la programación de computadoras (segunda mitad de la década de 1950), el nacimiento de los primeros lenguajes de alto nivel como Fortran y Cobol apoyaban en la codificación de soluciones a problemas computacionales, pero la gran mayoría de las veces el diseño y la implementación de la solución quedaba determinados según criterios personales y de cada programador. 10
Paradigma de programación Un paradigma de programación es una propuesta tecnológica que es adoptada por una comunidad de programadores cuyo núcleo central es incuestionable en cuanto a que unívocamente trata de resolver uno o varios problemas claramente delimitados. Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. Es decir un paradigma de programación establece como programar la solución a un problema de cierta manera en un código fuente bajo un lenguaje de programación. 11
La programación puede seguir muchos enfoques, o paradigmas, es decir, diversas maneras de formular la resolución de un problema dado. Algunos de los principales paradigmas de la programación son: Programación imperativa Programación funcional Programación declarativa Programación estructurada (A style of imperative programming with more logical program structure and structured program theorem of the 1966) Programación modular (Derived from structured programming, based on the concept of modular programming or the procedure call.) Programación orientada a objetos Programación orientada a aspectos 12
Programación estructurada Surgió en la década de 1960, particularmente del trabajo de Böhm y Jacopini,1 y una famosa carta, «La sentencia goto, considerada perjudicial», de Edsger Dijkstra en 1968 y fue reforzado teóricamente por el teorema del programa estructurado. Es una forma de escribir programas de computadora (paradigma de programación). Los principios que rigen este paradigma de programación son el uso de únicamente tres estructuras de control: secuencia, selección e iteración 13
Paradigma de la programación estructurada El paradigma del la programación estructurada es un resultado en la teoría de lenguajes de programación. Establece a grandes rasgos que toda función computable puede ser implementada en un lenguaje de programación que combine subrutinas en únicamente tres formas. Esas tres formas (también llamadas estructuras de control) son: 1. Ejecutar una subrutina y luego otra subrutina (secuencia) 2. Ejecutar una de dos subrutinas, dependiendo del valor de una variable booleana (selección) 3. Ejecutar una subrutina mientras una variable booleana sea 'verdadera' (iteración, ciclo o bucle) Los científicos de la computación usualmente acreditan el teorema a un artículo de 1966 escrito por Corrado Böhm y Giuseppe Jacopini. Sin embargo, David Harel rastreó sus orígenes hasta la descripción de 1946 de la arquitectura de von Neumann y el teorema de la forma normal de Kleene. 14
Objetivo de la Programación Estructurada La programación estructurada es un paradigma de programación orientado a mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora, utilizando únicamente subrutinas y tres estructuras de control: secuencia, selección (if y switch) e iteración (bucles for y while), considerando innecesario y contraproducente el uso de la instrucción de transferencia incondicional (GOTO), que podría conducir a "código espagueti", que es mucho más difícil de seguir y de mantener, y era la causa de muchos errores de programación. 15
Código Espagueti El código espagueti es un término peyorativo para los programas de computación que tienen una estructura de control de flujo compleja e incomprensible. Su nombre deriva del hecho que este tipo de código parece asemejarse a un plato de espaguetis, es decir, un montón de hilos intrincados y anudados. Tradicionalmente suele asociarse este estilo de programación con lenguajes básicos y antiguos, donde el flujo se controlaba mediante sentencias de control muy primitivas como goto y utilizando números de línea, así como programas que contienen muchos puntos de ruptura o salidas. 16
17
Teorema de la programación estructurada En 1966 los matemáticos Corrado Böhm y Giuseppe Jacopini demostraron que: "Un programa propio puede ser escrito utilizando solamente 3 tipos de estructuras de control (Secuenciales, selectivas e iterativas)". A su vez un programa propio: Posee un solo punto de entrada y uno de salida o fin. Existen caminos desde la entrada hasta la salida que se pueden seguir y que pasan por todas partes del programa. Todas las instrucciones son ejecutables (sin código muerto) y no existen lazos o bucles infinitos (sin fin). 18
Lenguajes de programación estructurada Un lenguaje de programación estructurada es aquel que establece una sintaxis y semántica propia para expresar computaciones, y se basa en el teorema de la "programación estructurada", ofreciendo instrucciones para expresar las tres estructuras de control del teorema. SECUENCIA Indica que las instrucciones de un programa se ejecutan una después de la otra, en el mismo orden en el cual aparecen en el programa. Se representa gráficamente como una caja después de otra, ambas con una sola entrada y una única salida SELECCIÓN También conocida como la estructura SI-CIERTO-FALSO, plantea la selección entre dos alternativas con base en el resultado de la evaluación de una condición o predicado; equivale a la instrucción IF de todos los lenguajes de programación. ITERACIÓN También llamada la estructura HACER-MIENTRAS-QUE, corresponde a la ejecución repetida de una instrucción mientras que se cumple una determinada condición. 19
Pascal Pascal es un lenguaje creado por el profesor suizo Niklaus Wirth entre los años 1968 y 1969 y publicado en 1970. Su objetivo era crear un lenguaje que facilitara el aprendizaje de programación a sus alumnos, utilizando la programación estructurada y estructuración de datos. Sin embargo con el tiempo su utilización excedió el ámbito académico para convertirse en una herramienta para la creación de aplicaciones de todo tipo. Pascal se caracteriza por ser un lenguaje de programación estructurado fuertemente tipado. Esto implica que: El código está dividido en porciones fácilmente legibles llamadas funciones o procedimientos. De esta forma Pascal facilita la utilización de la programación estructurada en oposición al antiguo estilo de programación monolítica. El tipo de dato de todas las variables debe ser declarado previamente para que su uso quede habilitado. 20