estructuras anidadas presentacion

38
UNIVERSIDAD ANDINA “NÉSTOR CÁCERES VELÁSQUEZ” FACULTAD DE INGENIERÍA Y CIENCIAS PURAS CAP INGENIERÍA CIVIL TEMA : Estructuras anidadas Presentado Por : Apaza Coaquira Edward Jhonatan Choque Istalla Pablo Roberto Galarza Gonzales Anthony Jhosep Tipula Yanapa Carlos Gabriel Calcina Aza Joel

Upload: carlos-gabriel-tipula-yanapa

Post on 12-Jan-2017

161 views

Category:

Engineering


4 download

TRANSCRIPT

Page 1: ESTRUCTURAS ANIDADAS PRESENTACION

UNIVERSIDAD ANDINA“NÉSTOR CÁCERES VELÁSQUEZ”

FACULTAD DE INGENIERÍA Y CIENCIAS

PURAS

CAP INGENIERÍA CIVIL

TEMA : Estructuras anidadasPresentado Por :Apaza Coaquira Edward JhonatanChoque Istalla Pablo RobertoGalarza Gonzales Anthony JhosepTipula Yanapa Carlos GabrielCalcina Aza Joel

Page 2: ESTRUCTURAS ANIDADAS PRESENTACION

Estructura

program circuloReal :: r, areawrite (*,*) 'Escribe el radio

r:'read (*,*) rarea = 3.14159*r*rwrite (*,*) 'Area = ', area

stopend

Este programa lee un número real r y muestra el área del círculo con radio r.

Page 3: ESTRUCTURAS ANIDADAS PRESENTACION

UNIONES

ES SIMILAR A LA DE "ESTRUCTURA", LA DIFERENCIA ENTRE LAS DOS ES QUE EN UNA ESTRUCTURA, LOS MIEMBROS OCUPAN DIFERENTES ÁREAS DE LA MEMORIA, PERO EN UNA UNIÓN, LOS MIEMBROS OCUPAN LA MISMA ÁREA DE MEMORIA.

Page 4: ESTRUCTURAS ANIDADAS PRESENTACION

UnionesUna unión es una estructura en la que se comparte una región de memoria para almacenar datos de tipos distintos.

El tamaño de la unión es igual al del tipo de datos más grande.

union prueba{ int a; float b; char c;};main(){ prueba x; x.a = 5; printf("a= %d, b= %f, c= %c\n",x.a,x.b,x.c); x.b = 5.0; printf("a= %d, b= %f, c= %c\n",x.a,x.b,x.c); x.c = '5'; printf("a= %d, b= %f, c= %c\n",x.a,x.b,x.c); getch();}

b

prueba

c

a a= 5, b= 0.000000, c= ♣a= 1084227584, b= 5.000000, c=a= 1084227637, b= 5.000025, c= 5

Page 5: ESTRUCTURAS ANIDADAS PRESENTACION

Estructuras y UnionesEn la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos que serían muy difícil de describir en los tipos de datos primitivos, esta es la situación en la que debemos aprovecharnos de las características que hacen al lenguaje C especial, o sea el uso de estructuras, uniones y punteros .

Programación en C/Estructuras y Uniones

Page 6: ESTRUCTURAS ANIDADAS PRESENTACION

Una estructura puede estar dentro de otra estructura a esto se le conoce como anidamiento o estructuras anidadas. Ya que se trabajan con datos en estructuras si definimos un tipo de dato en una estructura y necesitamos definir ese dato dentro de otra estructura solamente se llama el dato de la estructura anterior.

Estructuras Anidadas

Page 7: ESTRUCTURAS ANIDADAS PRESENTACION
Page 8: ESTRUCTURAS ANIDADAS PRESENTACION

Estructuras Anidados

if (x > 0) thenif (x >= y) then

write(*,*) 'x es positivo y x >= y'else

write(*,*) 'x es positivo pero, x < y'endif

elseif (x < 0) thenwrite(*,*) 'x es negativo'

elsewrite(*,*) 'x es cero'

endif

Page 9: ESTRUCTURAS ANIDADAS PRESENTACION

Estructuras anidadas

Las estructuras pueden contener a otras estructuras como componentes.

Una estructura que tiene componentes de tipo estructura se llama estructura anidada.

Page 10: ESTRUCTURAS ANIDADAS PRESENTACION

EjemploEjemplo de estructuras anidadas

struct fecha{ int dia,mes,anyo;};

