La construcción de Zahn en ciencias de la computación , también conocida como la "sentencia CASE de situación", fue una estructura propuesta para el flujo de control estructurado en lenguajes de programación de computadoras descrita por primera vez por Charles T. Zahn en 1974. [ 1 ] La construcción se describe principalmente en términos de una extensión de las construcciones de bucle para reconocer múltiples formas por las cuales un bucle podría terminar . Por ejemplo, un bucle de búsqueda podría terminar anticipadamente, cuando se encuentra el objetivo; o podría terminar después de que la búsqueda se haya completado sin éxito. La construcción de Zahn se puede usar para evitar GO TOsentencias al determinar qué caso se encontró. Zahn hace esto introduciendo un nuevo tipo de variable llamada indicador de situación en una construcción tipo CASE que rodea el bucle.
Donald Knuth , en su artículo "Programación estructurada con instrucciones Go To" [ 2 ] , describe dos formas de la construcción de Zahn de la siguiente manera:
repetir hasta que <situación 1> o ... o <situación n>: <lista de instrucciones 0> repetir; entonces <situación 1> => <lista de instrucciones 1>; ... <situación n> => <lista de sentencias n>; fi
y:
comenzar hasta <situación 1> o ... o <situación n>: <lista de instrucciones 0>; fin; entonces <situación 1> => <lista de instrucciones 1>; ... <situación n> => <lista de sentencias n>; fi
También debe haber una declaración para establecer un indicador de situación específico y salir del cuerpo de la estructura.
El siguiente ejemplo sencillo consiste en buscar un elemento concreto en una tabla bidimensional.
salir cuando se encuentre o falte; para I := 1 a N hacer para J := 1 a M hacer si tabla[I,J] = objetivo entonces encontrado; desaparecido; salidas encontrado: imprimir ("el elemento está en la tabla"); falta: imprimir ("el elemento no está en la tabla"); fin de salida ;Los bloques try-catch , utilizados en lenguajes de programación modernos para el manejo de excepciones , representan una extensión sustancial de la construcción de Zahn. La principal diferencia radica en que el alcance de las propuestas de Zahn se limitaba a bucles individuales dentro de un programa, mientras que las capacidades de manejo de excepciones a menudo permiten que estas se lancen desde lo más profundo de la pila de llamadas y se capturen en un punto más arriba en la misma. Dado que la construcción de Zahn es local a una rutina, puede implementarse de manera muy eficiente, sin necesidad de desenrollar la pila de llamadas.
Zahn implementó su declaración de caso de situación en su lenguaje SKOL. SKOL se implementó como un conjunto de macros para el preprocesador Fortran MORTRAN .
Referencias
- ↑ Zahn, CT "Una instrucción de control para la programación estructurada natural de arriba hacia abajo" presentada en el Simposio sobre Lenguajes de Programación, París, 1974.
- ↑ Knuth, DE "Programación estructurada con instrucciones Go To" Archivado el 23/10/2013 en Wayback Machine , Computing Surveys , Volumen 6, diciembre de 1974, página 275
Enlaces externos
- Zahn, CT, Control estructurado en lenguajes de programación, SLAC Pub-1530, enero de 1975
- Estructuras de control Archivadas el 8 de junio de 2011 en Wayback Machine definidas usando Scheme ; la construcción de Zahn es la última de la lista.
- La construcción de Zahn, archivada el 23/09/2006 en la Wayback Machine , se define utilizando instrucciones GOTO en Forth.
- Manual de referencia del lenguaje de programación SKOL
- Flujo de control