Teorema de Boehm-Jacopini

El  teorema de Boehm -Jacopini  es una disposición de la programación estructurada , según la cual cualquier algoritmo ejecutable se puede convertir a una forma estructurada, es decir, a tal forma cuando el curso de su ejecución se determina solo con la ayuda de tres estructuras de control: secuencial ( secuencia inglesa  ), ramificación (selección inglesa) y repeticiones o ciclos (iteración inglesa).

1. En una estructura secuencial , las instrucciones se ejecutan en el orden en que están escritas en el programa , es decir, una tras otra.

Subrutina 1 /* ejecución secuencial de las instrucciones 1, 2 ..N…...*/ Instrucción 1;
instrucción 2;
...
Instrucción N;
Fin de la Subrutina 1.

2. En la estructura de bifurcación , la secuencia de ejecución de las instrucciones depende de una condición dada, la mayoría de las veces una variable lógica .

Subrutina 2 /* bifurcaciones - Seleccionar instrucción según condición */
Si la condición es 1 entonces Instrucción 1; /* se ejecuta si la condición 1 es verdadera */
Si la condición 2 entonces la Instrucción 2; /* se ejecuta si la condición 2 es verdadera */
... De lo
contrario Instrucción N; /* se ejecuta si ninguna de las condiciones es verdadera */ .
Fin del Subprograma 2.

3 . En los bucles , las declaraciones se repiten hasta que cambia alguna condición, como el valor de una variable booleana.

Subrutina 3 /* Bucle */
Mientras la condición N ejecuta la Instrucción N /* El bucle se repite hasta que la condición N sea verdadera */
Instrucción N + 1 /* Salir del bucle cuando se viola la condición N */
Fin de la Subrutina 3

El teorema fue formulado y probado por los matemáticos italianos Corrado Böhm y Giuseppe Jacopini en su artículo de 1966 [1] . El artículo también describe métodos para convertir algoritmos no estructurados en algoritmos estructurados utilizando como ejemplo el lenguaje de programación P′′ creado por Boehm .

2 años después de la publicación del teorema, en 1968 Edsger Dijkstra publicó un artículo "Go To Statement Considered Harmful" [2] , en el que criticaba el uso del operador GOTO y se pronunciaba a favor de mejorar el estilo del código del programa a través de la uso de estructuras de control y el rechazo de otras instrucciones, que controlan el curso del algoritmo.

El teorema estructural de Boehm-Jacopini no fue el comienzo de la programación estructural. Este teorema es un enunciado científico utilizado por Dijkstra para fundamentar su idea de utilizar únicamente estructuras de control en los programas: estructuras secuenciales, bifurcaciones y bucles, y nada más [3] .

Notas

  1. Böhm, Corrado; y Giuseppe Jacopini. Diagramas de flujo, máquinas de Turing y lenguajes con solo dos reglas de formación  (inglés)  // Comunicaciones de la ACM  : revista. - 1966. - Mayo ( vol. 9 , no. 5 ). - pág. 366-371 . -doi : 10.1145/ 355592.365646 . Archivado desde el original el 5 de marzo de 2016.
  2. Dijkstra, Edsger. Ir a Declaración Considerada Dañina  // Comunicaciones de la ACM  :  diario. - 1968. - vol. 11 , núm. 3 . - pág. 147-148 . -doi : 10.1145/ 362929.362947 . Copia archivada . Consultado el 3 de julio de 2007. Archivado desde el original el 3 de julio de 2007.
  3. Avacheva T. G., Prutskov A. V. Visión moderna del concepto de programación estructurada  // Cloud of Science. - 2019. - T. 6 , N º 4 . Archivado desde el original el 7 de noviembre de 2019.