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

while condició loop
    -- codi a repetir
end loop;

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

for variable in rang loop
    -- codi a repetir
end loop;

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

loop
    -- codi a repetir
    exit when condició;
end loop;

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.

© Copyright 2024. Tots els drets reservats