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