Programación estructurada

paradigma de programación qu'usa estructures de control

La programación estructurada ye un paradigma de programación empobináu a ameyorar la claridá, calidá y tiempu de desenvolvimientu d'un programa d'ordenador recurriendo namái a subrutines y tres estructures básiques: secuencia, seleición (if y switch) y iteración (bucles for y while); coles mesmes, considérase innecesariu y contraproducente l'usu de la instrucción de tresferencia incondicional (GOTO), que podría conducir a códigu espagueti, muncho más malo de siguir y de caltener, y fonte de numberosos error de programación.

Ficha de softwareProgramación estructurada
Tipu programación y término de ciencias de la computación (es) Traducir
Cambiar los datos en Wikidata

Surdió na década de 1960, particularmente del trabayu de Böhm y Jacopini,[1] y un famosu escritu de 1968: «La sentencia goto, considerada perxudicial», d'Edsger Dijkstra[2]. Los sos postulaos veríense reforzaos, a nivel teóricu, pol teorema del programa estructurado y, a nivel práuticu, pola apaición de llinguaxes como ALGOL, dotáu d'estructures de control consistentes y bien formaes.

Oríxenes de la programación estructurada editar

A finales de los años 1970 surdió una nueva forma de programar que non solamente dexaba desenvolver programes fiables y eficientes, sinón qu'amás estos taben escritos de manera que se facilitaba la so comprensión en fases de meyora posteriores.

