Elementos de Programación Estructurada 1. Introducción a la Materia
Ing. Gabriel Hernández (Apuntes Digítales)
Objetivo General Al finalizar el curso el alumno será capaz de: •Crear soluciones modulares, a problemas de procesamiento de datos mediante los elementos de la programación estructurada, empleando funciones, apuntadores y arreglos. •Analizar, diseñar y especificar algoritmos para integrar sistemas orientados a módulos, mediante diagramas estructurados y pseudocódigos.
Ing. Gabriel Hernández (Apuntes Digítales)
La materia Esta materia fue diseñada para que al alumno comprenda los conceptos fundamentales que incluye la programación estructurada los cuales son los elementos fundamentales de cualquier lenguaje de programación de alto nivel y así comenzar a desarrollar en entornos gráficos programas interactivos.
Ing. Gabriel Hernández (Apuntes Digítales)
Contexto La visión clásica de la programación estructurada se refiere al control de ejecución. El control de su ejecución es una de las cuestiones más importantes que hay que tener en cuenta al construir un programa en un lenguaje de alto nivel. La regla general es que las instrucciones se ejecuten sucesivamente una tras otra, pero diversas partes del programa se ejecutan o no dependiendo de que se cumpla alguna condición. Además, hay instrucciones (los bucles) que deben ejecutarse varias veces, ya sea en número fijo o hasta que se cumpla una condición determinada. Ing. Gabriel Hernández (Apuntes Digítales)
Contexto Sin embargo, algunos lenguajes de programación más antiguos (como Fortran) se apoyaban en una sola instrucción para modificar la secuencia de ejecución de las instrucciones mediante una transferencia incondicional de su control (instrucción goto, que significa "ir a"). Pero estas transferencias arbitrarias del control de ejecución hacen los programas muy poco legibles y difíciles de comprender. A finales de los años sesenta, surgió una nueva forma de programar que reduce a la mínima expresión el uso de la instrucción goto y la sustituye por otras más comprensibles. Ing. Gabriel Hernández (Apuntes Digítales)
Contexto Esta forma de programar se basa en un famoso teorema, desarrollado por Edsger Dijkstra, que demuestra que todo programa puede escribirse utilizando únicamente las tres estructuras básicas de control siguientes: • Secuencia: el bloque secuencial de instrucciones, instrucciones ejecutadas sucesivamente, una detrás de otra. • Selección: la instrucción condicional con doble alternativa, de la forma "if condición then instrucción-1 else instrucción-2". • Iteración: el bucle condicional "while condición do instrucción", que ejecuta la instrucción repetidamente mientras la condición se cumpla. Ing. Gabriel Hernández (Apuntes Digítales)
Contexto Los programas que utilizan sólo estas tres instrucciones de control básicas o sus variantes (como los bucles for, repeat o la instrucción condicional switch-case), pero no la instrucción goto, se llaman estructurados.
Ing. Gabriel Hernández (Apuntes Digítales)
La visión moderna de la programación estructurada: La segmentación La realización de un programa sin seguir una técnica de programación produce frecuentemente un conjunto enorme de sentencias cuya ejecución es compleja de seguir, y de entender, pudiendo hacer casi imposible la depuración de errores y la introducción de mejoras. Se puede incluso llegar al caso de tener que abandonar el código preexistente porque resulte más fácil empezar de nuevo.
Ing. Gabriel Hernández (Apuntes Digítales)
La visión moderna de la programación estructurada: La segmentación Cuando en la actualidad se habla de programación estructurada, nos solemos referir a la división de un programa en partes más manejables (usualmente denominadas segmentos o módulos). Una regla práctica para lograr este propósito es establecer que cada segmento del programa no exceda, en longitud, de una página de codificación, o sea, alrededor de 50 líneas..
Ing. Gabriel Hernández (Apuntes Digítales)
Conceptos Fundamentales De la programación modular La programación modular es un método de resolución de problemas que consiste en resolver de forma independiente los subproblemas que se obtienen de una descomposición del problema general. La programación modular está basada en la técnica de diseño descendente, que como ya vimos consiste en dividir el problema original en diversos subproblemas que se pueden resolver por separado, para después recomponer los resultados y obtener la solución al problema.
Ing. Gabriel Hernández (Apuntes Digítales)
Conceptos Fundamentales De la programación modular Ejemplo:
Diseño descendente (top-down) Ing. Gabriel Hernández (Apuntes Digítales)
Conceptos Fundamentales De la programación modular En el ejemplo anterior un subproblema se denomina módulo y es parte del problema que se puede dividir de manera independiente.
Que un módulo sea independiente nos permite, por un lado, concentrarnos en su resolución olvidándonos del resto del problema, y por otro lado, permite reutilizar la solución obtenida para otra parte del programa u otro programa distinto.
Ing. Gabriel Hernández (Apuntes Digítales)
Conceptos Fundamentales De la programación modular Cada módulo se codifica dentro del programa como un subprograma, es decir, una sección de código independiente que realiza una tarea específica dentro del programa. Un subprograma hace el papel de un programa. Puede tener una sección de declaraciones (variables, constantes, etc…) y posee también unos datos de entrada y de salida. Esto permite, como ya veremos, que el subprograma sea totalmente independiente del programa principal.
Ing. Gabriel Hernández (Apuntes Digítales)
Conceptos Fundamentales De la programación modular
Ing. Gabriel Hernández (Apuntes Digítales)
El paradigma de la programación estructurada Conceptos básicos ¿Qué es un lenguaje de programación? Los lenguajes de programación son un conjunto de reglas, herramientas y condiciones que admiten crear programas o aplicaciones dentro de una computadora.
Estos programas son los que permitirán ordenar distintas acciones a la computadora en un “idioma” comprensible por ella.
Ing. Gabriel Hernández (Apuntes Digítales)
El paradigma de la programación estructurada Conceptos básicos ¿Qué es un lenguaje alto nivel? Los lenguajes de alto nivel son aquellos que poseen sentencias formadas por palabras similares a las de los lenguajes humanos. Por lo tanto, resulta mucho más sencillo escribir un programa en un lenguaje de alto nivel para luego traducirlo en código comprensible para una computadora.
Ing. Gabriel Hernández (Apuntes Digítales)
El paradigma de la programación estructurada Conceptos básicos ¿Qué es un paradigma de programación? Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro sino que cada uno tiene ventajas y desventajas. También hay situaciones donde un paradigma resulta más apropiado que otro.
Los paradigmas también se asocian a un determinado estilo de programación. Ing. Gabriel Hernández (Apuntes Digítales)
El paradigma de la programación estructurada Ejemplos de paradigmas Paradigma de programación modular: Lenguaje C
Paradigma de programación orientada a objetos: Lenguaje C++ / Java
Ing. Gabriel Hernández (Apuntes Digítales)
El paradigma de la programación estructurada Programación secuencial y estructurada
Este tipo de programación se basa en la creación de programas a partir de un conjunto de sentencias escritas de forma secuencial y cuya ejecución sigue dicha secuencia. Se utiliza la sentencia como goto o similar para realizar una bifurcación en la ejecución del programa hacia una etiqueta determinada. Ing. Gabriel Hernández (Apuntes Digítales)
El paradigma de la programación estructurada Programación secuencial y estructurada
La programación estructurada es una forma de escribir programación de computadora de forma clara, para ello se utilizan únicamente tres estructuras: secuencial, selectiva e iterativa; siendo innecesario y no permitiéndose el uso de la instrucción o instrucciones de transferencia incondicional (GOTO). Ing. Gabriel Hernández (Apuntes Digítales)
El paradigma de la programación estructurada Ventajas de la programación estructurada Con la programación estructurada, elaborar programas de computadora sigue siendo una labor que demanda esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este estilo se pueden obtener las siguientes ventajas: 1. Los programas son más fáciles de entender, ya que pueden ser leídos de forma secuencial, sin necesidad de hacer seguimiento a saltos de línea (GOTO) dentro de bloques de código para entender la lógica. Ing. Gabriel Hernández (Apuntes Digítales)
El paradigma de la programación estructurada Ventajas de la programación estructurada 2. La estructura del programa es más clara puesto que las instrucciones están más ligadas o relacionadas entre sí. 3. Reducción del esfuerzo en las pruebas. El seguimiento de las fallas ("debugging") se facilita debido a la lógica más visible, por lo que los errores se pueden detectar y corregir más fácilmente. 4. Reducción de los costos de mantenimiento. 5. Programas más sencillos y más rápidos. 6. Los bloques de código son auto explicativos, lo que apoya a la Ing. Gabriel Hernández documentación. (Apuntes Digítales)
El paradigma de la programación estructurada Desventajas de la programación estructurada El principal inconveniente de este método de programación, es que se obtiene un único bloque de programa, que cuando se hace demasiado grande puede resultar problemático su manejo, esto se resuelve empleando la programación modular, definiendo módulos interdependientes programados y compilados por separado. Un método un poco más sofisticado es la programación por capas, en la que los módulos tienen una estructura jerárquica muy definida y se denominan capas. Ing. Gabriel Hernández (Apuntes Digítales)
2.0 Revisión formal de los elementos léxicos/sintácticos básicos de un lenguaje de programación estructurado
Ing. Gabriel Hernández (Apuntes Digítales)
Tipos, Operadores & Expresiones En esta parte del curso presentaremos lo que es un elemento léxico en un programación el cual nos permite componer el texto de un programa como una secuencia de símbolos, el cual está compuesto por identificadores, constantes, operadores, instrucciones, comentarios para expresar así expresarlas en las computadoras. Posteriormente la sintaxis de un lenguaje de programación describe las combinaciones posibles de los símbolos que forman un programa sintácticamente correcto. Ing. Gabriel Hernández (Apuntes Digítales)
Tipos, Operadores & Expresiones Elementos léxicos y sintácticos Léxico. Conjunto de símbolos que se pueden usar en un lenguaje. Estos símbolos o elementos básicos del lenguaje, podrán ser los siguientes: •Identificadores. Nombres simbólicos que se le dan a ciertos elementos de programación (nombres de variables, tipos, módulos, etc.). •Constantes. Datos que no cambian su valor a lo largo del programa.
Ing. Gabriel Hernández (Apuntes Digítales)
Tipos, Operadores & Expresiones Elementos léxicos y sintácticos •Operadores. Símbolos que representan operaciones entre variables y constantes. •Instrucciones. Símbolos especiales que representan estructuras de procesamiento y de definición de elementos de programación. •Comentarios. Texto que se usa para documentar los programas.
Ing. Gabriel Hernández (Apuntes Digítales)
Tipos, Operadores & Expresiones Los símbolos de un lenguaje pertenecen a un conjunto que se denomina vocabulario o léxico. Los símbolos también se denominan elementos léxicos o tokens. Léxico significa diccionario; y aplicado en el ambiente de lenguajes de programación se utiliza para denotar los símbolos del lenguaje. Estos símbolos, a su vez, están formados por secuencias de caracteres; y existen reglas que determinan cómo puede generarse o producirse un símbolo a partir de caracteres.
Ing. Gabriel Hernández (Apuntes Digítales)
Tipos, Operadores & Expresiones Sintáctico. Consta de unas definiciones denominadas reglas sintácticas o producciones que especifican la secuencia de símbolos que forman una frase del lenguaje. Estas reglas dicen si una frase esta bien escrita o no. Las reglas sintácticas pueden tener dos tipos de elementos: •Elementos terminales. •Elementos no terminales.
Ing. Gabriel Hernández (Apuntes Digítales)