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

type Dia_De_La_Setmana is (Dilluns, Dimarts, Dimecres, Dijous, Divendres, Dissabte, Diumenge);

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.

© Copyright 2024. Tots els drets reservats