struct persona{ char nombre[20]; char apellido[20]; fecha nacimiento; int edad; int sexo; char CURP[19]; char telefono[20];};nombre apellido nacimiento edad sexo CURP telefono

dia mes año

Page 11: ESTRUCTURAS ANIDADAS PRESENTACION

Desplegar una fechavoid despliegaFecha(fecha f){ printf("%d de ",f.dia); switch(f.mes){ case 1:printf("ene");break; case 2:printf("feb");break; case 3:printf("mar");break; case 4:printf("abr");break; case 5:printf("may");break; case 6:printf("jun");break; case 7:printf("jul");break; case 8:printf("ago");break; case 9:printf("sep");break; case 10:printf("oct");break; case 11:printf("nov");break; case 12:printf("dic");break; } printf(" de %d\n",f.anyo); }

Page 12: ESTRUCTURAS ANIDADAS PRESENTACION

Acceso a estructuras anidadas

Se puede acceder a los campos de una estructura anidada mediante el operador “.”. Por ejemplo:

persona per,*per2;

per.nacimiento.dia = 5;per.nacimiento.mes = 7;per.nacimiento.anyo = 1998;

per2->nacimiento.dia = 1;per2->nacimiento.mes = 8;per2->nacimiento.anyo = 2005;

Note que el campo anidado se accede mediante el operador “.” y el no anidado mediante “->”.

Page 13: ESTRUCTURAS ANIDADAS PRESENTACION

dia mes año

calle colonia ciudad estado pais numero

nombreapellidos

direccionDatos personalesnombre apellidos calle colonia ciudad estado pais num cp

fecha

direccionStruct

nombreStruct

Gráfico de las estructuras

Page 14: ESTRUCTURAS ANIDADAS PRESENTACION

depto trabajoposicion

empleado

dirnom

nombre apellidos calle colonia ciudad estado pais num cp

nombredireccion

depto trabajo

trabajo salario numDepto fechaIngreso

dia mes año

estudiante

direccionDatos personales

nombre apellidos calle colonia ciudad estado pais num cp

nombredireccion carrera promedio creditos

Page 15: ESTRUCTURAS ANIDADAS PRESENTACION

EjemplosDespliega nombre y teléfono de los pacientes con la máxima gravedad.

for(i = 0;i<50;i++) if(pas[i].condicion==5) printf(“Nombre: %s, telefono: %s\n”, pas[i].nombre,pas[i].telefono);

Calcula porcentaje de pacientes hombres y mujeres

suma = 0;sumaF = 0;for(i = 0;i<50;i++) if(pas[i].sexo==‘H’) sumaH++; else sumaF++;printf(“% de Hombres= %.2f\n”,sumaH/50*100);printf(“% de Mujeres= %.2f\n”,sumaF/50*100);

Page 16: ESTRUCTURAS ANIDADAS PRESENTACION

Estructuras anidadas

Nada impide que los miembros de una estructura sean a su vez tipos de datos estructurados, es decir: Otras estructuras Arreglos

Estas estructuras se denominan anidadas. Incuso pueden ser estructuras recursivas.

Page 17: ESTRUCTURAS ANIDADAS PRESENTACION

Ejemplostruct fecha{ int dia,mes,anyo;};

struct persona{ char nombre[20],apellido[20]; fecha nacimiento; char sexo; union{ struct { float peso,estatura; }varon; struct { int medidas[3]; }hembra; };};

Page 18: ESTRUCTURAS ANIDADAS PRESENTACION
Page 19: ESTRUCTURAS ANIDADAS PRESENTACION
Page 20: ESTRUCTURAS ANIDADAS PRESENTACION

Estructuras anidadas

struct punto{double x;double y;

};

struct circunferencia{struct punto centro;double radio;

};

Page 21: ESTRUCTURAS ANIDADAS PRESENTACION

Estructuras anidadas

double perimetro(struct circunferencia c){return 2*PI*c.radio;

}

double area(struct circunferencia c){return PI*c.radio*c.radio;

}

Page 22: ESTRUCTURAS ANIDADAS PRESENTACION

Estructuras anidadas

double distancia(struct punto p1, struct punto p2){

return sqrt( pow(p2.x+p1.x,2) + pow(p2.y+p1.y,2));

}

int intersectan(struct circunferencia c1,struct circunferencia c2){

double dist = distancia(c1.centro, c2.centro);printf("%.2f vs %.2f\n",dist,c1.radio+c2.radio);return (dist < c1.radio+c2.radio);

}

