Está en la página 1de 4

Programacin estructurada

La programacin estructurada es un paradigma de programacin orientado a mejorar la


claridad, calidad y tiempo de desarrollo de un programa de computadora, utilizando
nicamente subrutinas y tres estructuras: secuencia, seleccin (if y switch)
e iteracin (bucles for y while), considerando innecesario y contraproducente el uso de la
instruccin de transferencia incondicional (GOTO), que podra conducir a "cdigo
estropajo", que es mucho ms difcil de seguir y de mantener, y era la causa de
muchos errores de programacin.
Surgi en la dcada de 1960, particularmente del trabajo de Bhm y Jacopini,1 y una
famosa carta, La sentencia goto, considerada perjudicial, de Edsger Dijkstra en 19682
y fue reforzado tericamente por el teorema del programa estructurado, y prcticamente
por la aparicin de lenguajes como ALGOL con adecuadas y ricas estructuras de control.

ndice
[ocultar]

1Orgenes de la programacin estructurada


2Historia
o 2.1Fundamentacin terica
o 2.2Debate
o 2.3Resultado
3Ventajas de la programacin estructurada
4Lenguajes de programacin estructurada
5Nuevos paradigmas
6Referencias
7Bibliografa
8Vase tambin
9Enlaces externos

Orgenes de la programacin estructurada[editar]


A finales de los aos 1970 surgi una nueva forma de programar que no solamente daba
lugar a programas fiables y eficientes, sino que adems estaban escritos de manera que
facilitaba su mejor comprensin, no slo proveyendo ventajas durante la fase de
desarrollo, sino tambin posibilitando una ms sencilla modificacin posterior.
El teorema del programa estructurado, propuesto por Bhm-Jacopini, demuestra que todo
programa puede escribirse utilizando nicamente las tres instrucciones de control
siguientes:

Secuencia.
Instruccin condicional.
Iteracin (bucle de instrucciones) con condicin al principio.
Solamente con estas tres estructuras se pueden escribir todos los programas y
aplicaciones posibles. Si bien los lenguajes de programacin tienen un mayor repertorio
de estructuras de control, estas pueden ser construidas mediante las tres bsicas citadas.

Historia[editar]
Fundamentacin terica[editar]
El teorema del programa estructurado proporciona la base terica de la programacin
estructurada. Seala que la combinacin de las tres estructuras bsicas, secuencia,
seleccin e iteracin, son suficientes para expresar cualquier funcin computable. Esta
observacin no se origin con el movimiento de la programacin estructurada. Estas
estructuras son suficientes para describir el ciclo de instruccin de una unidad central de
procesamiento, as como el funcionamiento de una mquina 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 Bhm y Jacopini, posiblemente porque Dijkstra haba citado este escrito. El teorema
del programa estructurado no responde a cmo escribir y analizar un programa
estructurado de manera til. Estos temas fueron abordados durante la dcada de 1960 y
principio de los aos 1970, con importantes contribuciones de Dijkstra, Robert W.
Floyd, Tony Hoarey y David Gries.
Debate[editar]
P. J. Plauger, uno de los primeros en adoptar la programacin estructurada, describi su
reaccin 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 lgica y diciendo, 'Te apuesto que no puedes estructurar esto'. Ni la prueba por
Bhm y Jacopini, ni nuestros repetidos xitos en escribir cdigo estructurado, los llevaron un da
antes de lo que estaban listos para convencerse.3

Donald Knuth acept el principio de que los programas deben escribirse con
demostratividad en mente, pero no estaba de acuerdo (y an est en
desacuerdo)[cita requerida] con la supresin de la sentencia GOTO. En su escrito de 1974
Programacin estructurada con sentencias Goto, dio ejemplos donde crea que un salto
directo conduce a cdigo ms claro y ms eficiente sin sacrificar demostratividad. Knuth
propuso una restriccin estructural ms flexible: debe ser posible establecer un diagrama
de flujo del programa con todas las bifurcaciones hacia adelante a la izquierda, todas las
bifurcaciones hacia atrs a la derecha, y sin bifurcaciones que se crucen entre s. Muchos
de los expertos en teora de grafos y compiladores han abogado por permitir slo grafos de
flujo reducible[quin?][cundo?].
Los tericos de la programacin estructurada ganaron a un aliado importante en la dcada
de 1970 despus de que el investigador de IBM Harlan Mills aplicara su interpretacin de
la teora de la programacin estructurada para el desarrollo de un sistema de indexacin
para el archivo de investigacin del New York Times. El proyecto fue un gran xito de la
ingeniera, y los directivos de otras empresas lo citaron en apoyo de la adopcin de la
programacin estructurada, aunque Dijkstra critic las maneras en que la interpretacin de
Mills difera de la obra publicada.
Tan tarde como 1987 fue todava posible elevar la cuestin de la programacin
estructurada en una revista de ciencia de la computacin. Frank Rubin lo hizo en ese ao,
con una carta, 'La sentencia GOTO considerada daina' considerada daina?.
Numerosas objeciones siguieron, incluyendo una respuesta de Dijkstra, que criticaba
duramente a Rubin y las concesiones que otros escritores hicieron cuando le
respondieron.
Resultado[editar]
A finales del siglo XX casi todos los cientficos estn convencidos de que es til aprender y
aplicar los conceptos de programacin estructurada. Los lenguajes de programacin de
alto nivel que originalmente carecan de estructuras de programacin,
como FORTRAN, COBOL y BASIC, ahora las tienen.

