Estructuras de datos tipo Registro Registros: Tipo struct en C

12
• Estructuras de datos tipo Registro • Registros: Tipo struct en C Sintaxis de una estructura tipo struct (prototipo). • Declaración de una variable tipo struct Ejemplos • Referencia a campos de una estructura struct • Registros anidados • Arreglo de registros, o estructuras tipo struct TEORIA

description

CI2125 TEORIA semana 8. Estructuras de datos tipo Registro Registros: Tipo struct en C Sintaxis de una estructura tipo struct (prototipo). Declaración de una variable tipo struct Ejemplos Referencia a campos de una estructura struct - PowerPoint PPT Presentation

Transcript of Estructuras de datos tipo Registro Registros: Tipo struct en C

Page 1: Estructuras de datos tipo Registro  Registros: Tipo  struct  en C

• Estructuras de datos tipo Registro

• Registros: Tipo struct en C

• Sintaxis de una estructura tipo struct (prototipo).

• Declaración de una variable tipo struct• Ejemplos

• Referencia a campos de una estructura struct

• Registros anidados

• Arreglo de registros, o estructuras tipo struct

• Uso del operador Definición de Nuevos Tipos, typedef

CI2125 TEORIA semana 8

Page 2: Estructuras de datos tipo Registro  Registros: Tipo  struct  en C

Otros tipos de datos

Ejemplos:

Datos de los empleados, lista de clientes, directorio de amigos, lista de CD’s

Empleado:

Nombre …. Cadena de caracteresApellido …. Cadena de caracteresEdad …. EnteroDirección …. Cadena de caracteresSueldo …. RealFecha de nacimiento …. (día, mes, año )

Page 3: Estructuras de datos tipo Registro  Registros: Tipo  struct  en C

Estructuras de datos

Fecha de nacimiento:

Día …. EnteroMes …. Cadena de caracteresAño …. Entero

Ejemplo: 13, “junio”, 2006

“Necesitamos una colección de uno o mas tipos de datos”

…. UNA ESTRUCTURA , que permita agrupar diferentes tipos de datos

Page 4: Estructuras de datos tipo Registro  Registros: Tipo  struct  en C

Sintaxis de una estructura tipo “Registro”

“ Un REGISTRO es un conjunto de datos, de tipos iguales o diferentes, agrupadas bajo un mismo

nombre”

Sintaxis para definir un Registro en C (no asigna memoria):

struct nombre_de_la_estructura{

tipo1 campo1;tipo2 campo2; . . .tipon campon;

};

Declaración de una variable que use esta estructura (asigna memoria)

struct nombre_de_la_estructura variable;

Page 5: Estructuras de datos tipo Registro  Registros: Tipo  struct  en C

Definición/Declaración de una variable tipo struct

Ejemplo, Registro para guardar fecha de nacimiento: (pueden definirse antes del programa main, inclusive guardarse en archivo.h, y se incluye en el archivo principal que contiene el main)

struct estruc_fecha{

int dia;char mes[10];int anio;

};

Declaración de una variable que use esta estructura dentro del cuerpo main, o cuerpo de funciones (asigna memoria), se pueden inicializar con valores al momento de declarar, entre paréntesis.

struct estruc_fecha hoy = { 13, “Junio”, 2006};struct estruc_fecha fecha_nac;fecha_nac = hoy; /* asigna los 3 campos de ‘hoy’

a ‘fecha_nac’ */

Page 6: Estructuras de datos tipo Registro  Registros: Tipo  struct  en C

Referencia a campos de una estructura

Un campo se usa como una variable. Para referenciar un campo de una estructura se usa el operador “.” (punto)

Ejemplo: Dada la estructura estruc_fecha y la variable fecha_nac

struct estruc_fecha{

int dia;char mes[10];int anio;

};

struct estruct_fecha fecha_nac;/* referencias a los campos de fecha_nac */fecha_nac.dia = 24;scanf(“%s”, fecha_nac.mes);fecha_nac.anio = 1991;

printf(“La fecha de nacimiento es %d %s %d”, fecha_nac.dia, fecha_nac.mes, fecha_nac.anio );

Page 7: Estructuras de datos tipo Registro  Registros: Tipo  struct  en C

Estructuras anidadasPara definir una estructura para los datos de empleados, requerimos usar el concepto de estructura anidada, y usar la estructura definida previamente ‘estruc_fecha’ para guardar la fecha de nacimiento.

Ejemplo: estructura para un empleado

struct estruc_empleado{

char Nombre[MAX];char Apellido[MAX];int edad;double sueldo;struct estruc_fecha fecha_nac;

};

struct estruct_empleado Juan; /* declara variable Juan *//* referencias a los campos de Juan*/Juan.edad = 24; /* referencia simple */Juan.fecha_nac.anio = 1991; /* referencia anidada al campo

anio de fecha_nac de Juan */

Page 8: Estructuras de datos tipo Registro  Registros: Tipo  struct  en C
Page 9: Estructuras de datos tipo Registro  Registros: Tipo  struct  en C

Arreglo de estructuras

Ejemplo: Una empresa necesita guardar los datos de 20 empleados

#define MAX_EMPLEADOS 20…./* Usamos la estructura estruc_empleado definida antes */…. /* declara variable fijo, que guardara datos de 20 empleados fijos como arreglo de 20 posiciones de tipo estruc_empleado */struct estruct_empleado fijo[MAX_EMPLEADOS]; /* lee la edad y mes de nacimiento de 20 empleados fijos*/for (i=0; i<MAX_EMPLEADOS; i++){ scanf(“%d”, &fijo[i].edad ); /* referencia simple */ scanf(“%s”, fijo[i].fecha_nac.mes ); /* referencia anidada */

}

“ Nos permite agrupar muchos datos del tipo Registro en un arreglo “

Page 10: Estructuras de datos tipo Registro  Registros: Tipo  struct  en C

Uso del Definidor de Tipos: typedef

“ Su empleo en estructuras es para simplificar … ”

Ejemplos:

/* Crea un nuevo tipo de dato llamado ‘entero’ */

typedef int entero; typedef float real;

/* Declara y usa dos variables de este nuevo tipo */

entero a, b = 3; real x, y =3.9;

Page 11: Estructuras de datos tipo Registro  Registros: Tipo  struct  en C

Typedef con struct : Dos formas

1: Después de la definición de la estructura, se usa para simplificar las futuras declaraciones de variables, definiendo otro nombre para esa estructura. Por ejemplo, usando la estructura estruc_empleado definida antes, se crea un nuevo tipo empleados:

/* Primero se define la estructura como siempre */ /* Después *//* Crea un nuevo tipo de dato llamado ‘empleados’ */ typedef struct estruc_empleado empleados;

….

/* Usa este nuevo tipo para declarar variables */ empleados Juan, fijo[MAX], temporal[MAX];

Page 12: Estructuras de datos tipo Registro  Registros: Tipo  struct  en C

Typedef con struct : Dos formas

2: En el momento de la definición de la estructura, se usa para crear un nuevo tipo, colocando el nombre del nuevo tipo, después de las llaves de la estructura, no se escribe ningún nombre a la estructura:

typedef struct{

char Nombre_ap[MAX];int telefono;int edad;struct estruc_fecha fecha_nac;

} amigos;

/* se declaran las variables de este tipo de estructura */amigos lista_de_amigos[MAX], Mi_amiga;