Registros y estructuras
Los registros y las estructuras son tipos de datos compuestos que permiten agrupar varios datos relacionados bajo un único identificador.
Se utilizan para representar entidades del mundo real cuyos atributos pueden ser de distintos tipos de datos.
A diferencia de los arrays, los registros permiten almacenar campos heterogéneos, mientras que las estructuras son la implementación de este concepto en muchos lenguajes de programación.
Conceptos fundamentales
Para comprender los registros y las estructuras es imprescindible conocer los siguientes conceptos:
- Campo: cada uno de los elementos que forman el registro.
- Tipo de dato: naturaleza de cada campo (entero, cadena, booleano, etc.).
- Registro: conjunto de campos relacionados.
- Estructura (struct): implementación de un registro en numerosos lenguajes.
- Acceso por nombre: forma habitual de acceder a los campos.
¿Qué es un registro?
Un registro es una estructura de datos formada por varios campos relacionados que describen una misma entidad.
Por ejemplo, un empleado podría representarse mediante:
- Nombre.
- Apellidos.
- Edad.
- Salario.
- Departamento.
Todos estos datos pertenecen al mismo registro porque describen a una única persona.
Estructuras (Struct)
Una estructura (struct) es el mecanismo que ofrecen muchos lenguajes de programación para implementar registros.
Cada estructura define:
- El nombre del tipo.
- Los campos que contiene.
- El tipo de dato de cada campo.
Ejemplo conceptual:
Empleado
├── Nombre
├── Edad
├── Salario
└── Departamento
Campos de una estructura
Cada campo almacena una información concreta.
Los campos pueden ser de cualquier tipo:
- Enteros.
- Reales.
- Booleanos.
- Cadenas.
- Arrays.
- Otras estructuras.
Esto permite crear modelos de datos muy flexibles.
Acceso a los campos
Una vez creada una estructura, es posible acceder a cada campo de forma individual.
Habitualmente se utiliza un operador de acceso por nombre (como el operador punto en muchos lenguajes).
Ejemplo conceptual:
Empleado
├── Nombre → "Ana"
├── Edad → 32
├── Salario → 2500
└── Departamento → Informática
Registros frente a arrays
Aunque ambos permiten agrupar datos, presentan diferencias importantes.
| Registro / Estructura | Array |
|---|---|
| Datos heterogéneos | Datos homogéneos |
| Acceso por nombre | Acceso por índice |
| Representa una entidad | Representa una colección |
| Cada campo tiene significado propio | Todos los elementos son del mismo tipo |
Registros anidados
Un registro puede contener otros registros como campos.
Ejemplo:
Empleado
├── Nombre
├── Edad
└── Dirección
├── Calle
├── Ciudad
└── Código Postal
Esta técnica permite representar información compleja de forma organizada.
Memoria y organización
Los campos de una estructura suelen almacenarse de forma contigua en memoria.
Cada campo ocupa el espacio correspondiente a su tipo de dato.
En algunos lenguajes puede existir relleno (padding) para mejorar el rendimiento y la alineación de memoria.
Aplicaciones habituales
Las estructuras se utilizan para representar prácticamente cualquier entidad del software.
Algunos ejemplos son:
- Usuarios.
- Clientes.
- Productos.
- Vehículos.
- Facturas.
- Expedientes.
- Configuraciones.
- Objetos de videojuegos.
Caso práctico
Situación
Una aplicación debe almacenar la información de un estudiante.
Cada estudiante dispone de:
- Nombre.
- Apellidos.
- Edad.
- Nota media.
- Grupo.
Solución
La mejor opción es utilizar una estructura, ya que todos los datos pertenecen a una misma entidad y pueden ser de distintos tipos.
No sería adecuado utilizar un único array porque sus elementos deberían ser homogéneos.
Ventajas e inconvenientes
Ventajas
- Agrupan información relacionada.
- Permiten combinar distintos tipos de datos.
- Mejoran la organización del código.
- Facilitan el mantenimiento.
- Favorecen la reutilización.
Inconvenientes
- Consumen más memoria que un dato simple.
- Su gestión puede ser más compleja.
- Pueden existir problemas de alineamiento y padding.
- No permiten acceder automáticamente mediante índices como un array.
Errores habituales
- Confundir una estructura con un array.
- Pensar que todos los campos deben ser del mismo tipo.
- Olvidar que los campos se identifican por su nombre.
- No distinguir entre el tipo de estructura y una instancia de la misma.
- Ignorar que una estructura puede contener otras estructuras.
Cómo evitarlos
- Recordar que una estructura representa una entidad.
- Diferenciar claramente datos homogéneos y heterogéneos.
- Identificar cada campo mediante su nombre.
- Comprender la diferencia entre definir un tipo y crear una variable de ese tipo.
- Practicar ejemplos de estructuras anidadas.
Relaciones con otros temas
Los registros y las estructuras están estrechamente relacionados con:
- Tipos de datos.
- Variables.
- Arrays.
- Punteros.
- Memoria.
- Funciones.
- Programación estructurada.
- Programación orientada a objetos.
Conceptos clave para recordar
[!NOTE]
- Un registro agrupa varios datos relacionados bajo una misma entidad.
- Una estructura (struct) es la implementación de un registro en muchos lenguajes.
- Los registros almacenan datos heterogéneos.
- Cada dato recibe el nombre de campo.
- Los campos se identifican mediante su nombre.
- Una estructura puede contener otras estructuras.
- Los arrays almacenan datos homogéneos; las estructuras permiten combinar distintos tipos de datos.
- Las estructuras son fundamentales para representar entidades complejas de forma organizada.