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
