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
ENDDOSentè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
ENDDOSentè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
ENDSELECTExemples 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.')
ENDDOExplicació: 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.')
ENDDOExplicació: 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')
ENDDOExplicació: 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
ENDSELECTExplicació: 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')
ENDDOExercici 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')
ENDDOErrors 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
