Bucles PL/1 – DO WHILE & DO UNTIL
En PL/1 (Programming Language One), los bucles son estructuras fundamentales para controlar la repetición de instrucciones en un programa, como los bucles DO WHILE y DO UNTIL. Anteriormente se explico, cómo es la estructura básica de un programa PL/1, per a continuación, se profundizará en sus utilidades como los bucles, principales herramientas de trabajo.
Bucle DO WHILE
Este bucle ejecuta un conjunto de instrucciones mientras una condición especificada sea verdadera. Primero se evalúa la condición, y si es verdadera, se ejecutan las instrucciones dentro del bucle. Después de cada iteración, la condición se vuelve a evaluar. Si la condición es falsa al principio, las instrucciones dentro del bucle no se ejecutarán en absoluto.
DO WHILE (condición);
/* Instrucciones a ejecutar */
END;
Ejemplo de DO WHILE
Supongamos que queremos imprimir los primeros 5 números naturales utilizando un bucle DO WHILE
:
DECLARE i FIXED INIT(1);
DO WHILE (i <= 5);
PUT SKIP LIST(i);
i = i + 1;
END;
En este ejemplo, el bucle DO WHILE
se ejecutará mientras i
sea menor o igual a 5. En cada iteración, se imprime el valor de i
y luego se incrementa i
en 1.
Bucle DO UNTIL
A diferencia del bucle DO WHILE
, este bucle ejecuta un conjunto de instrucciones hasta que una condición especificada sea verdadera. Las instrucciones dentro del bucle se ejecutan al menos una vez, y luego la condición se evalúa. Si la condición es falsa, el bucle se repite; si es verdadera, el bucle se termina.
DO UNTIL (condición);
/* Instrucciones a ejecutar */
END;
Ejemplo de DO UNTIL
Supongamos que queremos imprimir los números pares hasta que se alcance un valor máximo utilizando un bucle DO UNTIL
:
DECLARE i FIXED INIT(0);
DECLARE max_value FIXED INIT(10);
DO UNTIL (i >= max_value);
i = i + 2;
PUT SKIP LIST(i);
END;
En este ejemplo, el bucle DO UNTIL
se ejecutará hasta que i
sea mayor o igual al valor máximo especificado. En cada iteración, se imprime el valor de i
, que se incrementa en 2 para imprimir solo números pares.
Diferencias entre los bucles DO WHILE y DO UNTIL
Aquí hay algunas diferencias clave entre los bucles DO WHILE
y DO UNTIL
en PL/1:
Condición de Ejecución
- En el bucle
DO WHILE
, las instrucciones dentro del bucle se ejecutan siempre y cuando la condición especificada sea verdadera al principio de cada iteración. Es decir, las instrucciones pueden no ejecutarse si la condición es falsa desde el principio. - En el bucle
DO UNTIL
, las instrucciones dentro del bucle se ejecutan al menos una vez, y luego se evalúa la condición. El bucle continuará ejecutándose hasta que la condición sea verdadera.
Evaluación de la Condición
- En el bucle
DO WHILE
, la condición se evalúa antes de que se ejecuten las instrucciones dentro del bucle. Si la condición es falsa al principio, las instrucciones dentro del bucle no se ejecutarán en absoluto. - En el bucle
DO UNTIL
, las instrucciones dentro del bucle se ejecutan primero y luego se evalúa la condición. Por lo tanto, las instrucciones dentro del bucle siempre se ejecutan al menos una vez.
Uso Típico
- El bucle
DO WHILE
se utiliza cuando se quiere ejecutar un conjunto de instrucciones mientras una condición se mantenga verdadera. - El bucle
DO UNTIL
se utiliza cuando se quiere ejecutar un conjunto de instrucciones hasta que una condición se vuelva verdadera.
Control de Flujo
- El bucle
DO WHILE
es más adecuado cuando la condición para continuar ejecutando las instrucciones está basada en un estado actual o una evaluación de una expresión que puede cambiar durante la ejecución del bucle. - El bucle
DO UNTIL
es más adecuado cuando se quiere garantizar que al menos una iteración del bucle se ejecute, y luego se verifica si se debe continuar basándose en la condición especificada.
En resumen, la diferencia fundamental radica en cuándo se evalúa la condición en relación con la ejecución de las instrucciones dentro del bucle y en cómo se manejan las situaciones en las que la condición puede ser verdadera o falsa.
Pingback: PL/1 - Estructura básica de un programa - Cobol Coder