En aquest tema, aprendrem sobre els subprogrames en Ada, que inclouen procediments i funcions. Els subprogrames són blocs de codi reutilitzables que permeten estructurar millor els programes, millorar la llegibilitat i facilitar el manteniment.

Continguts

  1. Introducció als Subprogrames
  2. Procediments
  3. Funcions
  4. Paràmetres en Subprogrames
  5. Exemples Pràctics
  6. Exercicis Pràctics

  1. Introducció als Subprogrames

Els subprogrames en Ada es divideixen en dues categories principals:

  • Procediments: No retornen cap valor.
  • Funcions: Retornen un valor.

Els subprogrames permeten modularitzar el codi, fent-lo més fàcil de llegir i mantenir.

  1. Procediments

Definició de Procediment

Un procediment és un subprograma que realitza una sèrie d'operacions però no retorna cap valor. La seva sintaxi és la següent:

procedure Nom_Procediment (Paràmetres) is
begin
    -- Cos del procediment
end Nom_Procediment;

Exemple de Procediment

procedure Salutacio is
begin
    Put_Line("Hola, món!");
end Salutacio;

Crida a un Procediment

Per cridar un procediment, simplement escrivim el seu nom seguit dels parèntesis:

begin
    Salutacio;
end;

  1. Funcions

Definició de Funció

Una funció és un subprograma que retorna un valor. La seva sintaxi és la següent:

function Nom_Funcio (Paràmetres) return Tipus_Retorn is
begin
    -- Cos de la funció
    return Valor;
end Nom_Funcio;

Exemple de Funció

function Suma (A, B : Integer) return Integer is
begin
    return A + B;
end Suma;

Crida a una Funció

Per cridar una funció, ho fem dins d'una expressió:

declare
    Resultat : Integer;
begin
    Resultat := Suma(5, 3);
    Put_Line(Integer'Image(Resultat));
end;

  1. Paràmetres en Subprogrames

Els subprogrames poden tenir paràmetres d'entrada, sortida o entrada/sortida. Els modes de paràmetres són:

  • in: Paràmetre d'entrada (per defecte).
  • out: Paràmetre de sortida.
  • in out: Paràmetre d'entrada/sortida.

Exemple amb Paràmetres

procedure Incrementar (X : in out Integer) is
begin
    X := X + 1;
end Incrementar;

Crida amb Paràmetres

declare
    Valor : Integer := 10;
begin
    Incrementar(Valor);
    Put_Line(Integer'Image(Valor)); -- Mostra 11
end;

  1. Exemples Pràctics

Procediment amb Paràmetres

procedure Mostrar_Salutacio (Nom : String) is
begin
    Put_Line("Hola, " & Nom & "!");
end Mostrar_Salutacio;

begin
    Mostrar_Salutacio("Ada");
end;

Funció amb Paràmetres

function Multiplicar (A, B : Integer) return Integer is
begin
    return A * B;
end Multiplicar;

declare
    Resultat : Integer;
begin
    Resultat := Multiplicar(4, 5);
    Put_Line(Integer'Image(Resultat)); -- Mostra 20
end;

  1. Exercicis Pràctics

Exercici 1: Procediment de Benvinguda

Escriu un procediment que mostri un missatge de benvinguda personalitzat.

procedure Benvinguda (Nom : String) is
begin
    Put_Line("Benvingut/da, " & Nom & "!");
end Benvinguda;

begin
    Benvinguda("Joan");
end;

Exercici 2: Funció de Factorial

Escriu una funció que calculi el factorial d'un nombre enter.

function Factorial (N : Integer) return Integer is
begin
    if N = 0 then
        return 1;
    else
        return N * Factorial(N - 1);
    end if;
end Factorial;

declare
    Resultat : Integer;
begin
    Resultat := Factorial(5);
    Put_Line(Integer'Image(Resultat)); -- Mostra 120
end;

Solucions

Solució Exercici 1

procedure Benvinguda (Nom : String) is
begin
    Put_Line("Benvingut/da, " & Nom & "!");
end Benvinguda;

begin
    Benvinguda("Joan");
end;

Solució Exercici 2

function Factorial (N : Integer) return Integer is
begin
    if N = 0 then
        return 1;
    else
        return N * Factorial(N - 1);
    end if;
end Factorial;

declare
    Resultat : Integer;
begin
    Resultat := Factorial(5);
    Put_Line(Integer'Image(Resultat)); -- Mostra 120
end;

Conclusió

En aquesta secció, hem après sobre els subprogrames en Ada, incloent procediments i funcions. Hem vist com definir-los, cridar-los i passar-hi paràmetres. Els subprogrames són una eina poderosa per modularitzar el codi i fer-lo més llegible i mantenible. En el proper mòdul, explorarem els tipus de dades avançats com arrays, registres i enumeracions.

© Copyright 2024. Tots els drets reservats