1 / 12

Estructuras de datos tipo Registro Registros: Tipo struct en C

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

twyla
Download Presentation

Estructuras de datos tipo Registro Registros: Tipo struct en C

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 • Registros anidados • Arreglo de registros, o estructuras tipo struct • Uso del operador Definición de Nuevos Tipos, typedef

  2. Otros tipos de datos Ejemplos: Datos de los empleados, lista de clientes, directorio de amigos, lista de CD’s Empleado: Nombre …. Cadena de caracteres Apellido …. Cadena de caracteres Edad …. Entero Dirección …. Cadena de caracteres Sueldo …. Real Fecha de nacimiento …. (día, mes, año )

  3. Estructuras de datos Fecha de nacimiento: Día …. Entero Mes …. Cadena de caracteres Añ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

  4. 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;

  5. 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’ */

  6. 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 );

  7. Estructuras anidadas Para 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 */

  8. Arreglo de estructuras “ Nos permite agrupar muchos datos del tipo Registro en un arreglo “ 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 */ }

  9. Uso del Definidor de Tipos: typedef 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; “ Su empleo en estructuras es para simplificar …”

  10. 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];

  11. Typedef con struct : Dos formas 2: En el momento de ladefinició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: typedefstruct { 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;

More Related