En aquest tema, aprendrem sobre les construccions de bucle en el Llenguatge de Control (CL). Els bucles són una part fonamental de qualsevol llenguatge de programació, ja que permeten executar un bloc de codi repetidament fins que es compleixi una condició específica. En CL, tenim diverses maneres de crear bucles, cadascuna amb les seves pròpies característiques i usos.

Objectius del Tema

  • Comprendre la importància dels bucles en la programació.
  • Aprendre a utilitzar les construccions de bucle en CL.
  • Escriure i executar programes CL que utilitzin bucles.

Tipus de Bucles en CL

  1. Bucle DO

El bucle DO és una de les construccions de bucle més utilitzades en CL. Permet repetir un bloc de codi un nombre determinat de vegades o fins que es compleixi una condició.

Sintaxi

DO  VAR(&variable) FROM(start_value) TO(end_value) BY(step_value)
    /* Bloc de codi a repetir */
ENDDO

Exemple

PGM
    DCL VAR(&I) TYPE(*INT) LEN(4)
    DCL VAR(&SUM) TYPE(*INT) LEN(4) VALUE(0)

    DO  VAR(&I) FROM(1) TO(10) BY(1)
        CHGVAR VAR(&SUM) VALUE(&SUM + &I)
    ENDDO

    SNDPGMMSG MSG('La suma dels números de l'1 al 10 és ' *CAT &SUM)
ENDPGM

Explicació:

  • Declarem dues variables: &I per al comptador del bucle i &SUM per acumular la suma.
  • El bucle DO s'executa des de 1 fins a 10, incrementant &I en 1 cada vegada.
  • A cada iteració, s'afegeix el valor de &I a &SUM.
  • Finalment, es mostra un missatge amb el resultat de la suma.

  1. Bucle DOWHILE

El bucle DOWHILE repeteix un bloc de codi mentre una condició sigui certa.

Sintaxi

DOWHILE (condició)
    /* Bloc de codi a repetir */
ENDDO

Exemple

PGM
    DCL VAR(&I) TYPE(*INT) LEN(4) VALUE(1)
    DCL VAR(&FACTORIAL) TYPE(*INT) LEN(4) VALUE(1)

    DOWHILE (&I <= 5)
        CHGVAR VAR(&FACTORIAL) VALUE(&FACTORIAL * &I)
        CHGVAR VAR(&I) VALUE(&I + 1)
    ENDDO

    SNDPGMMSG MSG('El factorial de 5 és ' *CAT &FACTORIAL)
ENDPGM

Explicació:

  • Declarem dues variables: &I per al comptador del bucle i &FACTORIAL per acumular el resultat del factorial.
  • El bucle DOWHILE s'executa mentre &I sigui menor o igual a 5.
  • A cada iteració, es multiplica &FACTORIAL pel valor de &I i s'incrementa &I.
  • Finalment, es mostra un missatge amb el resultat del factorial de 5.

  1. Bucle DOUNTIL

El bucle DOUNTIL repeteix un bloc de codi fins que una condició sigui certa.

Sintaxi

DOUNTIL (condició)
    /* Bloc de codi a repetir */
ENDDO

Exemple

PGM
    DCL VAR(&I) TYPE(*INT) LEN(4) VALUE(1)
    DCL VAR(&SUM) TYPE(*INT) LEN(4) VALUE(0)

    DOUNTIL (&I > 10)
        CHGVAR VAR(&SUM) VALUE(&SUM + &I)
        CHGVAR VAR(&I) VALUE(&I + 1)
    ENDDO

    SNDPGMMSG MSG('La suma dels números de l'1 al 10 és ' *CAT &SUM)
ENDPGM

Explicació:

  • Declarem dues variables: &I per al comptador del bucle i &SUM per acumular la suma.
  • El bucle DOUNTIL s'executa fins que &I sigui major que 10.
  • A cada iteració, s'afegeix el valor de &I a &SUM i s'incrementa &I.
  • Finalment, es mostra un missatge amb el resultat de la suma.

Exercicis Pràctics

Exercici 1: Suma de Números Parells

Escriu un programa CL que sumi tots els números parells de l'1 al 20.

Solució

PGM
    DCL VAR(&I) TYPE(*INT) LEN(4) VALUE(2)
    DCL VAR(&SUM) TYPE(*INT) LEN(4) VALUE(0)

    DOWHILE (&I <= 20)
        CHGVAR VAR(&SUM) VALUE(&SUM + &I)
        CHGVAR VAR(&I) VALUE(&I + 2)
    ENDDO

    SNDPGMMSG MSG('La suma dels números parells de l'1 al 20 és ' *CAT &SUM)
ENDPGM

Exercici 2: Comptar Fins a 10

Escriu un programa CL que compti de l'1 al 10 i mostri cada número.

Solució

PGM
    DCL VAR(&I) TYPE(*INT) LEN(4) VALUE(1)

    DOUNTIL (&I > 10)
        SNDPGMMSG MSG('Número: ' *CAT &I)
        CHGVAR VAR(&I) VALUE(&I + 1)
    ENDDO
ENDPGM

Errors Comuns i Consells

  • Oblidar incrementar el comptador: Assegura't d'incrementar el comptador del bucle per evitar bucles infinits.
  • Condicions incorrectes: Revisa les condicions dels bucles per assegurar-te que són correctes i que el bucle s'executarà el nombre de vegades esperat.
  • Inicialització de variables: Assegura't que les variables utilitzades en els bucles estan correctament inicialitzades abans de començar el bucle.

Resum

En aquesta secció, hem après sobre les construccions de bucle en CL, incloent els bucles DO, DOWHILE i DOUNTIL. Hem vist exemples pràctics de com utilitzar aquests bucles i hem practicat amb exercicis per reforçar els conceptes apresos. Els bucles són una eina poderosa en la programació que ens permeten repetir blocs de codi de manera eficient i efectiva.

© Copyright 2024. Tots els drets reservats