Programación estructurada

Embed Size (px)

DESCRIPTION

proramacion

Citation preview

Programacin estructuradaLaprogramacin estructuradaes unparadigma de programacinorientado a mejorar la claridad, calidad y tiempo de desarrollo de unprograma de computadora, utilizando nicamentesubrutinasy tres estructuras:secuencia, seleccin (if y switch) eiteracin(buclesforywhile), 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 muchoserrores de programacin.Surgi en la dcada de 1960, particularmente del trabajo deBhmy Jacopini,1y una famosa carta, La sentencia goto considerada perjudicial, deEdsger Dijkstraen 19682 y fue reforzado tericamente por elteorema del programa estructurado, y prcticamente por la aparicin de lenguajes comoALGOLcon adecuadas y ricasestructuras de control.ndice[ocultar] 1Orgenes de la programacin estructurada 2Historia 2.1Fundamentacin terica 2.2Debate 2.3Resultado 3Ventajas de la programacin estructurada 4Programacin estructurada de bajo nivel 5Lenguajes de programacin estructurada 6Nuevos paradigmas 7Referencias 8Bibliografa 9Vase tambin 10Enlaces externosOrgenes 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.Elteorema 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 losprogramasy aplicaciones posibles. Si bien loslenguajes de programacintienen un mayor repertorio deestructuras de control, stas pueden ser construidas mediante las tres bsicas citadas.Historia[editar]Fundamentacin terica[editar]Elteorema del programa estructuradoproporciona la base terica de la programacin estructurada. Seala que tres maneras de combinar programas son suficientes para expresar cualquierfuncin computable: secuencia, seleccin e iteracin. Esta observacin no se origin con el movimiento de la programacin estructurada. Estas estructuras son suficientes para describir elciclo de instruccinde unaunidad central de procesamiento, as como el funcionamiento de unamquina 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 porqueDijkstrahaba 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 deDijkstra,Robert W. Floyd,Tony HoareyyDavid 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 interesantepizcade noticias bajo las narices de los recalcitrantes programadores delenguaje ensambladorque 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.3Donald Knuthacept 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 1974Programacin 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 grafosycompiladoreshan 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 deIBMHarlan Millsaplicara su interpretacin de la teora de la programacin estructurada para el desarrollo de un sistema de indexacin para el archivo de investigacin delNew 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, comoFORTRAN,COBOLyBASIC, ahora las tienen.Ventajas de la programacin estructurada[editar]Ventajas de la programacin estructurada comparada con el modelo anterior (hoy llamado despectivamentecdigo 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 comowhile,repeat', forodo..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. Endiagrama NScajas azules y sus equivalentes endiagramas de flujo de controlUn 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 enPL/I- o la de llaves {...} deCy 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 unlenguaje de programacin procedimental. Algunos de los lenguajes utilizados inicialmente para programacin estructurada incluyen:ALGOL,Pascal,PL/IyAdapero la mayora de los nuevos lenguajes de programacin procedimentales desde entonces han incluido caractersticas para fomentar la programacin estructurada y a veces deliberadamente omiten caractersticas4 en un esfuerzo para hacer ms difcil laprogramacin no estructurada.Nuevos paradigmas[editar]Posteriormente a la programacin estructurada se han creado nuevos paradigmas tales como laprogramacin modular, laprogramacin 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 arribaBhm, Jacopini. "Flow diagrams, turing machines and languages with only two formation rules"Comm. ACM, 9(5):366-371, May 19662. Volver arribaEdsger 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 arribaPlauger, 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).ISBN978-0-13-721374-0.4. Volver arribaGOTO for exampleBibliografa[editar]1. Garca-Bermejo Giner, Jos Rafael (2 de 2008)."Programacin estructurada en C"(1 edicin). Pearson Prentice Hall.ISBN978-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.ISBN978-84-205-4246-1.3. Programacin estructurada II(1 ed. 4 imp. edicin). Enseanza Tcnica y Sistemas, S.A. 6 de 2000.ISBN978-84-85838-90-5.4. Pseudocdigos y programacin estructurada(1 edicin). Centro Tcnico Europeo de Enseanzas Profesionales. 2 de 1997.ISBN978-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.ISBN978-84-481-0557-0.3.8. PROGRAMACIN ESTRUCTURADA

La programacin estructurada es una teora de programacin que consiste en construir programas de fcil comprensin, es especialmente til, cuando se necesitan realizar correcciones o modificaciones despus de haber concluido un programa o aplicacin. Al utilizar la programacin estructurada, es mucho ms sencillo entender la codificacin del programa, que se habr hecho en diferentes secciones.Se basa en una metodologa de desarrollo de programas llamada refinamiento sucesivos: Se plantea una operacin como un todo y se divide en segmentos ms sencillos o de menor complejidad, una vez terminado todos los segmentos del programa, se procede a unificar las aplicaciones realizadas por el grupo de programadores. Si se ha utilizado adecuadamente la programacin estructurada, esta integracin debe ser sencilla y no presentar problemas al integrar la misma, y de presentar algn problema, ser rpidamente detectable para su correccin.La representacin grafica de la programacin estructurada se realiza a travs de diagramas de flujo, el cual representa el programa con sus entradas, procesos y salidas.La programacin estructurada propone segregar los procesos en estructuras lo ms simple posibles, las cuales se conocen como secuencia, seleccin e interaccin, que estn disponibles en todos los lenguajes modernos de programacin imperativa en forma de sentencias, combinando esquemas sencillos se pueden llegar a construir sistemas amplios y complejos pero de fcil entendimiento.La programacin estructurada es un mtodo disciplinado de escribir programas que sean claros, que se demuestre que sean correctos y fciles de modificar.La programacin estructurada consiste en dividir los programas en mdulos y se basa en el desarrollo de programas que van de lo general a lo particular, es decir, del conjunto al elemento, es decier de un todo a lo especfico.Para la solucin de un problema en particular, se inicia considerando las funciones que tiene que cumplir el programa en general y despus se va desmembrando estas funciones en subfunciones ms pequeas hasta llegar al caso ltimo o ms particular y que ya no se pueda subdividir en casos ms pequeos. Una vez que ya se tiene el programa desmembrado en de lo general a lo particular, se empieza a programar estas funciones pequeas, particulares o mdulos, de esta manera, siempre podremos construir nuevos mdulos o unidades insertando el nombre del mdulo donde corresponda y desarrollndolo a parte.la modificacin de los mdulos es ms fcil y se pueden referenciar cuantas veces se requiera, con lo que se ahorra tiempo en la programacin, un programa tiene un diseo estructurado si cumple las dos siguientes condiciones: El teorema de Estructura. Est debidamente documentadoEl teorema de Estructura dice que un programa cumple el teorema de estructura si y slo () si es propio y contiene nicamente las tres estructuras bsicas de control que son la secuencial, la alternativa y la repetitiva, un programa es propio si y slo si cumple: que tenga un solo punto de entrada y un solo punto de salida y que entre dos puntos de control del programa exista al menos un camino.La programacin estructurada es un estilo con el cual l se busca que el programador elabore programas sencillos y fciles de entender, la programacin estructurada hace uso de tres estructuras bsicas de control que son: Estructura Secuencial, Estructura Selectiva y la Estructura Repetitiva ( Iterativa)La programacin estructurada se basa un teorema fundamental, el cual afirma que cualquier programa, no importa el tipo de trabajo que ejecute, puede ser elaborado utilizando nicamente las tres estructuras bsicas.DEFINICIN DE LAS 3 ESTRUCTURAS BSICAS1. Estructura Secuencial: Indica que las instrucciones de un programa se ejecutan una despus de la otra, en el mismo orden en el cual aparecen en el programa. Se representa grficamente como una caja despus de otra, ambas con una sola entrada y una nica salida.

Las cajas A y B pueden ser definidas para ejecutar desde una simple instruccin hasta un mdulo o programa completo, siempre y cuando stos tambin 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:

En el diagrama de flujo anterior, C es una condicin que se evala; A es la accin 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.3. Estructura Repetitiva (Iterativa): Tambin llamada la estructura hacer mientras - que, corresponde a la ejecucin repetida de una instruccin mientras que se cumple una determinada condicin. El diagrama 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. Tambin tiene una sola entrada y una sola salida; igualmente A puede ser cualquier estructura bsica o conjunto de estructuras.

VENTAJAS DE LA PROGRAMACIN ESTRUCTURADACon la programacin estructurada, elaborar programas de computadora sigue siendo una labor que demanda esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este nuevo estilo podemos obtener las siguientes ventajas:1. Los programas son ms fciles de entender, un programa estructurado puede ser ledo en secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a otro en la lgica, lo cual es tpico de otros estilos de programacin.2. Se logra una reduccin del esfuerzo en las pruebas, el seguimiento de las fallas o depuracin (debugging) se facilita debido a la lgica ms visible, de tal forma que los errores se pueden detectar y corregir ms fcilmente.3. Se crean programas ms sencillos y ms rpidos.DIFERENCIAS CON LA PROGRAMACIN ESTRUCTURADA CON OTRO TIPO DE PROGRAMACINAunque 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 en 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:

Modelo mental anmalo. Nuestra imagen del mundo se apoya en los seres, a los que asignamos nombres sustantivos, mientras 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 gran envergadura.En la programacin orientada a objetos pura no deben utilizarse llamadas de subrutinas, nicamente mensajes, por ello, a veces recibe el nombre de programacin sin call, igual que la programacin estructurada se llama tambin programacin sin goto, sin embargo, no todos los lenguajes orientados a objetos prohben la instruccin call, permitiendo realizar programacin hbrida, imperativa y orientada a objetos a la vez.