09. S7_1. Estructuras y Uniones
-
Upload
takechi-gutarra-arias -
Category
Documents
-
view
217 -
download
0
description
Transcript of 09. S7_1. Estructuras y Uniones
ESTRUCTURAS Y UNIONES LENGUAJE DE PROGRAMACIÓN ESTRUCTURADA (ST -202 V)
JOSÉ CABALLERO ORTIZ
AGENDA
◦Declaración de Estructuras ◦Uso de Estructuras ◦Vectores de Estructuras ◦Estructuras en Funciones ◦Uniones
ESTRUCTURAS
struct alumno{
char nombres[100];
char apellidos [100];
double promedioPonderado;
int anioIngreso;
int edad;
};
Agrupación de variables de distintos tipos. Utilizado para representar una entidad y sus características. Se declaran de la siguiente manera:
Agrupa variables de tipo char, double e int
Agrupa variables de tipo char
Importante
struct alumno a1 = {"Juan P.","Cheng H.",11,2013,17};
Es posible asignar valores al declarar
USO DE ESTRUCTURAS
struct alumno computo;
strcpy(computo.nombres,"Juan Francisco");
strcpy(computo.apellidos,"Perez Juarez");
computo.promedioPonderado = 18.5;
computo.anioIngreso = 2014;
computo.edad = 17;
cout<< "Alumno: "<<computo.apellidos<<", "<<computo.nombres<<endl;
cout<< "Promedio: "<<computo.promedioPonderado;
Declaración de la estructura
Asignación de valores
Acceso a Valores
VECTORES DE ESTRUCTURAS La siguiente estructura de datos representa la nota obtenida por un determinado estudiante en el curos de LPE.
¿Cómo utilizaríamos esta estructura para mostrar almacenar todas las notas del aula y mostrarlas en pantalla?
struct evaluacionLPE{
char codigo[20];
char nombreCompleto[200];
int nota;
};
struct evaluacionLPE lista[20]; Permite almacenar los valores
VECTORES DE ESTRUCTURAS Cómo iterar una lista de estructuras.
for(int i=0; i<CANT_ALUMNOS; i++){
if(strlen(lista[i].codigo)!=0){
cout.fill('*'); cout.width(40);
cout<<endl<<""<<endl<<endl;
cout<< "Codigo: "<< lista[i].codigo<<endl;
cout<< "Nombre: "<< lista[i].nombreCompleto<<endl;
cout<< "Nota: "<< lista[i].nota<<endl;
cout.width(40); cout<<endl<<""<<endl;
}
}
ESTRUCTURAS EN FUNCIONES Es posible utilizar estructuras en la declaración de funciones (como cualquier otro tipo)
void imprimirNotas(struct evaluacionLPE lista[]){
for(int i=0; i<CANT_ALUMNOS; i++){
if(strlen(lista[i].codigo)!=0){
……
}
}
}
struct evaluacionLPE lista[CANT_ALUMNOS];
struct evaluacionLPE a1 = {"20151111A","C. Perez A.",17};
struct evaluacionLPE a2 = {"20151112B","J. Cheng P.",14};
struct evaluacionLPE a3 = {"20151113K","H. Quispe A.",18};
lista[0] = a1; lista[1]=a2; lista[2]=a3;
imprimirNotas(lista);
Declaración de vector
Instanciar nuevos miembros
Asignar Elementos
Llamado a Función
UNIONES • Tratamiento muy similar a las estructuras. Comparten la misma memoria por lo que
se utilizan en casos en que sea necesario un ahorro de la misma. • Debemos tener en cuenta que solo es posible utilizar un campo de la unión cada vez.
union nota{
int notaEntera;
int notaReal;
};
Muy similar a la estructura notaEntera y notaReal comparten espacio de memoria
USO DE TYPEDEF Permite utilizar un nombre para denominar a nuestras estructuras o uniones (como si fueran un tipo de dato nuevo)
typedef struct alumno alumno;
typedef union nota notaExamen;
void pruebaTypeDef(){
alumno delegado;
delegado.edad = 18;
notaExamen n1;
n1.notaEntera = 19;
}
¿Es posible esta declaración?
¿Cuál es el equivalente de la expresión?