Les enumeracions són un tipus de dades en Ada que permeten definir un conjunt de valors simbòlics. Aquest tipus de dades és útil per representar valors que tenen un nombre limitat d'opcions, com els dies de la setmana, els estats d'un semàfor, etc. En aquest tema, aprendrem com definir i utilitzar enumeracions en Ada.
Definició d'Enumeracions
Per definir una enumeració en Ada, utilitzem la paraula clau type
seguida del nom del tipus i la llista de valors possibles entre parèntesis.
Exemple Bàsic
En aquest exemple, hem definit un tipus d'enumeració anomenat Dia_De_La_Setmana
que pot tenir un dels set valors: Dilluns
, Dimarts
, Dimecres
, Dijous
, Divendres
, Dissabte
o Diumenge
.
Ús d'Enumeracions
Un cop hem definit una enumeració, podem declarar variables d'aquest tipus i assignar-los valors.
Exemple d'Ús
procedure Exemple_Enumeracions is type Dia_De_La_Setmana is (Dilluns, Dimarts, Dimecres, Dijous, Divendres, Dissabte, Diumenge); Avui : Dia_De_La_Setmana; begin Avui := Dimecres; if Avui = Dimecres then Put_Line("Avui és dimecres!"); end if; end Exemple_Enumeracions;
En aquest exemple, hem declarat una variable Avui
del tipus Dia_De_La_Setmana
i li hem assignat el valor Dimecres
. Després, hem utilitzat una estructura de control if
per comprovar el valor de Avui
.
Operacions amb Enumeracions
Ada permet realitzar diverses operacions amb enumeracions, com ara la comparació i la iteració.
Comparació
Les enumeracions es poden comparar utilitzant els operadors de comparació estàndard (=
, /=
, <
, >
, <=
, >=
).
Exemple de Comparació
procedure Comparacio_Enumeracions is type Semafor is (Verd, Groc, Vermell); Estat : Semafor := Groc; begin if Estat = Groc then Put_Line("El semàfor està en groc."); elsif Estat < Groc then Put_Line("El semàfor està en verd."); else Put_Line("El semàfor està en vermell."); end if; end Comparacio_Enumeracions;
Iteració
Podem iterar sobre els valors d'una enumeració utilitzant un bucle for
.
Exemple d'Iteració
procedure Iteracio_Enumeracions is type Dia_De_La_Setmana is (Dilluns, Dimarts, Dimecres, Dijous, Divendres, Dissabte, Diumenge); begin for Dia in Dia_De_La_Setmana loop Put_Line(Dia'Image); end loop; end Iteracio_Enumeracions;
En aquest exemple, el bucle for
recorre tots els valors de l'enumeració Dia_De_La_Setmana
i imprimeix cadascun d'ells.
Exercicis Pràctics
Exercici 1
Defineix una enumeració anomenada Estacio_De_L'Any
amb els valors Primavera
, Estiu
, Tardor
i Hivern
. Declara una variable d'aquest tipus i assigna-li el valor Estiu
. Imprimeix un missatge que indiqui quina estació és.
Solució
procedure Exercici_Enumeracions_1 is type Estacio_De_L_Any is (Primavera, Estiu, Tardor, Hivern); Estacio : Estacio_De_L_Any := Estiu; begin Put_Line("L'estació actual és: " & Estacio'Image); end Exercici_Enumeracions_1;
Exercici 2
Defineix una enumeració anomenada Nivell_De_Seguretat
amb els valors Baix
, Mig
i Alt
. Escriu un procediment que prengui una variable d'aquest tipus com a paràmetre i imprimeixi un missatge diferent per a cada nivell de seguretat.
Solució
procedure Exercici_Enumeracions_2(Nivell : in Nivell_De_Seguretat) is type Nivell_De_Seguretat is (Baix, Mig, Alt); begin case Nivell is when Baix => Put_Line("Nivell de seguretat baix."); when Mig => Put_Line("Nivell de seguretat mig."); when Alt => Put_Line("Nivell de seguretat alt."); end case; end Exercici_Enumeracions_2;
Resum
En aquest tema, hem après com definir i utilitzar enumeracions en Ada. Les enumeracions són útils per representar valors simbòlics amb un nombre limitat d'opcions. Hem vist com declarar variables d'enumeració, com comparar-les i com iterar sobre els seus valors. També hem practicat amb alguns exercicis per reforçar els conceptes apresos. En el proper tema, explorarem els tipus d'accés i punteres en Ada.
Curs de Programació en Ada
Mòdul 1: Introducció a Ada
Mòdul 2: Conceptes Bàsics
- Variables i Tipus de Dades
- Operadors i Expressions
- Estructures de Control
- Bucles en Ada
- Subprogrames: Procediments i Funcions
Mòdul 3: Tipus de Dades Avançats
Mòdul 4: Programació Modular
Mòdul 5: Concurrència i Programació en Temps Real
Mòdul 6: Temes Avançats
Mòdul 7: Millors Pràctiques i Optimització
- Estil de Codi i Millors Pràctiques
- Depuració i Proves
- Optimització del Rendiment
- Consideracions de Seguretat