14 · 07 · 2021

Programación estructurada

La programación estructurada es una teoría orientada a mejorar la claridad, calidad y tiempo de desarrollo utilizando únicamente subrutinas o funciones. Basada en el teorema del programa estructurado propuesto por Böhm y Jacopini, ha permitido desarrollar software de fácil comprensión. ¿Repetimos? ¡No te asustes! Vamos a contarte de forma sencilla y rápida todo lo que debes saber sobre la programación estructurada.

La palabra programación, a veces, asusta. Y si le pones estructurada justo después, más. Pero en realidad, no es para tanto. Vamos a verlo. La programación estructurada es una corriente que nació con la vocación de facilitar la vida de los programadores, sobre todo cuando estos debían abordar fases de mejora posteriores a la creación del programa, y de ordenar la forma en la que se creaba cualquier tipo de programa. ¿Cualquiera, cualquiera? ¡Sí!

Para comprenderlo mejor, vamos a hacer un pequeño viaje en el tiempo. Nos vamos al año 1966, cuando Böhm y Jacopini proponen el teorema del programa estructurado, con el que demuestran que cualquier programa puede ser escrito utilizando solo tres instrucciones de control. Imagínate, ¡esto fue toda una revolución! Implicaba la construcción de programas más sencillos y más rápidos, en los que disminuía la complejidad de las pruebas y el testing para ponerlos en funcionamiento.

Avanzamos dos años más en el tiempo. En 1968, Edsger Dijkstra publicó un célebre artículo que impactó en la computación moderna: Go To Statement Considered Harmful. ¿Por qué es tan importante? Pues porque este científico holandés promovió activamente el uso de lenguajes de programación estructurada, fomentando la verificación formal de programas y la eliminación de la sentencia Goto. De hecho, Dijkstra participó en el comité que diseñó Algol 60, el primer lenguaje de programación estructurado.

La programación estructurada se convierte así, junto con la programación orientada a objetos, en uno de los paradigmas de programación más populares que ejecuta los lenguajes más potentes que seguro conoces, incluidos, entre otros, Java, C, Python y C++. 

Características y ventajas

El teorema del programa estructurado es la base teórica sobre la que se construyó esta nueva forma de programar, ya que nos da la característica fundamental de la programación estructurada. Postula que, simplemente con la combinación de tres estructuras básicas, es suficiente para expresar cualquier función computable. Parece sencillo, ¿verdad? En realidad, lo es y, precisamente por eso, se abre inmediatamente el debate entre los programadores que querían continuar con el sistema anterior y los que abrazaban estas nuevas estructuras de control con los ojos cerrados. ¿Quién crees que ganó?  

Vale, nadie fue declarado vencedor inmediatamente, pero sí que es cierto que ‘los Digital Workers de los años 70’ empezaban a ver poco a poco las grandes ventajas que ofrecía la programación estructurada sobre el código espagueti (los programas de computación antiguos que tenían una estructura de control de flujo compleja e incomprensible). Y, ¿qué ventajas eran esas?

  • Los programas desarrollados con la programación estructurada son más sencillos de entender, ya que tienen una estructura secuencial y desaparece la necesidad de rastrear los complejos saltos de líneas (propios de la sentencia Goto) dentro de los bloques de código para intentar comprender la lógica interna. 
  • Como consecuencia inmediata de lo anterior, otra ventaja es que los programas resultantes tendrán una estructura clara, gracias a que las sentencias están ligadas y relacionadas entre sí.
  • La fase de prueba y depuración de los programas se optimiza, ya que es mucho más sencillo hacer el seguimiento de los fallos y errores y, por tanto, detectarlos y corregirlos. 
  • El coste del mantenimiento de los programas que usan la programación estructurada es más reducido. ¿Por qué? Pues porque modificar o extender los programas es más fácil al estar formados por una estructura secuencial.
  • Al ser más sencillos los programas, son más rápidos de crear y los programadores aumentan su rendimiento. 

Las 3 estructuras básicas 

Ya nos ha quedado claro que la programación estructurada es una forma de programar más sencilla que se basa únicamente en la combinación de tres órdenes. Pero, ¿cuáles son esos tipos de estructuras de control que son capaces de expresarlo todo?

  1. Secuencia. La estructura secuencial es la que se da de forma natural en el lenguaje, porque las sentencias se ejecutan en el orden en el que aparecen en el programa, es decir, una detrás de la otra.
  2. Selección o condicional. La estructura condicional se basa en que una sentencia se ejecuta según el valor que se le atribuye a una variable booleana. ¡Un pequeño inciso! Una variable booleana es aquella que tiene dos valores posibles. Por tanto, esta estructura se puede ejecutar de dos formas distintas, dependiendo del valor que tenga su variable.
    Como apunte para los verdaderos amantes de la programación: para las estructuras condicionales o de selección, Python dispone de la sentencia if, que puede combinarse con elif y/o else.
  3. Iteración (ciclo o bucle). La estructura de repetición ejecuta una o un conjunto de sentencias siempre que una variable booleana sea verdadera. Para los bucles o iteraciones, los lenguajes de programación usan las estructuras while y for.

Y solamente con estas tres estructuras de control, ¡se pueden escribir todos los programas y aplicaciones posibles! ¡Todos! Si estás pensando que los lenguajes de programación tienen más estructuras, sí, es cierto, pero cualquiera de ellas puede ser construida gracias a estas tres básicas que hemos citado. ¿Comprendes ahora todo el revuelo que se formó con el teorema de la programación estructurada?

El artículo Programación estructurada fue escrito el 14 de julio de 2021 y guardado bajo la categoría Glosario. Puedes encontrar el post en el que hablamos sobre La programación estructurada es una teoría orientada a mejorar la claridad, calidad y tiempo de desarrollo utilizando únicamente subrutinas o funciones. bajo las siguientes etiquetas Programación.