Page 23: ESTRUCTURAS ANIDADAS PRESENTACION

Estructuras anidadasint main(){

struct circunferencia ca;struct circunferencia cb;

ca.centro.x=0;ca.centro.y=0;ca.radio = 1;

cb.centro.x=1.9;cb.centro.y=0;cb.radio = 1;

printf("p:%.2f, a:%.2f, int?%s\n",perimetro(ca),area(ca),

(intersectan(ca,cb)?"Si":"No"));

}

Page 24: ESTRUCTURAS ANIDADAS PRESENTACION

Estructuras anidadas

Arbol binario:Estructura formadaCon nodos de los cuales cuelgan cero, uno o dos hijos, lo Cuales son a su vez arboles binarios

Page 25: ESTRUCTURAS ANIDADAS PRESENTACION

Estructuras anidadas

Valor nulo 0Puntero nulo NULL

Page 26: ESTRUCTURAS ANIDADAS PRESENTACION

ESTRUCTURAS ANIDADAS

struct arbol_binario{int valor;struct arbol_binario hijo_derecho;struct arbol_binario hijo_izquierdo;

};

struct arbol_binario{int valor;struct arbol_binario* hijo_derecho;struct arbol_binario* hijo_izquierdo;

};

Page 27: ESTRUCTURAS ANIDADAS PRESENTACION

ESTRUCTURAS ANIDADAS

void mostrar(struct arbol_binario arbol){

printf("%d ",arbol.valor);

if(arbol.hijo_derecho!=0) mostrar(*arbol.hijo_derecho);

if(arbol.hijo_izquierdo!=0) mostrar(*arbol.hijo_izquierdo);

}

Page 28: ESTRUCTURAS ANIDADAS PRESENTACION

Estructuras anidadasint main(){

struct arbol_binario arbol;struct arbol_binario hoja1;struct arbol_binario hoja2;

hoja1.valor=1;hoja1.hijo_derecho=0;hoja1.hijo_izquierdo=0;

hoja2.valor=2;hoja2.hijo_derecho=0;hoja2.hijo_izquierdo=0;

arbol.valor=0;arbol.hijo_derecho=&hoja1;arbol.hijo_izquierdo=&hoja2;

mostrar(arbol);}

int main(){struct arbol_binario arbol;struct arbol_binario hoja1;struct arbol_binario hoja2;

hoja1.valor=1;hoja1.hijo_derecho=0;hoja1.hijo_izquierdo=0;

hoja2.valor=2;hoja2.hijo_derecho=0;hoja2.hijo_izquierdo=&arbol;

arbol.valor=0;arbol.hijo_derecho=&hoja1;arbol.hijo_izquierdo=&hoja2;

mostrar(arbol);}

Page 29: ESTRUCTURAS ANIDADAS PRESENTACION

Estructuras anidadas

struct alumno{int rol;char dig;double notas[3];

};

double promedio(struct alumno a){return (a.notas[0] + a.notas[1] + a.notas[2])/3.0;

}

Page 30: ESTRUCTURAS ANIDADAS PRESENTACION

Estructuras anidadas

int main(){struct alumno a;a.rol=1;

a.dig='1';a.notas[0]=55;a.notas[1]=50;a.notas[2]=61;printf("Prom: %.2f\n",promedio(a));

}

Page 31: ESTRUCTURAS ANIDADAS PRESENTACION

Según lo expresado, las estructuras de decisión simple y doble permiten seleccionar entre dos alternativas posibles. Sin embargo, la instrucción SI-ENTONCES puede ser utilizada también en casos de selección de más de dos alternativas. Esto es posible anidando estas instrucciones. Es decir, una estructura SI-ENTONCES puede contener a otra, y esta a su vez a otra. La representación en pseudocódigo es la siguiente:

SI <condición_1> ENTONCES< sentencias_1 >SINO

SI <condición_2> ENTONCES < sentencias_2 >SINO

SI <condición_3> ENTONCES< sentencias_3 >SINO

.

.FIN-SI

FIN-SIFIN-SI

Estructura de selección. Sentencias anidadas.

Como se puede observar, el anidamiento de instrucciones alternativas permite ir descartando valores hasta llegar al bloque de instrucciones que se debe ejecutar.En las instrucciones SI anidadas, las instrucciones ENTONCES y FIN-SI se aplican automáticamente a la instrucción SI anterior más próxima.A fin de que las estructuras anidadas sean más fáciles de leer, es práctica habitual aplicar sangría al cuerpo de cada una.

