Vous êtes sur la page 1sur 10

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 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 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]

1 Orgenes de la programacin estructurada

2 Historia
o

2.1 Fundamentacin terica

2.2 Debate

2.3 Resultado

3 Ventajas de la programacin estructurada

4 Programacin estructurada de bajo nivel

5 Lenguajes de programacin estructurada

6 Nuevos paradigmas

7 Referencias

8 Bibliografa

9 Vase tambin

10 Enlaces 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 deestructuras de
control, stas 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 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[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 enteora 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. 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, comparado con la forma anterior


que utiliza GOTO.

Programacin estructurada de bajo nivel[editar]


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
enALGOL 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[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): 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[editar]
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-2054246-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.

PROGRAMACIN ESTRUCTURADA

programacin estructurada es una teora de programacin que consiste en construir programas de fcil comprensin
especialmente til, cuando se necesitan realizar correcciones o modificaciones despus de haber concluido un
grama o aplicacin. Al utilizar la programacin estructurada, es mucho ms sencillo entender la codificacin del
grama, que se habr hecho en diferentes secciones.

basa en una metodologa de desarrollo de programas llamada refinamiento sucesivos: Se plantea una operacin co
odo y se divide en segmentos ms sencillos o de menor complejidad, una vez terminado todos los segmentos del
grama, se procede a unificar las aplicaciones realizadas por el grupo de programadores. Si se ha utilizado
cuadamente la programacin estructurada, esta integracin debe ser sencilla y no presentar problemas al integrar la
ma, y de presentar algn problema, ser rpidamente detectable para su correccin.

representacin grafica de la programacin estructurada se realiza a travs de diagramas de flujo, el cual representa
grama con sus entradas, procesos y salidas.

programacin estructurada propone segregar los procesos en estructuras lo ms simple posibles, las cuales se
ocen como secuencia, seleccin e interaccin, que estn disponibles en todos los lenguajes modernos de
gramacin imperativa en forma de sentencias, combinando esquemas sencillos se pueden llegar a construir sistema
plios y complejos pero de fcil entendimiento.

programacin estructurada es un mtodo disciplinado de escribir programas que sean claros, que se demuestre que
n correctos y fciles de modificar.

programacin estructurada consiste en dividir los programas en mdulos y se basa en el desarrollo de programas qu
de lo general a lo particular, es decir, del conjunto al elemento, es decier de un todo a lo especfico.

a la solucin de un problema en particular, se inicia considerando las funciones que tiene que cumplir el programa e
eral y despus se va desmembrando estas funciones en subfunciones ms pequeas hasta llegar al caso ltimo o
s particular y que ya no se pueda subdividir en casos ms pequeos. Una vez que ya se tiene el programa
membrado en de lo general a lo particular, se empieza a programar estas funciones pequeas, particulares o mdul
esta manera, siempre podremos construir nuevos mdulos o unidades insertando el nombre del mdulo donde
responda y desarrollndolo a parte.

modificacin de los mdulos es ms fcil y se pueden referenciar cuantas veces se requiera, con lo que se ahorra

mpo en la programacin, un programa tiene un diseo estructurado si cumple las dos siguientes condiciones:

El teorema de Estructura.

Est debidamente documentado

eorema de Estructura dice que un programa cumple el teorema de estructura si y slo () si es propio y contiene
camente las tres estructuras bsicas de control que son la secuencial, la alternativa y la repetitiva, un programa es
pio si y slo si cumple: que tenga un solo punto de entrada y un solo punto de salida y que entre dos puntos de cont
programa exista al menos un camino.

programacin estructurada es un estilo con el cual l se busca que el programador elabore programas sencillos y
les de entender, la programacin estructurada hace uso de tres estructuras bsicas de control que son: Estructura
cuencial, Estructura Selectiva y la Estructura Repetitiva ( Iterativa)

programacin estructurada se basa un teorema fundamental, el cual afirma que cualquier programa, no importa el tip
rabajo que ejecute, puede ser elaborado utilizando nicamente las tres estructuras bsicas.

FINICIN DE LAS 3 ESTRUCTURAS BSICAS

Estructura Secuencial: Indica que las


rucciones de un programa se
cutan una despus de la otra, en el
mo orden en el cual aparecen en el
grama. Se representa grficamente
mo una caja despus de otra, ambas
una sola entrada y una nica salida.

cajas A y B pueden ser definidas


a ejecutar desde una simple
ruccin hasta un mdulo o programa
mpleto, siempre y cuando stos
mbin sean programas apropiados.

2. Estructura Selectiva: Tambin conocida


como la estructura si verdadero - falso,
plantea la seleccin entre dos alternativas
con base en el resultado de la evaluacin
de una condicin; equivale a la
instruccin IF de todos los lenguajes de
programacin y se representa
grficamente de la siguiente manera:

3. Estructura Repetitiva (Iterativa)


Tambin llamada la estructura hace
mientras - que, corresponde a la
ejecucin repetida de una instrucci
mientras que se cumple una
determinada condicin. El diagram
de flujo para esta estructura es el
siguiente:

Aqu el bloque A se ejecuta


repetidamente mientras que la
condicin C se cumpla o sea cierta
En el diagrama de flujo anterior, C es una Tambin tiene una sola entrada y u
condicin que se evala; A es la accin sola salida; igualmente A puede se

que se ejecuta cuando la evaluacin de


esta condicin resulta verdadera y B es la
accin ejecutada cuando el resultado de
la evaluacin indica falso. La estructura
tambin tiene una sola entrada y una sola
salida; y las funciones A y B tambin
pueden ser cualquier estructura bsica o
conjunto de estructuras.

cualquier estructura bsica o


conjunto de estructuras.

NTAJAS DE LA PROGRAMACIN ESTRUCTURADA

n la programacin estructurada, elaborar programas de computadora sigue siendo una labor que demanda esfuerzo,
atividad, habilidad y cuidado. Sin embargo, con este nuevo estilo podemos obtener las siguientes ventajas:

os programas son ms fciles de entender, un programa estructurado puede ser ledo en secuencia, de arriba hacia
jo, sin necesidad de estar saltando de un sitio a otro en la lgica, lo cual es tpico de otros estilos de programacin.

Se logra una reduccin del esfuerzo en las pruebas, el seguimiento de las fallas o depuracin (debugging) se facilita
ido a la lgica ms visible, de tal forma que los errores se pueden detectar y corregir ms fcilmente.

Se crean programas ms sencillos y ms rpidos.

ERENCIAS CON LA PROGRAMACIN ESTRUCTURADA CON OTRO TIPO DE PROGRAMACIN

Aunque la programacin estructurada condujo a


mejoras de la tcnica de programacin secuencial, los
mtodos modernos de diseo de software orientado a
objetos incluyen mejoras entre las que estn el uso de
los patrones de diseo, diseo por contrato, y
lenguajes de modelado, Las principales diferencias
entre la programacin estructurada y la orientada a
objetos son:

La programacin orientada a objetos es ms


moderna, es una evolucin de la programacin
estructurada que plasma en el diseo de una
familia de lenguajes conceptos que existan
previamente con algunos nuevos.

La programacin orientada a objetos se basa e


lenguajes que soportan sintctica y
semnticamente la unin entre los tipos
abstractos de datos y sus operaciones.

La programacin orientada a objetos incorpora


en su entorno de ejecucin mecanismos tales
como el polimorfismo y el envo de mensajes
entre objetos.

Errneamente se le adjudica a la programacin


estructurada clsica ciertos problemas como si fueran
inherentes a la misma, esos problemas fueron
hacindose cada vez ms graves y antes de la
programacin orientada a objetos diversos autores
encontraron soluciones basadas en aplicar estrictas
metodologas de trabajo. De esa poca son los
conceptos de cohesin y acoplamiento, de esos
problemas se destacan los siguientes:

delo mental anmalo. Nuestra imagen del mundo se apoya en los seres, a los que asignamos nombres sustantivos,
ntras la programacin clsica se basa en el comportamiento, representado usualmente por verbos.

Es difcil modificar y extender los programas, pues suele haber datos compartidos por varios subprogramas, que
introducen interacciones ocultas entre ellos.

Es difcil mantener los programas. Casi todos los sistemas informticos grandes tienen errores ocultos, que no
surgen a la luz hasta despus de muchas horas de funcionamiento.

Es difcil reutilizar los programas. Es prcticamente imposible aprovechar en una aplicacin nueva las subrutinas
que se disearon para otra.

Es compleja la coordinacin y organizacin entre programadores para la creacin de aplicaciones de media y gra
envergadura.

la programacin orientada a objetos pura no deben utilizarse llamadas de subrutinas, nicamente mensajes, por ello
es recibe el nombre de programacin sin call, igual que la programacin estructurada se llama tambin programaci
goto, sin embargo, no todos los lenguajes orientados a objetos prohben la instruccin call, permitiendo realizar
gramacin hbrida, imperativa y orientada a objetos a la vez.