Estructuras Anidadas
Las estructuras en Lenguaje C permiten estar anidadas una dentro de otra, todo esto permite mantener la información organizada y además poder reutilizar los modelos de estructuras que ya tengamos definidos.
Veamos algunos ejemplos:
La fecha (Ejemplo: 15/02/2005) si la desagrupamos podemos obtener lo siguiente:
- El día.
- El mes.
- El año.
Estos son tres campos que tenemos en la fecha.
La hora (Ejemplo: 05:30 am o 5:30:03) la podemos desagrupar en horas, minutos y segundos u horas, minutos, segundos y am-pm.
Comencemos entonces a utilizar las estructuras anidadas.
Debemos saber que:
- La estructura que va a estar anidada dentro de la otra, debe ser definida antes de ser utilizada.
- Una estructura puede estar anidada dentro de una misma estructura más de una vez.
- Una estructura anidada puede contener otra estructura anidada.
- Para acceder a los campos de la estructura anidada debemos también utilizar el operador punto (.) tantas veces como sea necesario.
- Un modelo de estructura puede ser utilizado por varias estructuras a la vez sin que esto represente algún problema.
Punto 1. La estructura anidada debe ser definida antes de ser utilizada
Se desea definir una estructura fecha que va a formar parte de la estructura cedula:
//Debemos definir el modelo de la estructura fecha antes de utilizarla
struct fecha {
int dia;
int mes; //En este caso el mes es entero pero será caracter si lo tomamos completo (ejemplo: Febrero)
int annio;
};
//veamos entonces como se anida la estructura fecha dentro de la estructura cedula
struct cedula{
char nombres [50];
char apellidos [50];
longint nro_cedula;
struct fecha fecha_nacimiento; //Aqui se define la estructura fecha anidada en la estructura cedula
char edo_civil;
};
main ( ){
}
Actividad
- Defina una estructura tiempo (hora, minutos, segundos) la cual debe estar anidada dentro de otra estructura que guarde la siguiente información de un empleado: Nombre, Cedula, Departamento en que labora y la hora de entrada del empleado (utilice en este campo la estructura tiempo).
Punto 2. Una estructura anidada más de una vez en una misma estructura
Vamos a utilizar la estructura fecha varias veces en la estructura cedula:
//Definimos el modelo de la estructura fecha antes de utilizarla
struct fecha {
int dia;
int mes; //En este caso el mes es entero pero puede ser caracter si lo tomamos completo (ejemplo: Febrero)
int annio;
};
//veamos entonces como se anida la estructura fecha dentro de la estructura cedula
struct cedula{
char nombres [50];
char apellidos [50];
longint nro_cedula;
struct fecha fecha_nacimiento; //Estructura fecha en la estructura cedula para la fecha de nacimiento
struct fecha fecha_expedicion; //Estructura fecha en la estructura cedula para la fecha de expedicion
struct fecha fecha_vencimiento; //Estructura fecha en la estructura cedula para fecha de vencimiento
char edo_civil;
};
main ( ){
}
Por qué utilizamos la misma estructura fecha?
Se utiliza la misma estructura fecha para fecha de nacimiento, fecha de expedicion y fecha de vencimiento, ya que las tres contienen dia, mes y año al igual que la estructura fecha que definimos. Debemos tener en cuenta que al llamarlas de forma diferente, cada una permite guardar la información a la que hace referencia su nombre.
Actividad
- Ahora en el ejercicio de la actividad anterior, "Defina una estructura tiempo (hora, minutos, segundos) la cual debe estar anidada dentro de otra estructura que guarde la siguiente información de un empleado: Nombre, Cedula, Departamento en que labora y la hora de entrada del empleado (utilice en este campo la estructura tiempo)";
- Vamos a agregar también la hora de salida del empleado, recuerda utilizar la misma estructura tiempo.
Veamos como les va con estas actividades, hagan su mayor esfuerzo, quiero ver lo que pueden hacer con su gran ingenio.
Ya saben, las dudas en los comentarios o en mi correo.
Si alguno pueda dar respuesta certera a los comentarios realizados por sus compañeros, tiene la plena libertad de hacerlo, sus compañeros sabrán agradecerlo.
Continuaremos en una próxima oportunidad.