En este tema, aprenderemos sobre los constructos de bucle en el Lenguaje de Control (CL). Los bucles son fundamentales en la programación, ya que permiten ejecutar un bloque de código repetidamente bajo ciertas condiciones. En CL, los constructos de bucle más comunes son DO y DOWHILE.

Objetivos de Aprendizaje

  • Comprender la sintaxis y el uso de los bucles DO y DOWHILE.
  • Escribir programas CL que utilicen bucles para realizar tareas repetitivas.
  • Identificar y corregir errores comunes en la implementación de bucles.

  1. Bucle DO

El bucle DO en CL se utiliza para ejecutar un bloque de código un número específico de veces. La sintaxis básica es la siguiente:

DO  VAR(&variable) FROM(start) TO(end) BY(step)
    /* Código a ejecutar */
ENDDO

Ejemplo Práctico

Supongamos que queremos imprimir los números del 1 al 5. El código sería:

DCL VAR(&i) TYPE(*INT) LEN(4)
DO  VAR(&i) FROM(1) TO(5) BY(1)
    SNDPGMMSG  MSG('Número: ' *CAT &i)
ENDDO

Explicación del Código

  • DCL VAR(&i) TYPE(*INT) LEN(4): Declara una variable entera &i.
  • DO VAR(&i) FROM(1) TO(5) BY(1): Inicia un bucle que va desde 1 hasta 5, incrementando &i en 1 en cada iteración.
  • SNDPGMMSG MSG('Número: ' *CAT &i): Envía un mensaje con el valor actual de &i.
  • ENDDO: Finaliza el bucle.

  1. Bucle DOWHILE

El bucle DOWHILE ejecuta un bloque de código mientras una condición sea verdadera. La sintaxis básica es:

DOWHILE  (condición)
    /* Código a ejecutar */
ENDDO

Ejemplo Práctico

Supongamos que queremos imprimir los números del 1 al 5 usando DOWHILE. El código sería:

DCL VAR(&i) TYPE(*INT) LEN(4)
CHGVAR VAR(&i) VALUE(1)
DOWHILE  (&i <= 5)
    SNDPGMMSG  MSG('Número: ' *CAT &i)
    CHGVAR VAR(&i) VALUE(&i + 1)
ENDDO

Explicación del Código

  • DCL VAR(&i) TYPE(*INT) LEN(4): Declara una variable entera &i.
  • CHGVAR VAR(&i) VALUE(1): Inicializa &i con el valor 1.
  • DOWHILE (&i <= 5): Inicia un bucle que se ejecuta mientras &i sea menor o igual a 5.
  • SNDPGMMSG MSG('Número: ' *CAT &i): Envía un mensaje con el valor actual de &i.
  • CHGVAR VAR(&i) VALUE(&i + 1): Incrementa &i en 1.
  • ENDDO: Finaliza el bucle.

Ejercicios Prácticos

Ejercicio 1: Bucle DO

Escribe un programa CL que imprima los números del 10 al 1 en orden descendente.

Solución

DCL VAR(&i) TYPE(*INT) LEN(4)
DO  VAR(&i) FROM(10) TO(1) BY(-1)
    SNDPGMMSG  MSG('Número: ' *CAT &i)
ENDDO

Ejercicio 2: Bucle DOWHILE

Escribe un programa CL que imprima los números pares del 2 al 10.

Solución

DCL VAR(&i) TYPE(*INT) LEN(4)
CHGVAR VAR(&i) VALUE(2)
DOWHILE  (&i <= 10)
    SNDPGMMSG  MSG('Número: ' *CAT &i)
    CHGVAR VAR(&i) VALUE(&i + 2)
ENDDO

Errores Comunes y Consejos

Error 1: Bucle Infinito

Un error común es crear un bucle infinito, donde la condición nunca se vuelve falsa. Asegúrate de que la variable de control se actualice correctamente dentro del bucle.

Error 2: Condición Incorrecta

Verifica que la condición del bucle sea correcta. Un error en la condición puede hacer que el bucle no se ejecute o se ejecute más veces de lo esperado.

Consejo: Depuración

Utiliza mensajes de depuración (SNDPGMMSG) dentro del bucle para verificar el valor de las variables en cada iteración. Esto te ayudará a identificar y corregir errores más fácilmente.

Conclusión

En esta sección, hemos aprendido sobre los constructos de bucle DO y DOWHILE en CL. Estos constructos son esenciales para realizar tareas repetitivas de manera eficiente. Asegúrate de practicar los ejemplos y ejercicios proporcionados para consolidar tu comprensión. En el próximo tema, exploraremos el manejo de errores en CL.

© Copyright 2024. Todos los derechos reservados