Los registros en Ada son estructuras de datos que permiten agrupar diferentes tipos de datos bajo un mismo nombre. Son similares a las estructuras en C o los objetos en otros lenguajes de programación orientados a objetos. Los registros son útiles para organizar datos relacionados y mejorar la legibilidad y mantenibilidad del código.

Conceptos Clave

  1. Definición de Registros: Cómo declarar y definir un registro en Ada.
  2. Acceso a Campos: Cómo acceder y modificar los campos de un registro.
  3. Inicialización de Registros: Métodos para inicializar registros.
  4. Registros Anidados: Uso de registros dentro de otros registros.
  5. Comparación de Registros: Cómo comparar registros.

Definición de Registros

Para definir un registro en Ada, se utiliza la palabra clave record. Aquí hay un ejemplo básico:

type Persona is record
    Nombre : String(1..50);
    Edad   : Integer;
    Altura : Float;
end record;

En este ejemplo, hemos definido un registro llamado Persona que contiene tres campos: Nombre, Edad y Altura.

Acceso a Campos

Para acceder a los campos de un registro, se utiliza el operador punto (.). Aquí hay un ejemplo:

declare
    Juan : Persona;
begin
    Juan.Nombre := "Juan Perez";
    Juan.Edad := 30;
    Juan.Altura := 1.75;
end;

En este ejemplo, hemos creado una variable Juan de tipo Persona y hemos asignado valores a sus campos.

Inicialización de Registros

Los registros pueden ser inicializados de varias maneras. Aquí hay algunos métodos comunes:

Inicialización Directa

declare
    Maria : Persona := (Nombre => "Maria Lopez", Edad => 25, Altura => 1.65);
begin
    -- Uso de Maria
end;

Inicialización por Asignación

declare
    Pedro : Persona;
begin
    Pedro := (Nombre => "Pedro Gonzalez", Edad => 40, Altura => 1.80);
end;

Registros Anidados

Los registros pueden contener otros registros como campos. Aquí hay un ejemplo:

type Direccion is record
    Calle   : String(1..100);
    Ciudad  : String(1..50);
    Codigo  : Integer;
end record;

type Empleado is record
    ID       : Integer;
    Nombre   : String(1..50);
    Direccion : Direccion;
end record;

En este ejemplo, Empleado contiene un campo Direccion que es de tipo Direccion.

Comparación de Registros

Ada permite la comparación de registros utilizando los operadores de comparación estándar (=, /=, <, >, etc.). Aquí hay un ejemplo:

declare
    Empleado1, Empleado2 : Empleado;
begin
    if Empleado1 = Empleado2 then
        -- Hacer algo si los empleados son iguales
    else
        -- Hacer algo si los empleados son diferentes
    end if;
end;

Ejercicio Práctico

Ejercicio 1: Definición y Uso de Registros

  1. Define un registro llamado Libro que contenga los siguientes campos:

    • Titulo : String(1..100)
    • Autor : String(1..50)
    • Anio_Publicacion : Integer
    • Precio : Float
  2. Crea una variable de tipo Libro y asigna valores a sus campos.

  3. Imprime los valores de los campos en la consola.

Solución

with Ada.Text_IO; use Ada.Text_IO;

procedure Ejercicio_Registros is

    type Libro is record
        Titulo           : String(1..100);
        Autor            : String(1..50);
        Anio_Publicacion : Integer;
        Precio           : Float;
    end record;

    Mi_Libro : Libro;

begin
    Mi_Libro.Titulo := "El Principito";
    Mi_Libro.Autor := "Antoine de Saint-Exupéry";
    Mi_Libro.Anio_Publicacion := 1943;
    Mi_Libro.Precio := 19.99;

    Put_Line("Titulo: " & Mi_Libro.Titulo);
    Put_Line("Autor: " & Mi_Libro.Autor);
    Put_Line("Año de Publicación: " & Integer'Image(Mi_Libro.Anio_Publicacion));
    Put_Line("Precio: " & Float'Image(Mi_Libro.Precio));
end Ejercicio_Registros;

Ejercicio 2: Registros Anidados

  1. Define un registro llamado Editorial que contenga los siguientes campos:

    • Nombre : String(1..50)
    • Direccion : String(1..100)
  2. Modifica el registro Libro para que contenga un campo Editorial de tipo Editorial.

  3. Crea una variable de tipo Libro y asigna valores a todos sus campos, incluyendo los de Editorial.

  4. Imprime los valores de los campos en la consola.

Solución

with Ada.Text_IO; use Ada.Text_IO;

procedure Ejercicio_Registros_Anidados is

    type Editorial is record
        Nombre    : String(1..50);
        Direccion : String(1..100);
    end record;

    type Libro is record
        Titulo           : String(1..100);
        Autor            : String(1..50);
        Anio_Publicacion : Integer;
        Precio           : Float;
        Editorial        : Editorial;
    end record;

    Mi_Libro : Libro;

begin
    Mi_Libro.Titulo := "El Principito";
    Mi_Libro.Autor := "Antoine de Saint-Exupéry";
    Mi_Libro.Anio_Publicacion := 1943;
    Mi_Libro.Precio := 19.99;
    Mi_Libro.Editorial.Nombre := "Reynal & Hitchcock";
    Mi_Libro.Editorial.Direccion := "New York, USA";

    Put_Line("Titulo: " & Mi_Libro.Titulo);
    Put_Line("Autor: " & Mi_Libro.Autor);
    Put_Line("Año de Publicación: " & Integer'Image(Mi_Libro.Anio_Publicacion));
    Put_Line("Precio: " & Float'Image(Mi_Libro.Precio));
    Put_Line("Editorial: " & Mi_Libro.Editorial.Nombre);
    Put_Line("Dirección de la Editorial: " & Mi_Libro.Editorial.Direccion);
end Ejercicio_Registros_Anidados;

Conclusión

En esta sección, hemos aprendido sobre los registros en Ada, cómo definirlos, acceder a sus campos, inicializarlos y utilizarlos en programas. También hemos explorado cómo anidar registros y compararlos. Los registros son una herramienta poderosa para organizar datos complejos y mejorar la claridad del código. En la próxima sección, exploraremos los Enumeraciones en Ada, que nos permitirán trabajar con conjuntos de valores predefinidos.

© Copyright 2024. Todos los derechos reservados