El teorema del programa estructurado, propuestu por Böhm-Jacopini, demuestra que tou programa puede escribise utilizando namái los trés instrucciones de control siguientes:

  • Secuencia.
  • Instrucción condicional.
  • Iteración (bucle d'instrucciones) con condición inicial.

Solamente con estos trés estructures pueden escribise tolos programes y aplicaciones posibles. Magar los llinguaxes de programación tienen un mayor repertoriu d'estructures de control, estes pueden ser construyíes por aciu los trés básiques citaes.

Historia editar

Fundamentación teórica editar

El teorema del programa estructurado apurre la base teórica de la programación estructurada. Señala que la combinación de los trés estructures básiques, secuencia, seleición y iteración, son abondes pa espresar cualesquier función computable. Esta observación nun s'anició col movimientu de la programación estructurada. Estes estructures son abondes pa describir el ciclu d'instrucción d'una unidá central de procesamientu, según el funcionamientu d'una máquina de Turing. Poro, un procesador siempres ta executando un programa estructurado» nesti sentíu, inclusive si les instrucciones que llee de la memoria nun son parte d'un programa estructurado. Sicasí, los autores usualmente acrediten la resultancia a un documentu escritu en 1966 por Böhm y Jacopini, posiblemente porque Dijkstra citara esti escritu. El teorema del programa estructurado nun respuende a cómo escribir y analizar un programa estructurado de manera útil. Estes temes fueron encetaos mientres la década de 1960 y principiu de los años 1970, con importantes contribuciones de Dijkstra, Robert W. Floyd, Tony Hoarey y David Gries.

Alderique editar

P. J. Plauger, unu de los primeros n'adoptar la programación estructurada, describió la so reacción col teorema del programa estructurado:

Nós los conversos ondeamos esta interesante plizca de noticies so les ñarices de los recalcitrantes programadores de llinguaxe ensamblador que caltuvieron trotiando alantre retorcigañaos bits de lóxica y diciendo, 'Te apuesto que nun puedes estructurar esto'. Nin la prueba por Böhm y Jacopini, nin los nuesos repitíos ésitos n'escribir códigu estructurado, llevar un día antes de lo que taben llistos pa convencese.[3]

Donald Knuth aceptó'l principiu de que los programes tienen d'escribise con demostratividad en mente, pero nun taba d'alcuerdu (y entá ta en desalcuerdu)[ensin referencies] cola supresión de la sentencia GOTO. Nel so escritu de 1974 «Programación estructurada con sentencies Goto», dio exemplos onde creía qu'un saltu direutu conduz a códigu más claru y más eficiente ensin sacrificar demostratividad. Knuth propunxo una restricción estructural más flexible: tien de ser posible establecer una diagrama de fluxu del programa con toles bifurcaciones escontra alantre a la izquierda, toles bifurcaciones escontra tras a la derecha, y ensin bifurcaciones que se crucien ente sigo. Munchos de los espertos en teoría de grafos y compiladores abogaron por dexar solu grafos de fluxu reducible[¿quién?][¿cuándo?].

Los teóricos de la programación estructurada ganáronse un aliáu importante na década de 1970 dempués de que l'investigador d'IBM Harlan Mills aplicara la so interpretación de la teoría de la programación estructurada pal desenvolvimientu d'un sistema de indexación pal archivu d'investigación del New York Times. El proyeutu foi un gran ésitu de la inxeniería, y los direutivos d'otres empreses citar en sofitu de l'adopción de la programación estructurada, anque Dijkstra criticó les maneres en que la interpretación de Mills difería de la obra publicada.

Habría qu'esperar a 1987 por que la cuestión de la programación estructurada llamara l'atención d'una revista de ciencia de la computación. Frank Rubin facer nesi añu, col escritu: «¿“La sentencia GOTO considerada dañible” considérase dañible?». A este siguiéronlu numberoses oxeciones, como una respuesta del propiu Dijkstra que criticaba duramente a Rubin y les concesiones qu'otru autores fixeron cuando lu respondieron.

Resultáu editar

A finales del sieglu XX, casi tolos científicos tán convencíos de que ye útil aprender y aplicar los conceutos de programación estructurada. Los llinguaxes de programación d'altu nivel que orixinalmente escarecíen d'estructures de programación, como FORTRAN, COBOL y BASIC, agora tener.

Ventayes de la programación estructurada editar

Ente les ventayes de la programación estructurada sobre'l modelu anterior (güei llamáu despectivamente códigu espagueti), cabo citar les siguientes:

  • Los programes son más fáciles d'entender, pueden ser lleíos de forma secuencial y nun hai necesidá de tener que rastrexar saltos de llinies (GOTO) dientro de los bloques de códigu pa intentar entender la lóxica interna.
  • La estructura de los programes ye clara, yá que les instrucciones tán más amestaes o rellacionaes ente sigo.
  • Optimízase l'esfuerciu nes fases de pruebes y depuración. El siguimientu de los fallos o errores del programa (debugging), y con él la so detección y correición, facilítase descomanadamente.
  • Amenórguense los costos de caltenimientu. Análogamente a la depuración, mientres la fase de caltenimientu, modificar o estender los programes resulta más fácil.
  • Los programes son más senciellos y más rápidos d'iguar.
  • Amóntase'l rendimientu de los programadores.

Llinguaxes de programación estructurada editar

Magar ye posible desenvolver la programación estructurada en cualquier llinguaxe de programación, resulta más aparente un llinguaxe de programación procedimental. Dalgunos de los llinguaxes utilizaos primeramente pa programación estructurada inclúin ALGOL, Pascal, PL/I y Ada, pero la mayoría de los nuevos llinguaxes de programación procedimentales dende entós incluyeron carauterístiques pa fomentar la programación estructurada y dacuando, deliberadamente, omiten carauterístiques[4] nun esfuerciu pa faer más difícil la programación non estructurada.

Nuevos paradigmes editar

Con posterioridá a la programación estructurada creáronse nuevos paradigmes tales como la programación modular, la programación empobinada a oxetos, la programación por capes y otres, según nueves redolaes de programación que faciliten la programación de grandes aplicaciones y sistemes.

Referencies editar

  1. Böhm, Jacopini. "Flow diagrams, turing machines and languages with only two formation rules" Comm. ACM, 9(5):366-371, May 1966
  2. Edsger Dijkstra (marzu de 1968). «Go To Statement Considered Harmful». Communications of the ACM 11 (3):  páxs. 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.». 
  3. |apellíos = Plauger |nome = P. J. |enllaceautor = P. J. Plauger |títulu = Programming on Purpose, Essays on Software Design |fecha = 12 de febreru de 1993 |editorial = Prentice-Hall |edición = 1 |isbn = 978-0-13-721374-0 |páxina = 25 | páxines = 256
  4. GOTO for example

Bibliografía editar

  1. García-Bermejo Giner, José Rafael (2008). Programación estructurada en
C, 1ª, Pearson Prentice Hall. ISBN 978-84-8322-423-6.
  1. Valls Ferrán, José María; Camacho Fernández, David (2004). Programación estructurada y algoritmos en Pascal, 1ª, Pearson Alhambra. ISBN 978-84-205-4246-1.
  2. (2000) Programación estructurada II, 1ª, Enseñanza Téunica y Sistemes, S.A.. ISBN 978-84-85838-90-5.
  3. (1997) Pseudocódigos y programación estructurada, 1ª, Centru Téunicu Européu d'Enseñances Profesionales. ISBN 978-84-8199-065-2.
  4. Sánchez Andrés, María Ángeles (1996). Programación estructurada y fundamentos de programación, 1ª, McGraw-Hill / Interamericana d'España, S.A.. ISBN 978-84-481-0557-0.

Ver tamién editar

Enllaces esternos editar