Registros (struct) Estructuras Idea de estructura tipo registro Partes

Anuncio
Departamento de Informática
Universidad Técnica Federico Santa María
Registros (struct)
Programación
Prof. Teddy Alfaro Olave
Idea de estructura tipo registro
• Consideremos que deseamos mantener la
informacion de una persona. Estos datos podrían
ser: su edad, su estatura, su peso, su nombre, sexo
M o F, etc.
• Una estructura nos permite agrupar en un
conjuntos a todos estos tipos de datos:
–
–
–
–
Edad un entero
Estatura y peso, flotantes
Nombres un string (char [ ])
Sexo: un carácter
Estructura PERSONA
que contiene 5
elementos
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
mismo tipo
• No hay limitaciones en el tipo ni cantidad de
variables que pueda contener una estructura ,la
única salvedad es que una estructura no puede
contenerse a sí misma como miembro .
Partes de una estructura
Nombre de la estructura
PERSONA
–Edad un entero
–Estatura un flotante
–Peso un flotante
–Nombres un string (char [ ])
–Sexo: un carácter
Campos de la estructura
(5 campos)
1
TDE
• Arreglo: conjunto de
elementos de un
mismo tipo
• Estructura (Registro):
conjunto de datos de
que pueden ser de
distinto tipo.
5 elementos
Arreglo:
1
1
1
1
1
Todos los elementos son del
mismo tipo: enteros
5 campos
Estructura
‘h’ 1.10 “hola”
char
float
10
1
string
int
int
Otra manera de declarar
• Podemos declarar la estructura y definir la
variables al mismo tiempo.
struct persona{
int edad;
float estatura, peso;
char nombre[50];
char sexo;
} gente1, gente2;
Declaración de una estructura
• La palabra reservada para esta tarea es struct, un
nombre indentificador y entre llaves sus campos
con sus determinados tipos
struct persona{
int edad;
float estatura, peso;
char nombre[50];
char sexo;
};
struct persona gente1, gente2;
Inicialización de una estructura
• Al igual que los arrglos las estructuras
pueden ser inicializadas al declararla
struct persona{
int edad;
float estatura, peso;
char nombre[50];
char sexo;
} gente1 = { 27, 1.70, 68, “Samanta Diaz”, ‘F’}
2
Ejemplo
Acceso a los elementos
• Para dirigirnos a un campo de una
estructura existe un operador que relaciona
al nombre al nombre de ella con un campo
determinado, este operador es el punto.
• Su sintaxis es
Nombre_estructurea.nombre_campo
• Ejemplo
gente1.edad=30;
struct persona{
int edad;
float estatura, peso;
char nombre[50];
char sexo;
};
gente1.peso=80.5;
Ejemplo
• Desarrollar un programa que utilice la definición del tipo
alumno que se muestra abajo, permita llenar los datos y
calcular su promedio de notas, e informar por pantalla si
aprobó o no.
struct alumno {
char
nombre [50];
char
rol[12];
int
examen1, examen2, examen3;
float
promedio;
}
struct alumno {
char nombre [50];
char rol[12];
int exa1, exa2, ex3;
float prom;
};
void main( ) {
struct persona empleado;
printf(“ingrese nombre”);
scanf(“%s”,empleado.nombre);
printf(“ingrese edad”);
scanf(“%d”,&empleado.edad);
printf(“ingrese estatura”);
scanf(“%f”,&empleado.estatura);
printf(“ingrese peso”);
scanf(“%f”,&empleado.peso);
printf(“ingrese sexo (M o F)”);
scanf(“%c”,&empleado.sexo);
printf(“ingrese nombre”); }
void main( ) {
struct alumno alum_prg;
printf(“ingrese nombre”);
scanf(“%s”,alum_prg.nombre);
printf(“ingrese rol”);
scanf(“%s”,alum_prg.rol);
printf(“ingrese los 3 examenes”);
scanf(“%d %d %d”, &alum_prg.exa1,
&alum_prg.exa2, &alum_prg.exa3);
alum_prg.prom=(alum_prg.exa1+
alum_prg.exa2+ alum_prg.exa3)/3;
if(alum_prg.prom>=55)
printf(“aprobado”);
else
printf(“reprobado”);
}
3
Un arreglo dentro de una
estructura
• Dentro de una estructura podemos tener no solo datos
simples, sino tipo de datos estructurados e incluso otras
estructuras
Struct coord{
int x, y;
};
Struct datos{
float velocidad;
int eventos[20];
struct coord posicion;
};
Usos de las estructuras
• Tenemos la siguiente estructura:
struct vehiculo {
int
char
int
float
};
num_serie;
marca[30];
anio;
costo;
• Suponga, que estamos interesados en guardar la información
varios autos (unos 50), no sólo la de uno. Ante esto podríamos
crear 50 variables y llenarlas con información. Pero si
analizamos, tenemos 50 variables que pueden conformar una
colección de datos de un mismo tipo, definición de: ARREGLO
De esta manera se llega a un Arreglo de Estructuras:
struct vehiculo inventario[50];
struct coord{
int x, y;
};
struct datos{
float velocidad;
int eventos[20];
struct coord posicion;
};
int main( ){
struct datos movil;
int i;
movil.velocidad=1.45;
movil.posicion.x=3;
movil.posicion.y=7;
for(i=0; i<20; i++)
movil.eventos[i]=i;
}
Arreglo de estructuras
struct vehiculo {
int
num_serie;
char marca[30];
int
anio;
float costo;
};
struct vehiculo stock[50];
int i;
int main(int argc, char *argv[]){
for (i=1;i<50;i++) {
printf("Ingrese nº serie marca año y costo del vehiculo");
scanf("%d", &stock[i].num_serie);
scanf("%s", stock[i].marca);
scanf("%d",&stock[i].anio);
scanf("%f", &stock[i].costo);
}
for(i=1;i<50;i++)
printf("%d %s %d %f", stock[i].num_serie, stock[i].marca, stock[i].anio, stock[i].costo);
return 0;
}
Num_serie
0
Marca
Año
costo
Num_serie
1
Marca
Año
costo
Num_serie
2
Marca
Año
costo
...
Num_serie
49
Marca
Año
costo
4
Ejercicio
• Una librería desea almacenar sus productos en
un arreglos de registros. Cada registro debe
incluir los campos título, autor, SDBN (código),
precio y stock. Diseñe un programa C que
permita realizar las siguientes operaciones:
– Ingresar una partida de 100 libros
– Encontrar un libro a partir de un código ISBN
ingresado por el usuario, mostrando el título, autor,
precio y stock correspondiente.
Ejercicio
struct alumno {
char
nombre[30];
Se requiere almacenar la información de un
char
rol[12];
curso de a=10 alumnos al arreglo de registros
nota[n];
int
que se muestra en un costado. A cada alumno
float
promedio;
} curso[a];
se le deben ingresar las n=3 notas, y luego
calcular su promedio.
Se pide desarrollar un programa pascal que:
- permita el ingreso de todos los datos del alumno, las 3 notas, y se le
calcule promedio
- Mostrar por pantalla, nombre promedio, y además mostrar el promedio
del curso.
5
Descargar