09. S7_1. Estructuras y Uniones

9
ESTRUCTURAS Y UNIONES LENGUAJE DE PROGRAMACIÓN ESTRUCTURADA (ST-202 V) JOSÉ CABALLERO ORTIZ

description

ewqdq

Transcript of 09. S7_1. Estructuras y Uniones

Page 1: 09. S7_1. Estructuras y Uniones

ESTRUCTURAS Y UNIONES LENGUAJE DE PROGRAMACIÓN ESTRUCTURADA (ST -202 V)

JOSÉ CABALLERO ORTIZ

Page 2: 09. S7_1. Estructuras y Uniones

AGENDA

◦Declaración de Estructuras ◦Uso de Estructuras ◦Vectores de Estructuras ◦Estructuras en Funciones ◦Uniones

Page 3: 09. S7_1. Estructuras y 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

Page 4: 09. S7_1. Estructuras y Uniones

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

Page 5: 09. S7_1. Estructuras y Uniones

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

Page 6: 09. S7_1. Estructuras y Uniones

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;

}

}

Page 7: 09. S7_1. Estructuras y Uniones

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

Page 8: 09. S7_1. Estructuras y Uniones

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

Page 9: 09. S7_1. Estructuras y Uniones

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?