Vous êtes sur la page 1sur 5

Departamento de Informática

Universidad Técnica Federico Santa María Estructuras


• Recordemos que los arreglos son un conjunto de
datos de un mismo tipo. Una estructura es un
Registros (struct) conjunto de datos que no son necesariamente del
mismo tipo
Programación • No hay limitaciones en el tipo ni cantidad de
variables que pueda contener una estructura ,la
Prof. Teddy Alfaro Olave ú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
informacion 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
conjuntos a todos estos tipos de datos: –Peso un flotante
– Edad un entero Campos de la estructura
–Nombres un string (char [ ]) (5 campos)
– Estatura y peso, flotantes Estructura PERSONA
–Sexo: un carácter
– Nombres un string (char [ ]) que contiene 5
elementos
– Sexo: un carácter

1
TDE 5 elementos Declaración de una estructura
Arreglo:
• Arreglo: conjunto de • La palabra reservada para esta tarea es struct, un
1 1 1 1 1
nombre indentificador y entre llaves sus campos
elementos de un
Todos los elementos son del con sus determinados tipos
mismo tipo
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 de char sexo;
que pueden ser de };
char string int
distinto tipo. int struct persona gente1, gente2;
float

Otra manera de declarar Inicialización de una estructura


• Podemos declarar la estructura y definir la • Al igual que los arrglos las estructuras
variables al mismo tiempo. pueden ser inicializadas al declararla
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 int edad; printf(“ingrese nombre”);
estructura existe un operador que relaciona float estatura, peso; scanf(“%s”,empleado.nombre);
al nombre al nombre de ella con un campo char nombre[50]; printf(“ingrese edad”);
determinado, este operador es el punto. char sexo; scanf(“%d”,&empleado.edad);
}; printf(“ingrese estatura”);
• Su sintaxis es scanf(“%f”,&empleado.estatura);
Nombre_estructurea.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 datos y printf(“ingrese rol”);
calcular su promedio de notas, e informar por pantalla si scanf(“%s”,alum_prg.rol);
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
estructura struct coord{
int x, y;
• Dentro de una estructura podemos tener no solo datos };
simples, sino tipo de datos estructurados e incluso otras struct datos{
estructuras int main( ){
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
Marca
struct vehiculo { int num_serie; 0 Año
int num_serie; char marca[30];
costo
int anio;
char marca[30]; Num_serie
float costo;
int anio; Marca

float costo;
}; 1 Año
struct vehiculo stock[50]; costo
}; int i; Num_serie
int main(int argc, char *argv[]){
• Suponga, que estamos interesados en guardar la información for (i=1;i<50;i++) { 2
Marca
Año
varios autos (unos 50), no sólo la de uno. Ante esto podríamos printf("Ingrese nº serie marca año y costo del vehiculo"); costo

crear 50 variables y llenarlas con información. Pero si scanf("%d", &stock[i].num_serie);


scanf("%s", stock[i].marca);
analizamos, tenemos 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
struct vehiculo inventario[50]; return 0;
Marca
}
49 Año
costo

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

Vous aimerez peut-être aussi