Está en la página 1de 5

Facultad de Ingeniería Industrial, Sistemas e Informática

Escuela Profesional de Ingeniería Electrónica


Estructuras
Registros (Estructuras) • Recordemos que los arreglos son un conjunto de
datos de un mismo tipo. Una estructura es un
conjunto de datos que no son necesariamente del
Fundamentos y Metodología de la Programación mismo tipo
• No hay limitaciones en el tipo ni cantidad de
Ing. Hugo Serrano Rodas variables que pueda contener una estructura, la
única salvedad es que una estructura no puede
contenerse a sí misma como miembro.

Idea de estructura tipo registro


Partes de una estructura
• Consideremos que deseamos mantener la
información de una persona. Estos datos podrían Nombre de la estructura
ser: su edad, su estatura, su peso, su nombre, sexo PERSONA
M o F, etc. –Edad un entero
• Una estructura nos permite agrupar en un –Estatura un flotante
conjunto a todos estos tipos de datos: –Peso un flotante
Campos de la estructura
– Edad un entero –Nombres un string (char [ ])
– Estatura y peso, flotantes Estructura PERSONA (5 campos)
que contiene 5 –Sexo: un carácter
– Nombres un string (char [ ])
elementos
– Sexo: un carácter
TDE 5 elementos Declaración de una estructura
Arreglo:
• Arreglo: conjunto de • La palabra reservada para esta tarea es struct, un
elementos de un
1 1 1 1 1 nombre identificador y entre llaves sus campos
mismo tipo Todos los elementos son del con sus determinados tipos
mismo tipo: enteros struct persona {
int edad;
5 campos
Estructura float estatura, peso;
• Estructura (Registro): ‘h’ 1.10 “hola” 10 1 char nombre [50];
conjunto de datos char char sexo;
de que pueden ser string int };
de distinto tipo.
int struct persona gente1, gente2;
float

Otra manera de declarar Inicialización de una estructura


• Podemos declarar la estructura y definir • Al igual que los arreglos las estructuras
las variables al mismo tiempo. pueden ser inicializadas al declararlas
struct persona { struct persona {
int edad; int edad;
float estatura, peso; float estatura, peso;
char nombre [50]; char nombre [50];
char sexo; char sexo;
} gente1, gente2; } gente1 = {27, 1.70, 68, “Samanta Diaz”, ‘F’}

2
Ejemplo
Acceso a los elementos
void main( ) {
struct persona { struct persona empleado;
• Para dirigirnos a un campo de una estructura printf(“ingrese nombre”);
int edad;
existe un operador que relaciona al nombre scanf(“%s”,empleado.nombre);
float estatura, peso;
de ella con un campo determinado, este char nombre [50]; printf(“ingrese edad”);
operador es el punto. char sexo; scanf(“%d”,&empleado.edad);
• Su sintaxis es }; printf(“ingrese estatura”);
scanf(“%f”,&empleado.estatura);
Nombre_estructura. nombre_campo
printf(“ingrese peso”);
• Ejemplo scanf(“%f”,&empleado.peso);
gente1.edad=30; gente1.peso=80.5; printf(“ingrese sexo (M o F)”);
scanf(“%c”,&empleado.sexo);
printf(“ingrese nombre”); }

struct alumno {
char nombre [50];
char rol[12]; void main() {
Ejemplo int exa1, exa2, ex3; struct alumno alum_prg;
float prom; printf(“ingrese nombre”);
}; scanf(“%s”,alum_prg.nombre);
• Desarrollar un programa que utilice la definición del
tipo alumno que se muestra abajo, permita llenar los printf(“ingrese rol”);
datos y calcular su promedio de notas, e informar por scanf(“%s”,alum_prg.rol);
pantalla si aprobó o no. printf(“ingrese los 3 examenes”);
struct alumno { scanf(“%d %d %d”, &alum_prg.exa1,
&alum_prg.exa2, &alum_prg.exa3);
char nombre [50];
alum_prg.prom=(alum_prg.exa1+
char rol[12]; alum_prg.exa2+ alum_prg.exa3)/3;
int examen1, examen2, examen3; if(alum_prg.prom>=55)
float promedio; printf(“aprobado”);
} else
printf(“reprobado”);
}

3
Un arreglo dentro de una
struct coord{
estructura int x, y;
• Dentro de una estructura podemos tener no solo datos };
simples, sino tipo de datos estructurados e incluso struct datos{ int main( ){
otras estructuras float velocidad; struct datos movil;
struct coord{ int eventos[20]; int i;
int x, y; struct coord posicion; movil.velocidad=1.45;
}; }; movil.posicion.x=3;
Struct datos{ movil.posicion.y=7;
float velocidad; for(i=0; i<20; i++)
int eventos[20]; movil. eventos[i]=i;
struct coord posicion;
}
};

Usos de las estructuras Arreglo de estructuras


• Tenemos la siguiente estructura: struct vehiculo { Num_serie

struct vehiculo { int num_serie; 0 Año Marca

int num_serie; char marca[30]; costo


int anio;
char marca[30]; Num_serie
float costo;
int anio;
}; 1 Año Marca
float costo; struct vehiculo stock[50]; costo
}; int i; Num_serie
int main(int argc, char *argv[]){
• Suponga, que estamos interesados en guardar la información varios for (i=1;i<50;i++) { 2
Marca

Año
autos (unos 50), no sólo la de uno. Ante esto podríamos crear 50 printf("Ingrese nº serie marca año y costo del vehiculo"); costo

scanf("%d", &stock[i].num_serie);
variables y llenarlas con información. Pero si analizamos, tenemos scanf("%s", stock[i].marca);
50 variables que pueden conformar una colección de datos de un
mismo tipo, definición de: ARREGLO
scanf("%d",&stock[i].anio);
scanf("%f", &stock[i].costo); ...
}
for(i=1;i<50;i++)
De esta manera se llega a un Arreglo de Estructuras: printf("%d %s %d %f", stock[i].num_serie, stock[i].marca, stock[i].anio, stock[i].costo );
Num_serie
return 0;
struct vehiculo inventario[50]; 49 Año
Marca
}
costo

4
Ejercicio Ejercicio
• Una librería desea almacenar sus productos en un struct alumno {
arreglo de registros. Cada registro debe incluir los char nombre [30];
Se requiere almacenar la información de un
campos título, autor, SDBN (código), precio y char rol [12];
curso de a=10 alumnos al arreglo de registros int nota[n];
stock. Diseñe un programa C que permita realizar que se muestra en un costado. A cada alumno float promedio;
las siguientes operaciones: se le deben ingresar las n=3 notas, y luego } curso[a];
– Ingresar una partida de 100 libros calcular su promedio.
Se pide desarrollar un programa que:
– Encontrar un libro a partir de un código ISBN - permita el ingreso de todos los datos del alumno, las 3 notas, y se le
ingresado por el usuario, mostrando el título, autor, calcule promedio
- Mostrar por pantalla, nombre promedio, y además mostrar el promedio
precio y stock correspondiente.
del curso.

También podría gustarte