Está en la página 1de 5

Programaci�n estructurada

Ir a la navegaci�nIr a la b�squeda
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 recurriendo
�nicamente a subrutinas y a tres estructuras de control b�sicas: secuencia,
selecci�n (if y switch) e iteraci�n (bucles for y while); asimismo, se considera
innecesario y contraproducente el uso de la transferencia incondicional (GOTO);
esta instrucci�n suele acabar generando el llamado c�digo espagueti, mucho m�s
dif�cil de seguir y de mantener, adem�s de originar numerosos errores de
programaci�n.

Surgi� en la d�cada de 1960, particularmente del trabajo de B�hm y Jacopini,1? y un


famoso escrito de 1968: �La sentencia goto, considerada perjudicial�, de Edsger
Dijkstra.2? Sus postulados se ver�an reforzados, a nivel te�rico, por el teorema
del programa estructurado y, a nivel pr�ctico, por la aparici�n de lenguajes como
ALGOL, dotado de estructuras de control consistentes y bien formadas.3?

�ndice
1 Elementos
1.1 Estructuras de control
1.2 Subrutinas
1.3 Bloques
2 Or�genes de la programaci�n estructurada
3 Historia
3.1 Fundamentaci�n te�rica
3.2 Debate
3.3 Resultado
4 Ventajas de la programaci�n estructurada
5 Lenguajes de programaci�n estructurada
6 Nuevos paradigmas
7 Referencias
8 Bibliograf�a
9 V�ase tambi�n
10 Enlaces externos
Elementos
Estructuras de control
Siguiendo el teorema del programa estructurado, todos los programas se ven como
compuestos de estructuras de control:

Sequence: declaraciones ordenadas o subrutinas ejecutadas en secuencia.


Selection: una o varias instrucciones se ejecutan dependiendo del estado del
programa. Esto generalmente se expresa con la palabra clave como
if..then..else..endif. La declaraci�n condicional debe tener al menos una condici�n
verdadera y cada condici�n debe tener un punto de salida como m�ximo.
Iteration: una instrucci�n o bloque se ejecuta hasta que el programa alcanza un
cierto estado, o se han aplicado operaciones a cada elemento de una colecci�n. Esto
generalmente se expresa con palabras clave como while, repeat, for o do..until. A
menudo, se recomienda que cada bucle solo tenga un punto de entrada (y en la
programaci�n estructural original, tambi�n solo un punto de salida, y algunos
lenguajes lo imponen).
Recursion; una declaraci�n se ejecuta llam�ndose repetidamente a s� misma hasta que
se cumplen las condiciones de terminaci�n. Si bien en la pr�ctica son similares a
los bucles iterativos, los bucles recursivos pueden ser m�s eficientes desde el
punto de vista computacional y se implementan de manera diferente como una pila en
cascada.

Representaci�n gr�fica de los tres patrones b�sicos (secuencia, selecci�n y


repetici�n) utilizando diagramas NS (azul) y diagramas de flujo (verde).
Subrutinas
Subrutinas; Las unidades a las que se puede llamar, como procedimientos, funciones,
m�todos o subprogramas, se utilizan para permitir que una sola declaraci�n haga
referencia a una secuencia.

Bloques
Los Bloques se utilizan para permitir que grupos de declaraciones se traten como si
fueran una sola declaraci�n. Los lenguajes "estructurados en bloques" tienen una
sintaxis para encerrar estructuras de alguna manera formal, como una declaraci�n if
entre par�ntesis. if..fi como en ALGOL 68, o una secci�n de c�digo entre corchetes
BEGIN..END, como en PL/I y Pascal, sangr�a de espacio en blanco como en Python, o
las llaves {...} de C y muchos lenguajes posteriores.

Or�genes de la programaci�n estructurada


A finales de los a�os 1970 surgi� una nueva forma de programar que no solamente
permit�a desarrollar programas fiables y eficientes, sino que adem�s estos estaban
escritos de manera que se facilitaba su comprensi�n en fases de mejora posteriores.

El teorema del programa estructurado, propuesto por B�hm-Jacopini, demuestra que


todo programa puede escribirse utilizando �nicamente las tres instrucciones de
control siguientes:

Secuencia.
Instrucci�n condicional.
Iteraci�n (bucle de instrucciones) con condici�n inicial.
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, estas pueden ser construidas mediante las
tres b�sicas citadas.

Historia
Fundamentaci�n te�rica
El teorema del programa estructurado proporciona la base te�rica de la programaci�n
estructurada. Se�ala que la combinaci�n de las tres estructuras b�sicas, secuencia,
selecci�n e iteraci�n, son suficientes para expresar cualquier funci�n computable.
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.4? 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.5?

Donald Knuth acept� el principio de que los programas deben adaptarse con
asertividad, pero no estaba de acuerdo (y a�n est� en desacuerdo)[cita requerida]
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 solo grafos de flujo reducible[�qui�n?][�cu�ndo?].

Los te�ricos de la programaci�n estructurada se ganaron 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.

Habr�a que esperar a 1987 para que la cuesti�n de la programaci�n estructurada


llamara la atenci�n de una revista de ciencia de la computaci�n. Frank Rubin lo
hizo en ese a�o, con el escrito: ���La sentencia GOTO considerada da�ina� se
considera da�ina?�. A este le siguieron numerosas objeciones, como una respuesta
del propio Dijkstra que criticaba duramente a Rubin y las concesiones que otros
autores 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


