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
Libro
que contenga los siguientes campos:Titulo
: String(1..100)Autor
: String(1..50)Anio_Publicacion
: IntegerPrecio
: Float
-
Crea una variable de tipo
Libro
y 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
Editorial
que contenga los siguientes campos:Nombre
: String(1..50)Direccion
: String(1..100)
-
Modifica el registro
Libro
para que contenga un campoEditorial
de tipoEditorial
. -
Crea una variable de tipo
Libro
y 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