Els registres en Ada són estructures de dades que permeten agrupar diferents tipus de dades sota un mateix nom. Són similars a les estructures (structs) en altres llenguatges de programació com C o C++. Els registres són molt útils per organitzar dades relacionades i facilitar la seva manipulació.

Continguts

Definició de Registres

Un registre és una col·lecció de camps, on cada camp pot ser de diferent tipus. La sintaxi per definir un registre és la següent:

type Nom_Del_Registre is record
    Camp1 : Tipus1;
    Camp2 : Tipus2;
    ...
end record;

Declaració de Registres

Per declarar un registre, primer hem de definir el tipus de registre i després podem declarar variables d'aquest tipus. Aquí teniu un exemple:

type Persona is record
    Nom    : String(1..50);
    Edat   : Integer;
    Alçada : Float;
end record;

-- Declaració d'una variable del tipus Persona
variable_persona : Persona;

Accés als Camps del Registre

Per accedir als camps d'un registre, utilitzem el nom de la variable seguit d'un punt i el nom del camp:

variable_persona.Nom := "Joan";
variable_persona.Edat := 30;
variable_persona.Alçada := 1.75;

Inicialització de Registres

Podem inicialitzar un registre en el moment de la seva declaració utilitzant una llista d'assignació:

variable_persona : Persona := (Nom => "Joan", Edat => 30, Alçada => 1.75);

Exemple Pràctic

A continuació, es mostra un exemple complet que defineix un registre, declara una variable d'aquest tipus, inicialitza els seus camps i imprimeix els valors dels camps:

with Ada.Text_IO; use Ada.Text_IO;

procedure Exemple_Registres is

    -- Definició del registre
    type Persona is record
        Nom    : String(1..50);
        Edat   : Integer;
        Alçada : Float;
    end record;

    -- Declaració i inicialització de la variable del tipus Persona
    variable_persona : Persona := (Nom => "Joan", Edat => 30, Alçada => 1.75);

begin
    -- Accés i modificació dels camps del registre
    variable_persona.Nom := "Maria";
    variable_persona.Edat := 25;
    variable_persona.Alçada := 1.65;

    -- Impressió dels valors dels camps del registre
    Put_Line("Nom: " & variable_persona.Nom);
    Put_Line("Edat: " & Integer'Image(variable_persona.Edat));
    Put_Line("Alçada: " & Float'Image(variable_persona.Alçada));
end Exemple_Registres;

Exercicis Pràctics

Exercici 1

Defineix un registre anomenat Cotxe amb els següents camps: Marca (String), Model (String), Any (Integer) i Preu (Float). Declara una variable d'aquest tipus, inicialitza els seus camps i imprimeix els valors.

Exercici 2

Crea un programa que defineixi un registre anomenat Llibre amb els camps Títol (String), Autor (String), ISBN (String) i Preu (Float). Declara una variable d'aquest tipus, inicialitza els seus camps amb valors introduïts per l'usuari i imprimeix els valors.

Solucions

Solució Exercici 1

with Ada.Text_IO; use Ada.Text_IO;

procedure Exercici1 is

    -- Definició del registre
    type Cotxe is record
        Marca : String(1..50);
        Model : String(1..50);
        Any   : Integer;
        Preu  : Float;
    end record;

    -- Declaració i inicialització de la variable del tipus Cotxe
    variable_cotxe : Cotxe := (Marca => "Toyota", Model => "Corolla", Any => 2020, Preu => 20000.0);

begin
    -- Impressió dels valors dels camps del registre
    Put_Line("Marca: " & variable_cotxe.Marca);
    Put_Line("Model: " & variable_cotxe.Model);
    Put_Line("Any: " & Integer'Image(variable_cotxe.Any));
    Put_Line("Preu: " & Float'Image(variable_cotxe.Preu));
end Exercici1;

Solució Exercici 2

with Ada.Text_IO; use Ada.Text_IO;

procedure Exercici2 is

    -- Definició del registre
    type Llibre is record
        Títol : String(1..100);
        Autor : String(1..100);
        ISBN  : String(1..20);
        Preu  : Float;
    end record;

    -- Declaració de la variable del tipus Llibre
    variable_llibre : Llibre;

begin
    -- Lectura dels valors dels camps del registre des de l'usuari
    Put("Introdueix el títol del llibre: ");
    Get_Line(variable_llibre.Títol);

    Put("Introdueix l'autor del llibre: ");
    Get_Line(variable_llibre.Autor);

    Put("Introdueix l'ISBN del llibre: ");
    Get_Line(variable_llibre.ISBN);

    Put("Introdueix el preu del llibre: ");
    Get(variable_llibre.Preu);

    -- Impressió dels valors dels camps del registre
    Put_Line("Títol: " & variable_llibre.Títol);
    Put_Line("Autor: " & variable_llibre.Autor);
    Put_Line("ISBN: " & variable_llibre.ISBN);
    Put_Line("Preu: " & Float'Image(variable_llibre.Preu));
end Exercici2;

Conclusió

Els registres són una eina poderosa en Ada per agrupar dades relacionades sota una mateixa estructura. Hem après a definir registres, declarar variables d'aquest tipus, accedir als seus camps i inicialitzar-los. Els exercicis pràctics proporcionats ajuden a consolidar aquests conceptes i a veure com s'apliquen en situacions reals.

© Copyright 2024. Tots els drets reservats