Les estructures de control són fonamentals en qualsevol llenguatge de programació, ja que permeten controlar el flux d'execució del programa. En Ada, les estructures de control inclouen condicions, seleccions i iteracions. En aquesta secció, explorarem les estructures de control més comunes en Ada.
Continguts
Condicionals
Els condicionals permeten executar blocs de codi basats en la verificació de condicions. En Ada, els condicionals es gestionen amb les instruccions if, elsif i else.
Sintaxi
if condició then
-- codi a executar si la condició és certa
elsif altra_condició then
-- codi a executar si l'altra condició és certa
else
-- codi a executar si cap de les condicions anteriors és certa
end if;Exemple
procedure Condicional_Exemple is
A, B : Integer := 10;
begin
if A > B then
Put_Line("A és més gran que B");
elsif A < B then
Put_Line("A és més petit que B");
else
Put_Line("A és igual a B");
end if;
end Condicional_Exemple;Estructures de Selecció
Les estructures de selecció permeten triar entre múltiples opcions. En Ada, això es fa amb l'instrucció case.
Sintaxi
case expressió is
when valor1 =>
-- codi a executar si l'expressió és igual a valor1
when valor2 =>
-- codi a executar si l'expressió és igual a valor2
when others =>
-- codi a executar si l'expressió no coincideix amb cap dels valors anteriors
end case;Exemple
procedure Seleccio_Exemple is
Dia : Integer := 3;
begin
case Dia is
when 1 =>
Put_Line("Dilluns");
when 2 =>
Put_Line("Dimarts");
when 3 =>
Put_Line("Dimecres");
when others =>
Put_Line("Altres dies");
end case;
end Seleccio_Exemple;Bucles
Els bucles permeten repetir blocs de codi diverses vegades. Ada ofereix diverses estructures de bucle, incloent while, for i loop.
Bucle while
El bucle while repeteix un bloc de codi mentre una condició sigui certa.
Sintaxi
Exemple
procedure Bucle_While_Exemple is
I : Integer := 0;
begin
while I < 5 loop
Put_Line("I és: " & Integer'Image(I));
I := I + 1;
end loop;
end Bucle_While_Exemple;Bucle for
El bucle for repeteix un bloc de codi un nombre determinat de vegades.
Sintaxi
Exemple
procedure Bucle_For_Exemple is
begin
for I in 1 .. 5 loop
Put_Line("I és: " & Integer'Image(I));
end loop;
end Bucle_For_Exemple;Bucle loop
El bucle loop és un bucle indefinit que es pot trencar amb l'instrucció exit.
Sintaxi
Exemple
procedure Bucle_Loop_Exemple is
I : Integer := 0;
begin
loop
Put_Line("I és: " & Integer'Image(I));
I := I + 1;
exit when I = 5;
end loop;
end Bucle_Loop_Exemple;Exemples Pràctics
Exemple Combinat
procedure Exemple_Combinat is
A, B : Integer := 10;
Dia : Integer := 3;
begin
-- Condicional
if A > B then
Put_Line("A és més gran que B");
elsif A < B then
Put_Line("A és més petit que B");
else
Put_Line("A és igual a B");
end if;
-- Selecció
case Dia is
when 1 =>
Put_Line("Dilluns");
when 2 =>
Put_Line("Dimarts");
when 3 =>
Put_Line("Dimecres");
when others =>
Put_Line("Altres dies");
end case;
-- Bucle while
I : Integer := 0;
while I < 5 loop
Put_Line("I és: " & Integer'Image(I));
I := I + 1;
end loop;
-- Bucle for
for J in 1 .. 5 loop
Put_Line("J és: " & Integer'Image(J));
end loop;
-- Bucle loop
K : Integer := 0;
loop
Put_Line("K és: " & Integer'Image(K));
K := K + 1;
exit when K = 5;
end loop;
end Exemple_Combinat;Exercicis
Exercici 1
Escriu un programa que demani a l'usuari un nombre i mostri si és positiu, negatiu o zero.
Solució
with Ada.Text_IO; use Ada.Text_IO;
procedure Exercici_1 is
Nombre : Integer;
begin
Put("Introdueix un nombre: ");
Get(Nombre);
if Nombre > 0 then
Put_Line("El nombre és positiu");
elsif Nombre < 0 then
Put_Line("El nombre és negatiu");
else
Put_Line("El nombre és zero");
end if;
end Exercici_1;Exercici 2
Escriu un programa que mostri els dies de la setmana utilitzant una estructura de selecció case.
Solució
with Ada.Text_IO; use Ada.Text_IO;
procedure Exercici_2 is
Dia : Integer;
begin
Put("Introdueix un nombre (1-7) per a un dia de la setmana: ");
Get(Dia);
case Dia is
when 1 =>
Put_Line("Dilluns");
when 2 =>
Put_Line("Dimarts");
when 3 =>
Put_Line("Dimecres");
when 4 =>
Put_Line("Dijous");
when 5 =>
Put_Line("Divendres");
when 6 =>
Put_Line("Dissabte");
when 7 =>
Put_Line("Diumenge");
when others =>
Put_Line("Nombre invàlid");
end case;
end Exercici_2;Exercici 3
Escriu un programa que mostri els nombres de l'1 al 10 utilitzant un bucle for.
Solució
with Ada.Text_IO; use Ada.Text_IO;
procedure Exercici_3 is
begin
for I in 1 .. 10 loop
Put_Line("Nombre: " & Integer'Image(I));
end loop;
end Exercici_3;Conclusió
En aquesta secció, hem explorat les estructures de control en Ada, incloent condicionals, estructures de selecció i bucles. Hem vist exemples pràctics i hem proporcionat exercicis per reforçar els conceptes apresos. Les estructures de control són essencials per escriure programes dinàmics i flexibles, i dominar-les és crucial per a qualsevol programador.
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