Ventajas de la programacin estructurada[editar]


Ventajas de la programacin estructurada comparada con el modelo anterior (hoy llamado
despectivamente cdigo espagueti).
Los programas son ms fciles de entender, pueden ser ledos de forma secuencial y
no hay necesidad de hacer engorrosos seguimientos en saltos de lneas (GOTO)
dentro de los bloques de cdigo para intentar entender la lgica.
La estructura de los programas es clara, puesto que las instrucciones estn ms
ligadas o relacionadas entre s.
Reduccin del esfuerzo en las pruebas y depuracin. El seguimiento de los fallos o
errores del programa (debugging) se facilita debido a su estructura ms sencilla y
comprensible, por lo que los errores se pueden detectar y corregir ms fcilmente.
Reduccin de los costos de mantenimiento. Anlogamente a la depuracin, durante la
fase de mantenimiento, modificar o extender los programas resulta ms fcil.
Los programas son ms sencillos y ms rpidos de confeccionar.
Se incrementa el rendimiento de los programadores.

Lenguajes de programacin estructurada[editar]


Es posible hacer la programacin estructurada en cualquier lenguaje de programacin,
aunque es preferible usar algo como un lenguaje de programacin procedimental. Algunos
de los lenguajes utilizados inicialmente para programacin estructurada
incluyen: ALGOL, Pascal, PL/I y Ada pero la mayora de los nuevos lenguajes de
programacin procedimentales desde entonces han incluido caractersticas para fomentar
la programacin estructurada y a veces deliberadamente omiten caractersticas,4 en un
esfuerzo para hacer ms difcil la programacin no estructurada.

Nuevos paradigmas[editar]
Posteriormente a la programacin estructurada se han creado nuevos paradigmas tales
como la programacin modular, la programacin orientada a objetos, programacin por
capas, etc., y el desarrollo de entornos de programacin que facilitan la programacin de
grandes aplicaciones y sistemas.

Referencias[editar]
1. Volver arriba Bhm, Jacopini. "Flow diagrams, turing machines and languages with only
two formation rules" Comm. ACM, 9(5):366-371, May 1966
2. Volver arriba Edsger Dijkstra (marzo de 1968). Go To Statement Considered
Harmful. Communications of the ACM (PDF) 11 (3): 147-148. doi:10.1145/362929.362947. The
unbridled use of the go to statement has as an immediate consequence that it becomes
terribly hard to find a meaningful set of coordinates in which to describe the process
progress. ... The go to statement as it stands is just too primitive, it is too much an invitation
to make a mess of one's program.
3. Volver arriba |apellidos = Plauger |nombre = P. J. |enlaceautor = P. J. Plauger |ttulo =
Programming on Purpose, Essays on Software Design |fecha = 12 de febrero de 1993
|editorial = Prentice-Hall |edicin = 1 |isbn = 978-0-13-721374-0 |pgina = 25 | pginas =
256
4. Volver arriba GOTO for example

Bibliografa[editar]
1. Garca-Bermejo Giner, Jos Rafael (2008). Programacin estructurada en C (1.
edicin). Pearson Prentice Hall. ISBN 978-84-8322-423-6.
2. Valls Ferrn, Jos Mara; Camacho Fernndez, David (2004). Programacin
estructurada y algoritmos en Pascal (1. edicin). Pearson Alhambra. ISBN 978-84-205-
4246-1.
3. Programacin estructurada II (1. edicin). Enseanza Tcnica y Sistemas, S.A.
2000. ISBN 978-84-85838-90-5.
4. Pseudocdigos y programacin estructurada (1. edicin). Centro Tcnico Europeo
de Enseanzas Profesionales. 1997. ISBN 978-84-8199-065-2.
5. Snchez Andrs, Mara ngeles (1996). Programacin estructurada y fundamentos
de programacin (1. edicin). McGraw-Hill / Interamericana de Espaa,
S.A. ISBN 978-84-481-0557-0.

Vase tambin[editar]
Teorema del programa estructurado
Diseo estructurado
Bloque de cdigo
Estructuras de control
Programacin por procedimientos
Programacin modular
Programacin orientada a objetos

Enlaces externos[editar]
Monografias.com: Programacin Estructurada
Ejercicios resueltos de Programacin Estructurada