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
- Definición de Registros: Cómo declarar y definir un registro en Ada.
- Acceso a Campos: Cómo acceder y modificar los campos de un registro.
- Inicialización de Registros: Métodos para inicializar registros.
- Registros Anidados: Uso de registros dentro de otros registros.
- 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:
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
-
Define un registro llamado
Libroque contenga los siguientes campos:Titulo: String(1..100)Autor: String(1..50)Anio_Publicacion: IntegerPrecio: Float
-
Crea una variable de tipo
Libroy asigna valores a sus campos. -
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
-
Define un registro llamado
Editorialque contenga los siguientes campos:Nombre: String(1..50)Direccion: String(1..100)
-
Modifica el registro
Libropara que contenga un campoEditorialde tipoEditorial. -
Crea una variable de tipo
Libroy asigna valores a todos sus campos, incluyendo los deEditorial. -
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.
Curso de Programación en Ada
Módulo 1: Introducción a Ada
Módulo 2: Conceptos Básicos
- Variables y Tipos de Datos
- Operadores y Expresiones
- Estructuras de Control
- Bucles en Ada
- Subprogramas: Procedimientos y Funciones
Módulo 3: Tipos de Datos Avanzados
Módulo 4: Programación Modular
Módulo 5: Concurrencia y Programación en Tiempo Real
Módulo 6: Temas Avanzados
Módulo 7: Mejores Prácticas y Optimización
- Estilo de Código y Mejores Prácticas
- Depuración y Pruebas
- Optimización del Rendimiento
- Consideraciones de Seguridad