Page 32: ESTRUCTURAS ANIDADAS PRESENTACION

Ejemplo: Un sensor toma (lee) la temperatura ambiente y de acuerdo al rango en que se encuentre, debe emitir un mensaje. La escala es la siguiente:

Mayor que 100 “Temperatura muy alta – Mal funcionamiento”

Entre 91 y 100 “Rango normal”Entre 51 y 90 “Bajo el rango normal”Menor que 50 “Muy frío – Apague el equipo”

ALGORITMO SensorINICIOLEER temperaturaSI temperatura > 100 ENTONCES

ESCRIBIR “Temperatura muy alta – Mal funcionamiento”SINO

SI temperatura > 90 ENTONCESESCRIBIR “Rango normal”

SINOSI temperatura > 50 ENTONCES

ESCRIBIR “Bajo el rango normal”SINO

ESCRIBIR “Muy frío – Apague equipo”FIN-SI

FIN-SIFIN-SIFIN

Estructura de selección. Sentencias anidadas.

Page 33: ESTRUCTURAS ANIDADAS PRESENTACION

La sentencia IR-A (go to)La sentencia GO TO pertenece a un grupo de sentencias conocidas como sentencias de salto (jump). La característica de este grupo es hacer que el flujo de control salte a otra parte del programa. Otras sentencias de este grupo son interrumpir o romper (BREAK), continuar (CONTINUE), volver (RETURN), lanzar (THROW). Las dos primeras se utilizan generalmente con sentencias de alternativa múltiple. Para retornar de la ejecución de funciones o métodos se usa RETURN. La sentencia GO TO se utilizaba mucho en los primeros lenguajes de programación porque era la única manera de saltar de una instrucción del programa a otra.Esta instrucción consta de una sentencia IR_A y una sentencia asociada con una etiqueta.Cuando se ejecuta esta instrucción, se transfiere el control del programa a la etiqueta asociada.

Estructura de selección. Sentencias anidadas. Casos Particulares

Page 34: ESTRUCTURAS ANIDADAS PRESENTACION

La sentencia IR-A (go to)La representación en pseudocódigo es la siguiente:INICIO..

IR_A etiqueta_1..FINetiqueta_1:. // El flujo salta aquí

El efecto de esta instrucción es transferir sin condiciones el control del programa a la etiqueta especificada. Es una de las operaciones más primitivas para traspasar el control de una parte del programa a otra. Sin embargo, su uso produce código inconsistente, incompleto o complicado de mantener. Justamente por ello en los años 60 y 70, cuando surgió la programación estructurada, la comunidad informática se expresó a favor de otras sentencias de control (IF ó bucles FOR y DO-WHILE) en lugar del GOTO.

Estructura de selección. Sentencias anidadas. Casos Particulares

Page 35: ESTRUCTURAS ANIDADAS PRESENTACION

La sentencia IR-A (go to)Tal creencia está tan arraigada que el GOTO es muy criticado y desaconsejado por todos los que se dedican a la enseñanza de la programación. Si bien la instrucción GOTO puede parecer útil y muy flexible, es precisamente en esa flexibilidad donde radica su peligro y los motivos de su obsolescencia.

6.5 Estructura de selección. Sentencias anidadas. Casos Particulares

Page 36: ESTRUCTURAS ANIDADAS PRESENTACION

En un algoritmo puede existir y es muy frecuente que existan 2 o más bucles. Dependiendo de la forma en que estén dispuestos, estos pueden ser anidados o independientes. Decimos que los bucles están anidados cuando están dispuestos de forma tal que unos son interiores a otros; y los bucles serán independientes cuando son extremos unos con otros. Así como se podían anidar estructuras de selección, también es posible insertar un bucle dentro de otro. Las reglas para construir estructuras repetitivas anidadas son iguales en ambos casos: la estructura interna debe estar incluida totalmente dentro de la externa y no puede existir solapamiento.

Diseño de bucles. Bucles Anidados

Page 37: ESTRUCTURAS ANIDADAS PRESENTACION

Diseño de bucles. Bucles Anidados

INDEPENDIENTES ANIDADAS

PERMITIDAS Y PROHIBIDAS

NIDOS CRUZADOS

SALIR DEL BUCLE ENTRAR AL BUCLE

Page 38: ESTRUCTURAS ANIDADAS PRESENTACION

Diseño de bucles. Bucles Anidados