Entre las ventajas de la programaci�n estructurada sobre el modelo anterior (hoy
llamado despectivamente c�digo espagueti), cabe citar las siguientes:

Los programas son m�s f�ciles de entender, pueden ser le�dos de forma secuencial y
no hay necesidad de tener que rastrear saltos de l�neas (GOTO) dentro de los
bloques de c�digo para intentar entender la l�gica interna.
La estructura de los programas es clara, puesto que las instrucciones est�n m�s
ligadas o relacionadas entre s�.
Se optimiza el esfuerzo en las fases de pruebas y depuraci�n. El seguimiento de los
fallos o errores del programa (debugging), y con �l su detecci�n y correcci�n, se
facilita enormemente.
Se reducen 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.
Lenguajes de programaci�n estructurada
Si bien es posible desarrollar la programaci�n estructurada en cualquier lenguaje
de programaci�n, resulta m�s id�neo 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�sticas6? en un esfuerzo para hacer m�s dif�cil la programaci�n no
estructurada.
Nuevos paradigmas
Con posterioridad a la programaci�n estructurada se han creado nuevos paradigmas
tales como la programaci�n modular, la programaci�n orientada a objetos, la
programaci�n por capas y otras, as� como nuevos entornos de programaci�n que
facilitan la programaci�n de grandes aplicaciones y sistemas.

Referencias
B�hm, Jacopini. "Flow diagrams, turing machines and languages with only two
formation rules" Comm. ACM, 9(5):366-371, May 1966, doi=10.1145/355592.365646
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. �
Clark, Leslie B. Wilson, Robert G.; Robert, Clark (2000). Comparative programming
languages (3rd edici�n). Harlow, England: Addison-Wesley. p. 20. ISBN
9780201710120. Archivado desde el original el 26 de noviembre de 2015. Consultado
el 25 de noviembre de 2015.
Dijkstra, 1968.
P. J. Plauger (1993). Programming on Purpose (en ingl�s). PTR Prentice Hall. p.
20. ISBN 978-013-721-374-0.
GOTO for example
Bibliograf�a
Dijkstra, Edsger W. (Marzo 1968). �Letters to the editor: Go to statement
considered harmful�. Communications of the ACM 11 (3): 147-148. ISSN 0001-0782.
S2CID 17469809. doi:10.1145/362929.362947.
Garc�a-Bermejo Giner, Jos� Rafael (2008). Programaci�n estructurada en C (1.�
edici�n). Pearson Prentice Hall. ISBN 978-84-8322-423-6.
Valls Ferr�n, Jos� Mar�a; Camacho Fern�ndez, David (2004). Programaci�n
estructurada y algoritmos en Pascal (1.� edici�n). Pearson Alhambra. ISBN 978-84-
205-4246-1.
Programaci�n estructurada II (1.� edici�n). Ense�anza T�cnica y Sistemas, S.A.
2000. ISBN 978-84-85838-90-5.
Pseudoc�digos y programaci�n estructurada (1.� edici�n). Centro T�cnico Europeo de
Ense�anzas Profesionales. 1997. ISBN 978-84-8199-065-2.
S�nchez Andr�s, Mar�a �ngeles (1996). Programaci�n estructurada y fundamentos de
programaci�n (1.� edici�n). McGraw-Hill / Interamericana de Espa�a, S.A. ISBN 978-
84-481-0557-0.
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
Enlaces externos
Monograf�as.com: Programaci�n Estructurada
Ejercicios resueltos de Programaci�n Estructurada
Control de autoridades
Proyectos WikimediaWd Datos: Q223335IdentificadoresBNE: XX531013BNF: 11966709k
(data)GND: 4058133-0LCCN: sh85129214NKC: ph126154
Categor�as: Paradigmas de programaci�nEstructuras de controlDise�o de software
Men� de navegaci�n
No has accedido
Discusi�n
Contribuciones
Crear una cuenta
Acceder
Art�culoDiscusi�n
LeerEditarVer historial
Buscar
Buscar en Wikipedia
Portada
Portal de la comunidad
Actualidad
Cambios recientes
P�ginas nuevas
P�gina aleatoria
Ayuda
Donaciones
Notificar un error
Herramientas
Lo que enlaza aqu�
Cambios en enlazadas
Subir archivo
P�ginas especiales
Enlace permanente
Informaci�n de la p�gina
Citar esta p�gina
Elemento de Wikidata
Imprimir/exportar
Crear un libro
Descargar como PDF
Versi�n para imprimir

En otros idiomas
???????
Deutsch
English
Fran�ais
Bahasa Indonesia
Bahasa Melayu
Portugu�s
???????
??
35 m�s
Editar enlaces
Esta p�gina se edit� por �ltima vez el 13 oct 2022 a las 19:05.
El texto est� disponible bajo la Licencia Creative Commons Atribuci�n Compartir
Igual 3.0; pueden aplicarse cl�usulas adicionales. Al usar este sitio, usted acepta
nuestros t�rminos de uso y nuestra pol�tica de privacidad.
Wikipedia� es una marca registrada de la Fundaci�n Wikimedia, Inc., una
organizaci�n sin �nimo de lucro.
Pol�tica de privacidadAcerca de WikipediaLimitaci�n de responsabilidadVersi�n para
m�vilesDesarrolladoresEstad�sticasDeclaraci�n de cookiesWikimedia FoundationPowered
by MediaWiki

También podría gustarte