La programación estructurada es un paradigma de programación que mejora la calidad y desarrollo de programas utilizando solo tres estructuras: secuencia, selección e iteración. Esto hace que los programas sean más fáciles de entender, depurar y mantener. La base teórica es el teorema del programa estructurado, el cual establece que estas tres estructuras son suficientes para expresar cualquier función computable. Algunos lenguajes iniciales que apoyaban este paradigma fueron ALGOL, Pascal y PL/I.
3. ¿QUÉ ES?
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: 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.
4. FUNDAMENTACIÓN TEÓRICA
El teorema del programa estructurado proporciona la base teórica de la
programación estructurada. Señala que tres maneras de combinar programas
son suficientes para expresar cualquier función computable:
secuencia, selección e iteración. Esta observación no se originó con el
movimiento de la programación estructurada.
Estas estructuras son suficientes para describir el ciclo de instrucción de
una unidad central de procesamiento, así como el funcionamiento de
una máquina de Turing. Por lo tanto un procesador siempre está ejecutando
un "programa estructurado" en este sentido, incluso si las instrucciones que
lee de la memoria no son parte de un programa estructurado.
Sin embargo, los autores usualmente acreditan el resultado a un documento
escrito en 1966 por Böhm y Jacopini, posiblemente porque Dijkstra había
citado este escrito.
5. VENTAJAS DE LA PROGRAMACIÓN
ESTRUCTURADA
Los programas son más fáciles de entender, pueden ser leídos de forma
secuencial y no hay necesidad de hacer engorrosos seguimientos en
saltos de líneas (GOTO) dentro de los bloques de código para intentar
entender la lógica.
La estructura de los programas es clara, puesto que las instrucciones
están más ligadas o relacionadas entre sí.
Reducción del esfuerzo en las pruebas y depuración. El seguimiento de
los fallos o errores del programa ("debugging") se facilita debido a su
estructura más sencilla y comprensible, por lo que los errores se pueden
detectar y corregir más fácilmente.
Reducción de los costos de mantenimiento. Análogamente a la
depuración, durante la fase de mantenimiento, modificar o extender los
programas resulta más fácil.
Los programas son más sencillos y más rápidos de confeccionar.
Se incrementa el rendimiento de los programadores, comparado con la
forma anterior que utiliza GOTO.
6. PROGRAMACIÓN ESTRUCTURADA
DE BAJO NIVEL
"Secuencia" se refiere a una ejecución ordenada de instrucciones.
En "selección", una de una serie de sentencias es ejecutada dependiendo
del estado del programa. Esto es usualmente expresado con palabras clave
como if..then..else..endif, switch, o case. En algunos lenguajes las palabras
clave no se puede escribir textualmente, pero debe ser delimitada
(stropped).
En la "repetición" se ejecuta una sentencia hasta que el programa alcance
un estado determinado, o las operaciones han sido aplicadas a cada
elemento de una colección. Esto es usualmente expresado con palabras
clave como while, repeat, for o do..until.
7. Es posible hacer la programación estructurada en cualquier
lenguaje de programación, aunque es preferible usar algo
como un lenguaje de programación procedimental. Algunos de
los lenguajes utilizados inicialmente para programación
estructurada incluyen: ALGOL, Pascal, PL/I y Ada – pero la
mayoría de los nuevos lenguajes programación
procedimentales desde entonces han incluido características
para fomentar la programación estructurada y a veces
deliberadamente omiten características en un esfuerzo para
hacer más difícil la programación no estructurada.
LENGUAJES DE PROGRAMACIÓN
ESTRUCTURADA