Vous êtes sur la page 1sur 5

Programacin estructurada

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 Bhm y Jacopini,[1] y una famosa carta, la sentencia goto considerada perjudicial, de Edsger Dijkstra en 1968 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 de estructuras 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.

Programacin estructurada

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. 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)[citarequerida] 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. 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

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. Los diagramas de caja (azules) fueron inventados para la nueva teora, y aqu se pueden ver sus equivalentes en los ms usados diagramas de flujo de control

Un lenguaje es descrito como estructurado en bloque 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 programacin procedimentales desde entonces han incluido caractersticas para fomentar la programacin estructurada y a veces deliberadamente omiten caractersticas[2] en un esfuerzo para hacer ms difcil la programacin no estructurada.

Programacin estructurada

Nuevos paradigmas
Posterior 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] Bhm, Jacopini. "Flow diagrams, turing machines and languages with only two formation rules" Comm. ACM, 9(5):366-371, May 1966 [2] GOTO for example

Bibliografa
1. Garca-Bermejo Giner, Jos Rafael (2 de 2008) (en espaol). "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) (en espaol). Programacin estructurada y algoritmos en Pascal (1 edicin). Pearson Alhambra. ISBN 978-84-205-4246-1. 3. (en espaol) Programacin estructurada II (1 ed. 4 imp. edicin). Enseanza Tcnica y Sistemas, S.A.. 6 de 2000. ISBN 978-84-85838-90-5. 4. (en espaol) 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) (en espaol). Programacin estructurada y fundamentos de programacin (1 edicin). McGraw-Hill / Interamericana de Espaa, S.A.. ISBN 978-84-481-0557-0.

Enlaces externos
Monografias.com: Programacin Estructurada (http://www.monografias.com/trabajos/progestructu/ progestructu.shtml) Ejercicios resueltos de Programacin Estructurada (http://diagramas-de-flujo.blogspot.com/search/label/ programacion estructurada)

Fuentes y contribuyentes del artculo

Fuentes y contribuyentes del artculo


Programacin estructurada Fuente: http://es.wikipedia.org/w/index.php?oldid=69550512 Contribuyentes: -jem-, 200.24.92.xxx, 200.81.64.xxx, Antur, Badgov, Banfield, Cronos x, Damian cf, DerkeNuke, Diegusjaimes, Dnu72, Efeg, Elabra sanchez, Electrodan, Enramos, Erfil, Ezarate, Fsd141, GermanC, GermanX, Haitike, Helmy oved, Jair Moreno, JamsJF, Javierito92, Jesuja, Jiptohej, Jkbw, JoaquinFerrero, LeinaD natipaC, Lmsilva, Magister Mathematicae, Maldoror, ManuelGR, Manw, Marcosaedro, Matdrodes, Mel 23, Moriel, Murven, Pieraco, Plux, Rizome, SergioN, Shooke, Solde9, SuperBraulio13, Technopat, Tostadora, Wega, conversion script, 219 ediciones annimas

Fuentes de imagen, Licencias y contribuyentes


Archivo:Structured program patterns.png Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Structured_program_patterns.png Licencia: Creative Commons Zero Contribuyentes: User:Orion 8

Licencia
Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/

Vous aimerez peut-être aussi