Les sentències condicionals són una part fonamental de qualsevol llenguatge de programació, incloent-hi el Llenguatge de Control (CL). Aquestes sentències permeten que el programa prengui decisions basades en certes condicions, executant diferents blocs de codi segons si les condicions es compleixen o no.
Conceptes Clau
- Condicions: Expressions que avaluen a cert o fals.
- Sentències IF: Executen un bloc de codi si una condició és certa.
- Sentències ELSE: Executen un bloc de codi si la condició de l'IF és falsa.
- Sentències ELSEIF: Permeten avaluar múltiples condicions en seqüència.
- Sentències SELECT: Utilitzades per avaluar una variable contra múltiples valors possibles.
Sintaxi Bàsica
Sentència IF
La sentència IF és la més bàsica de les sentències condicionals. La seva sintaxi és la següent:
Sentència ELSE
La sentència ELSE s'utilitza conjuntament amb IF per executar un bloc de codi alternatiu si la condició de l'IF és falsa:
IF (condició) THEN(DO) // Bloc de codi a executar si la condició és certa ELSE(DO) // Bloc de codi a executar si la condició és falsa ENDDO
Sentència ELSEIF
La sentència ELSEIF permet avaluar múltiples condicions en seqüència:
IF (condició1) THEN(DO) // Bloc de codi a executar si la condició1 és certa ELSEIF (condició2) THEN(DO) // Bloc de codi a executar si la condició2 és certa ELSE(DO) // Bloc de codi a executar si cap de les condicions anteriors és certa ENDDO
Sentència SELECT
La sentència SELECT és útil quan es vol avaluar una variable contra múltiples valors possibles:
SELECT WHEN (condició1) THEN(DO) // Bloc de codi a executar si la condició1 és certa ENDDO WHEN (condició2) THEN(DO) // Bloc de codi a executar si la condició2 és certa ENDDO OTHERWISE (DO) // Bloc de codi a executar si cap de les condicions anteriors és certa ENDDO ENDSELECT
Exemples Pràctics
Exemple 1: Sentència IF
DCL VAR(&AGE) TYPE(*DEC) LEN(3 0) CHGVAR VAR(&AGE) VALUE(25) IF (&AGE >= 18) THEN(DO) SNDPGMMSG MSG('Ets major d’edat.') ENDDO
Explicació: Aquest programa declara una variable &AGE
i li assigna el valor 25. Si l'edat és 18 o més, envia un missatge indicant que la persona és major d’edat.
Exemple 2: Sentència IF-ELSE
DCL VAR(&AGE) TYPE(*DEC) LEN(3 0) CHGVAR VAR(&AGE) VALUE(16) IF (&AGE >= 18) THEN(DO) SNDPGMMSG MSG('Ets major d’edat.') ELSE(DO) SNDPGMMSG MSG('Ets menor d’edat.') ENDDO
Explicació: Aquest programa declara una variable &AGE
i li assigna el valor 16. Si l'edat és 18 o més, envia un missatge indicant que la persona és major d’edat. Si no, envia un missatge indicant que la persona és menor d’edat.
Exemple 3: Sentència ELSEIF
DCL VAR(&SCORE) TYPE(*DEC) LEN(3 0) CHGVAR VAR(&SCORE) VALUE(85) IF (&SCORE >= 90) THEN(DO) SNDPGMMSG MSG('Excel·lent') ELSEIF (&SCORE >= 75) THEN(DO) SNDPGMMSG MSG('Bé') ELSEIF (&SCORE >= 50) THEN(DO) SNDPGMMSG MSG('Suficient') ELSE(DO) SNDPGMMSG MSG('Insuficient') ENDDO
Explicació: Aquest programa declara una variable &SCORE
i li assigna el valor 85. Avaluarà la puntuació i enviarà un missatge corresponent a la categoria de la puntuació.
Exemple 4: Sentència SELECT
DCL VAR(&DAY) TYPE(*CHAR) LEN(10) CHGVAR VAR(&DAY) VALUE('Dilluns') SELECT WHEN (&DAY = 'Dilluns') THEN(DO) SNDPGMMSG MSG('Avui és Dilluns') ENDDO WHEN (&DAY = 'Dimarts') THEN(DO) SNDPGMMSG MSG('Avui és Dimarts') ENDDO OTHERWISE (DO) SNDPGMMSG MSG('Avui no és Dilluns ni Dimarts') ENDDO ENDSELECT
Explicació: Aquest programa declara una variable &DAY
i li assigna el valor 'Dilluns'. Avaluarà el dia i enviarà un missatge corresponent al dia de la setmana.
Exercicis Pràctics
Exercici 1
Escriu un programa CL que declari una variable &TEMP
per a la temperatura. Si la temperatura és superior a 30 graus, envia un missatge que digui "Fa calor". Si és inferior a 10 graus, envia un missatge que digui "Fa fred". En cas contrari, envia un missatge que digui "Temperatura agradable".
Solució:
DCL VAR(&TEMP) TYPE(*DEC) LEN(3 0) CHGVAR VAR(&TEMP) VALUE(25) IF (&TEMP > 30) THEN(DO) SNDPGMMSG MSG('Fa calor') ELSEIF (&TEMP < 10) THEN(DO) SNDPGMMSG MSG('Fa fred') ELSE(DO) SNDPGMMSG MSG('Temperatura agradable') ENDDO
Exercici 2
Escriu un programa CL que declari una variable &GRADE
per a una nota. Si la nota és 90 o més, envia un missatge que digui "A". Si és 80 o més però menys de 90, envia un missatge que digui "B". Si és 70 o més però menys de 80, envia un missatge que digui "C". Si és 60 o més però menys de 70, envia un missatge que digui "D". En cas contrari, envia un missatge que digui "F".
Solució:
DCL VAR(&GRADE) TYPE(*DEC) LEN(3 0) CHGVAR VAR(&GRADE) VALUE(85) IF (&GRADE >= 90) THEN(DO) SNDPGMMSG MSG('A') ELSEIF (&GRADE >= 80) THEN(DO) SNDPGMMSG MSG('B') ELSEIF (&GRADE >= 70) THEN(DO) SNDPGMMSG MSG('C') ELSEIF (&GRADE >= 60) THEN(DO) SNDPGMMSG MSG('D') ELSE(DO) SNDPGMMSG MSG('F') ENDDO
Errors Comuns i Consells
- Oblidar l'ENDDO: Cada bloc DO ha de tancar-se amb un ENDDO.
- Condicions Incorrectes: Assegura't que les condicions estan correctament formulades i que les variables tenen els valors esperats.
- Missatges Clarificadors: Utilitza missatges clars i descriptius per facilitar la depuració i la comprensió del codi.
Conclusió
Les sentències condicionals són essencials per a la presa de decisions en els programes CL. Amb les sentències IF, ELSE, ELSEIF i SELECT, pots controlar el flux del teu programa de manera efectiva. Practica amb els exemples i exercicis proporcionats per dominar l'ús de les sentències condicionals en CL.
Curs de CL (Llenguatge de Control)
Mòdul 1: Introducció al CL
- Què és el Llenguatge de Control?
- Configuració del Teu Entorn
- Sintaxi i Estructura Bàsiques
- Escrivint el Teu Primer Programa CL
Mòdul 2: Comandes Bàsiques de CL
- Introducció a les Comandes de CL
- Comandes de Gestió de Fitxers
- Comandes de Gestió de Treballs
- Comandes de Gestió del Sistema
Mòdul 3: Variables i Expressions
- Comprenent les Variables
- Definint i Utilitzant Variables
- Expressions i Operadors
- Manipulació de Cadenes
Mòdul 4: Estructures de Control
Mòdul 5: Comandes Avançades de CL
- Operacions Avançades de Fitxers
- Programació Avançada de Treballs
- Comandes de Configuració del Sistema
- Seguretat i Permisos