Programación estructurada

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 *[[bucle for|for]]* y *[[bucle while|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.

Surdió na década de 1960, particularmente del trabayu de Böhm y Jacopini, y un famosu escritu de 1968: «La sentencia goto, considerada perxudicial», d'Edsger Dijkstra. 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

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

### Fundamentación teórica

El teorema del programa estructurado apurre la base teórica de la programación estructurada. Señala que la combinación de les tres 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

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

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) 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.

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'otros autores fixeron cuando lu respondieron.

### Resultáu

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

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

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 nun esfuerciu pa faer más difícil la programación non estructurada.

## Nuevos paradigmes

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

## Bibliografía
# 
# 
# 
# 
# 

## Ver tamién
* Teorema del programa estructurado
* Diseñu estructurado
* Bloque de códigu
* Estructures de control
* Programación por procedimientos
* Programación modular
* Programación empobinada a oxetos

## Enllaces esternos
* Monografias.com: Programación Estructurada
* Exercicios resueltos de Programación Estructurada