El teorema (no se asusten) de la programación estructurada

(Este artículo forma parte del Curso de Programación en C)

He comprobado que el término programación estructurada se malinterpreta a menudo, incluso entre algunos programadores experimentados. No significa que utilicemos en el programa estructuras de datos (aunque podemos hacerlo), ni tampoco que usemos un lenguaje de programación estructurado (la mayoría permiten programar de forma desestructurada), ni mucho menos que seamos muy organizaditos a la hora de desarrollar nuestro programa (aunque es una cualidad deseable, sin duda).

El término programación estructurada se refiere, en realidad, a un conjunto de técnicas que han ido evolucionando desde los primeros trabajos del holandés E. Dijkstra. Estas técnicas aumentan la productividad del programador, reduciendo el tiempo requerido para escribir, verificar, depurar y mantener los programas.

Allá por mayo de 1966, Böhm y Jacopin demostraron que se puede escribir cualquier programa propio utilizando solo tres tipos de estructuras de control: la secuencial, la selectiva (o condicional) y la repetitiva. A esto se le llama Teorema de la programación estructurada, y define un programa propio como un programa que cumple tres características:

  • Posee un sólo punto de inicio y un sólo punto de fin
  • Existe al menos un camino que parte del inicio y llega hasta el fin pasando por todas las partes del programa
  • No existen bucles infinitos

Realmente, el trabajo de Dijkstra basado en este teorema fue revolucionario, porque lo que venía a decir es que, para construir programas más potentes y en menos tiempo, lo que había que hacer era simplificar las herramientas que se utilizaban para hacerlos, en lugar de complicarlas más. Este regreso a la simplicidad, unido a las técnicas de ingeniería del software, acabó con la crisis del software de los años 70.

Por lo tanto, los programas estructurados deben limitarse a usar tres estructuras:

  • Secuencial
  • Selectiva (o condicional)
  • Repetitiva

Vamos a estudiar cada estructura detenidamente y veremos cómo se representan mediante diagramas de flujo y pseudocódigo.

La estructura secuencial

La estructura secuencial no es ni más ni menos que aquélla en la que una acción sigue a otra (en secuencia). Esta es la estructura algorítmica básica, en la que las instrucciones se ejecutan una tras otra, en el mismo orden en el que fueron escritas.

La estructura secuencial, por lo tanto, es la más simple de las tres estructuras permitidas. A continuación vemos su representación mediante pseudocódigo:

inicio
   acción 1
   acción 2
   ...
   acción N
fin

Un ejemplo inofensivo

Vamos a escribir, como ejemplo, un algoritmo completamente secuencial que calcule la suma de dos números, A y B. Recuerde que, generalmente, los algoritmos se dividen en tres partes: entrada de datos, procesamiento de esos datos y salida de resultados.

algoritmo suma
variables
  A, B, suma son enteros
inicio
  leer (A)
  leer (B)
  suma = A + B
  escribir (suma)
fin

¿Y las otras estructuras?

Bien, no es bueno darse un empacho, sobre todo al principio. De las estructuras condicionales y repetitivas hablaremos en los próximos posts.

Categorías

Licencia

ClustrMaps