Programación Estructurada

Tabla de Contenidos
Programación Estructurada La programación estructurada es una forma de programación que utiliza únicamente tres estructuras: * Secuencia * Instrucción condicional. * Iteración (bucle de instrucciones) con condición al principio. Con este estilo se obtienen varias ventajas: * Los programas son más fáciles de entender, ya que pueden ser leído de forma secuencial. * La estructura del programa es clara puesto que las instrucciones están más ligadas o relacionadas entre sí. * Reducción del esfuerzo en las pruebas. El seguimiento de los fallos o errores del programa se facilita debido a la estructura más visible, por lo que los errores se pueden detectar y corregir más fácilmente. * Programas más sencillos y más rápidos. 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 alcanzar una gran complejidad. Esto se resuelve empleando la programación procedural ó programación modular, definiendo módulos interdependientes programados y compilados por separado. Aquí distinguimos dos conceptos que en la bibliografía se pueden emplear indistintamente: programación estructurada (basada en tres estructuras: secuencia, iteración y condición) y programación procedural (basada en subdividir un programa en piezas lógicas para reducir su complejidad según el principio de "divide y vencerás"). La gran mayoría de lenguajes de programación no son lenguajes "puros", desde el punto de vista del paradigma que siguen, sino que siguen varios paradigmas. Historia del paradigma de la programación estructurada El origen de la programación estructurada se encuentra en el teorema del programa estructurado, que proporciona las bases teóricas sobre las que ésta se sustenta. Este teorema establece que cualquier programa puede ser escrito mediante la combinación de tres estructuras de control de programa: secuencia, iteración y condición. Estas tres estructuras de control no se originaron en el paradigma de programación estructurada, pues ya se emplearon para describir el ciclo de instrucciones de una CPU y el funcionamiento de una máquina de Turing. De este modo, se da la paradoja de que un procesador siempre está ejecutando un programa estructurado, aunque las instrucciones que lea de la memoria sean parte de un programa orientado a objetos. El paradigma de programación estructurada se basa en que todo programa de ordenador se puede escribir a partir de tres estructuras de control básicas: secuencia, iteración/bucle y condición/bifurcación. Este teorema no establece cómo se debe escribir y analizar un programa estructurado, encargándose de este estudio el paradigma de programación estructurada, desarrollado a finales de los años 60 y durante la década de los 70 con las importantes contribuciones de Dijkstra, Floyd, Hoare o Gries. La figura de Dijkstra es la que más comúnmente aparece ligada a la programación estructurada. Entre los principios que según Dijkstra debía cumplir un programa estructurado, cabe destacar el de alta especialización o separación de conceptos (divide y vencerás), el de incorrección del uso de la sentencia GOTO o el de punto único de entrada y salida (toda función o bloque debe tener un único punto de entrada, y un único punto de salida). Dijkstra introdujo los principios de especializacion funcional (divide y vencerás), puntos únicos de entrada y de salida de funciones y programas, diseño desde arriba hacia abajo (top-down) y abolición de la sentencia GOTO para mantener un flujo coherente de programa. Estos principios son los fundamentos de la programación estructurada. Durante estos años, se produjo cierta controversia acerca de una de las afirmaciones más polémicas del paradigma de programación estructurada: la necesidad de suprimir la sentencia GOTO (que rompe el ciclo de ejecución lineal de un programa). No obstante, a principios del siglo XXI la programación estructurada ha pasado a ser un paradigma de programación ampliamente aceptado, de tal forma que paradigmas como el de la programación orientada a objetos o el de la programación orientada a aspectos son superconjuntos de ésta, y lenguajes como COBOL o BASIC que inicialmente solo eran imperativos pasaron a incorporar las estructuras de control de la programación estructurada. El teorema del programa estructurado. Establece 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 (condición) 3. Ejecutar una subrutina mientras una variable booleana sea 'verdadera' (iteración, ciclo o bucle) Este teorema demuestra que la instrucción GOTO no es estrictamente necesaria y para todo programa existe un programa equivalente que no hace uso de dicha instrucción. Excepciones a las reglas de Dijkstra Pese a que Dijkstra postuló que toda función, procedimiento o bloque debería tener un único punto de entrada y un único punto de salida, la gran mayoría de lenguajes de programación han adoptado la aproximación de permitir múltiples puntos de salida, bien mediante la llamada a la función de retorno en cualquier punto, bien mediante el mecanismo de lanzamiento de excepciones. El concepto de abstracción Como se tratará con mas produndidad en los temas de análisis y diseño estructurado, el concepto fundamental a la hora de subdividir un sistema en componentes funcionales reutilizables (objetivo básico de la programación estructurada/procedural) es el concepto de abstracción. La abstracción es una tarea de modelado: consiste en reducir la complejidad de un problema a un modelo que recoja solo unas pocas características del problema original, aquellas que son relevantes para el problema que se trata de resolver, pero que a la vez nos permitan reducir la complejidad del problema en su globalidad. En el paradigma de la programación estructurada las abstracciones básicas son las estructuras de datos y las funciones o procedimientos. A la hora de resolver un problema computacional, es necesario identificar las estructuras de datos que recogen el dominio de información del problema, y los procesos (funciones y procedimientos) que permiten transformar esta información. Existen técnicas de análisis y diseño basadas en diagramas como el diagrama de estructura de datos o el diagrama de estructura. Para garantizar uno de los objetivos básicos del paradigma estructurado, la reutilización y la reducción de la complejidad de los programas, existen diferentes principios de diseño como: * Alta cohesión. Un módulo de código debe especializarse en realizar una función * Bajo acoplamiento. * Arquitectura en capas. La estructuración del software en capas permite que se aislen los detalles de implementación de un componente a los usuarios de los servicios prestados por este componente. Referencias bibliográficas. 1. Edsger_Dijkstra, ''Notes on Structured Programming'', pg. 6 2. Michael_A._Jackson, ''Principles of Program Design'', Academic Press, London, 1975.
Si te ha gustado esta entrada, suscríbete para recibir las próximas entradas por correo electrónico. Por favor, apoya este blog.

0 comentarios:

Publicar un comentario en la entrada