16/3/24, 13:02 Programacion estructurada - EcuRed
Programacion estructurada
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 Programción Estructurada
tres estructuras: secuencia, selección (if y switch) e iteración
Diseñado por Böhm y Jacopini
(bucles for y while), considerando innecesario y contraproducente
el uso de la instrucción de transferencia incondicional (GOTO), Fecha de Creación década de 1960
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.
Surgió en la década de 1960, particularmente del trabajo Böhm y Jacopini, 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, y prácticamente por la aparición de lenguajes como ALGOL con adecuadas y ricas estructuras de control.
Sumario
1 Orígenes de la programación estructurada
2 Estructuras
2.1 Estructura secuencial
2.2 Estructura selectiva o de selección
2.3 Estructura iterativa
2.4 Anidamiento
3 Historia
3.1 Fundamentación teórica
3.2 Debate
3.3 Resultado
4 Ventajas de la programación estructurada
5 Programación estructurada de bajo nivel
6 Lenguajes de programación estructurada
7 Nuevos paradigmas
8 Véase también
9 Fuentes
Orígenes de la programación estructurada
A finales de los años 1970 surgió una nueva forma de programar que no solamente daba lugar a programas fiables y
eficientes, sino que además estaban escritos de manera que facilitaba su mejor comprensión, no sólo proveyendo
ventajas durante la fase de desarrollo, sino también posibilitando una más sencilla modificación posterior.
El teorema del programa estructurado, propuesto por Böhm-Jacopini, demuestra que todo programa puede escribirse
utilizando únicamente las tres instrucciones de control siguientes:
https://www.ecured.cu/Programacion_estructurada#Fuentes 1/5
16/3/24, 13:02 Programacion estructurada - EcuRed
Secuencia
Instrucción condicional.
Iteración (bucle de instrucciones) con condición al principio.
Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes
de programación tienen un mayor repertorio de estructuras de control, éstas pueden ser construidas mediante las tres
básicas citadas.
Estructuras
Estructura secuencial
Una estructura de programa es secuencial si las instrucciones se ejecutan una tras otra, a modo de secuencia lineal; es
decir, que una instrucción no se ejecuta hasta que finaliza la anterior, no se bifurca ni se repite el flujo del programa.
Ejemplo en QBASIC:
' introduzco los datos x y y
INPUT x
INPUT y
' intercambio los valores x y y
auxiliar = x ' guardo una copia del valor de x en auxiliar
x = y ' guardo el valor de y en x, perdiendo su valor anterior, pero manteniendo una copia en auxiliar.
y = auxiliar ' copio a y el valor de auxiliar, que es el valor inicial de x.
' imprimo las variables (que ahora tienen los valores intercambiados)
PRINT x
PRINT y
Estructura selectiva o de selección
La estructura selectiva permite que la ejecución del programa se bifurque a una instrucción (o conjunto de ellas). Según
un criterio o condición lógica sólo uno de los caminos en la bifurcación será el tomado para ejecutarse.
Ejemplo en QBASIC:
IF a > b THEN ' si a es mayor que b
PRINT a ; " es mayor que " ; b ' imprime "a es mayor que b"
ELSE ' de lo contrario
PRINT a ; " no es mayor que " ; b ' imprime "a no es mayor que b"
END IF
Las palabras clave IF, THEN, ELSE y END IF constituyen la estructura de la instrucción condicional.
Estructura iterativa
Un bucle iterativo o iteración de una secuencia de instrucciones, hace que se repita su ejecución mientras se cumpla una
condición. El número de iteraciones normalmente está determinado por un cambio en la condición dentro del mismo
bucle, aunque puede ser forzado o explícito por otra condición.
Ejemplo en QBASIC:
a = 0
b = 7
DO WHILE b > a ' mientras b sea mayor que a
PRINT a ' imprime el valor de a
https://www.ecured.cu/Programacion_estructurada#Fuentes 2/5
16/3/24, 13:02 Programacion estructurada - EcuRed
a = a + 1 ' incrementa 'a' en 1
LOOP
Esta instrucción tiene tres palabras reservadas: DO, WHILE y LOOP, que conforman un bucle WHILE.
Anidamiento
El cuerpo de cualquier estructura puede tener instrucciones simples u otras estructuras, que a su vez pueden contener a
otras.
Ejemplo en QBASIC:
CLS
INPUT "Valor entero para a:"; a
INPUT "Valor entero para b:"; b
IF a > b THEN
REM hacer intercambio de variables
auxiliar = a
a = b
b = auxiliar
REM imprimir diferencia en escala de uno en uno
DO WHILE auxiliar > a
auxiliar = auxiliar - 1
PRINT auxiliar
LOOP
END IF
PRINT
PRINT a; b
En el ejemplo anterior hay una estructura WHILE anidada dentro de una estructura IF. -->
Historia
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. El teorema del programa estructurado no responde a cómo escribir y analizar un programa
estructurado de manera útil. Estos temas fueron abordados durante la década de 1960 y principio de los años 1970, con
importantes contribuciones de Dijkstra, Robert W. Floyd, Tony Hoarey y David Gries.
Debate
P. J. Plauger, uno de los primeros en adoptar la programación estructurada, describió su reacción con el teorema del
programa estructurado:
Nosotros los conversos ondeamos esta interesante pizca de noticias bajo las narices de los recalcitrantes programadores
de lenguaje ensamblador que mantuvieron trotando adelante retorcidos bits de lógica y diciendo, 'Te apuesto que no
puedes estructurar esto'. Ni la prueba por Böhm y Jacopini, ni nuestros repetidos éxitos en escribir código estructurado,
los llevaron un día antes de lo que estaban listos para convencerse.
https://www.ecured.cu/Programacion_estructurada#Fuentes 3/5
16/3/24, 13:02 Programacion estructurada - EcuRed
Donald Knuth aceptó el principio de que los programas deben escribirse con demostratividad en mente, pero no estaba
de acuerdo (y aún está en desacuerdo) con la supresión de la sentencia GOTO. En su escrito de 1974 Programación
estructurada con sentencias Goto, dio ejemplos donde creía que un salto directo conduce a código más claro y más
eficiente sin sacrificar demostratividad. Knuth propuso una restricción estructural más flexible: debe ser posible
establecer un diagrama de flujo del programa con todas las bifurcaciones hacia adelante a la izquierda, todas las
bifurcaciones hacia atrás a la derecha, y sin bifurcaciones que se crucen entre sí. Muchos de los expertos en teoría de
grafos y compiladores han abogado por permitir sólo grafos de flujo reducible quién cuándo.
Los teóricos de la programación estructurada ganaron a un aliado importante en la década de 1970 después de que el
investigador de IBM Harlan Mills aplicara su interpretación de la teoría de la programación estructurada para el
desarrollo de un sistema de indexación para el archivo de investigación del New York Times. El proyecto fue un gran
éxito de la ingeniería, y los directivos de otras empresas lo citaron en apoyo de la adopción de la programación
estructurada, aunque Dijkstra criticó las maneras en que la interpretación de Mills difería de la obra publicada.
Tan tarde como 1987 fue todavía posible elevar la cuestión de la programación estructurada en una revista de ciencia de
la computación. Frank Rubin lo hizo en ese año, con una carta, La sentencia GOTO considerada dañina. Numerosas
objeciones siguieron, incluyendo una respuesta de Dijkstra, que criticaba duramente a Rubin y las concesiones que otros
escritores hicieron cuando le respondieron.
Resultado
A finales del siglo XX casi todos los científicos están convencidos de que es útil aprender y aplicar los conceptos de
programación estructurada. Los lenguajes de programación de alto nivel que originalmente carecían de estructuras de
programación, como "FORTRAN", "COBOL" y "BASIC", ahora las tienen.
Ventajas de la programación estructurada
Ventajas de la programación estructurada comparada con el modelo anterior (hoy llamado despectivamente código
espagueti).
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.
Programación estructurada de bajo nivel
En un bajo nivel, los programas estructurados con frecuencia están compuestos de simples estructuras de flujo de
programa jerárquicas. Estas son secuencia, selección y repetición:
"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
https://www.ecured.cu/Programacion_estructurada#Fuentes 4/5
16/3/24, 13:02 Programacion estructurada - EcuRed
while, repeat, for o do..until. A menudo se recomienda que cada bucle sólo debe tener un punto de entrada (y en la
programación estructural original, también sólo un punto de salida, y pocos lenguajes refuerzan esto).
Un lenguaje es descrito como estructurado en bloques cuando tiene una sintaxis para encerrar estructuras entre palabras
clave tipo corchete, como una sentencia if..fi en ALGOL 68, o una sección de código entre corchetes BEGIN..END,
como en PL/I - o la de llaves {...} de C y muchos otros lenguajes posteriores.
Lenguajes de programación estructurada
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 de 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.
Nuevos paradigmas
Posteriormente a la programación estructurada se han creado nuevos paradigmas tales como la programación modular, la
programación orientada a objetos, programación por capas, etc, y el desarrollo de entornos de programación que facilitan
la programación de grandes aplicaciones y sistemas.
Véase también
Teorema del programa estructurado
Diseño estructurado
Bloque de código
Estructuras de control
Programación por procedimientos
Programación modular
Programación orientada a objetos
Fuentes
Monografias.com: Programación Estructurada (http://www.monografias.com/trabajos/progestructu/progestructu.sh
tml)
Ejercicios resueltos de Programación Estructurada (http://diagramas-de-flujo.blogspot.com/search/label/programa
cion%20estructurada)
Obtenido de «https://www.ecured.cu/index.php?title=Programacion_estructurada&oldid=3536106»
https://www.ecured.cu/Programacion_estructurada#Fuentes 5/5