Programación Estructurada

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 6

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 detransferencia
incondicional (GOTO), que podra conducir a "cdigo espagueti", 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 1968
2
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.
Orgenes de la programacin estructurada
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 deestructuras de control, stas pueden ser construidas mediante las
tres bsicas citadas.

Historia
Fundamentacin terica
El teorema del programa estructurado proporciona la base terica de la
programacin estructurada. Seala que tres maneras de combinar programas
son suficientes para expresar cualquier funcin computable: secuencia,
seleccin e iteracin. 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
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 ycompiladores 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.
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 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
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, comparado con la forma
anterior que utiliza GOTO.
Programacin estructurada de bajo nivel
En un bajo nivel, los programas estructurados con frecuencia estn
compuestos de simples estructuras de flujo de programa jerrquicas. Estas son
secuencia, seleccin y repeticin:
"Secuencia" se refiere a una ejecucin ordenada de instrucciones.
En "seleccin", 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 "repeticin" se ejecuta una sentencia hasta que el programa alcance un
estado determinado, o las operaciones han sido aplicadas a cada elemento de
una coleccin. Esto es usualmente expresado con palabras clave como while,
repeat, for o do..until. A menudo se recomienda que cada bucle slo debe tener
un punto de entrada (y en la programacin estructural original, tambin slo un
punto de salida, y pocos lenguajes refuerzan esto).

Representaciones grficas de los tres patrones bsicos. En diagrama NS cajas
azules y sus equivalentes en diagramas de flujo de control
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 seccin de cdigo entre corchetes
BEGIN..END, como en PL/I - o la de llaves {...} de C y muchos otros lenguajes
posteriores.
Lenguajes de programacin estructurada
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
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
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 (March 1968). Go To Statement
Considered Harmful (PDF). Communications of the
ACM 11 (3): pp. 147148. 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 Plauger, P. J. (12 de febrero de 1993). Programming on
Purpose, Essays on Software Design (1 edicin). Prentice-Hall.
p. 25 |pgina= y |pginas= redundantes (ayuda). ISBN 978-0-13-
721374-0.
4. Volver arriba GOTO for example
Bibliografa
1. Garca-Bermejo Giner, Jos Rafael (2 de 2008). "Programacin
estructurada en C" (1 edicin). Pearson Prentice Hall. ISBN 978-84-
8322-423-6.
2. Valls Ferrn, Jos Mara; Camacho Fernndez, David (9 de
2004). Programacin estructurada y algoritmos en Pascal (1 edicin).
Pearson Alhambra. ISBN 978-84-205-4246-1.
3. Programacin estructurada II (1 ed. 4 imp. edicin). Enseanza Tcnica
y Sistemas, S.A. 6 de 2000. ISBN 978-84-85838-90-5.
4. Pseudocdigos y programacin estructurada (1 edicin). Centro Tcnico
Europeo de Enseanzas Profesionales. 2 de 1997. ISBN 978-84-8199-
065-2.
5. Snchez Andrs, Mara ngeles (5 de 1996). Programacin estructurada
y fundamentos de programacin (1 edicin). McGraw-Hill /
Interamericana de Espaa, S.A. ISBN 978-84-481-0557-0.

También podría gustarte