1 / 19

ESTRUCTURAS DE DATOS 2

ESTRUCTURAS DE DATOS 2. Agenda. Resumen clase anterior Tamaño de una estructura . Arreglo de Estructuras . Apuntadores a estructuras Estructuras Anidadas. RESUMEN. RESUMEN – INTROD.

shelby
Download Presentation

ESTRUCTURAS DE DATOS 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ESTRUCTURAS DE DATOS 2

  2. Agenda • Resumenclase anterior • Tamaño de unaestructura. • Arreglo de Estructuras. • Apuntadores a estructuras • EstructurasAnidadas

  3. RESUMEN RESUMEN – INTROD. • Se puede utilizar una estructura para almacenar diferentes tipos de información sobre una persona, tal como nombre, estado civil, edad, fecha de nacimiento,… Ejemplo: Estructura ‘estudiante de Informática 1’ • MIEMBROS • Nombre • Cedula • CorreoElectrónico • Nota Teória • Nota Laboratorio • Faltas • TIPOS DE DATOS • Cadena de Caracteres max 50 • Cadena de Caracteres max 15 • Cadena de Caracteres max 50 • Numericoflotante • Numericoflotante • Numericoentero.

  4. REPASO Declaración de Estructura “Estudiante Informatica1” structestudianteInform1 { char nombre[50]; char cedula[15]; charemail[50]; floatnotaTeorica; floatnotaLab; int faltas; } ; structnombreDeLaEstructura { tipoDeDatoMiembro1 nombreMiembro1; tipoDeDatoMiembro2 nombreMiembro2; ... tipoDeDatoMiembroNnombreMiembroN; } ;

  5. Variables tipo Estructura Inicialización de Variables tipo estructura Cuando se declara una variable, se reserva espacio en memoria. cd1 titulo structcdsMusica { char titulo[40]; char artista[40]; chargenero[15]; intnumCanciones; int lanzamiento; int precio; }; artista structcdsMusica cd1= { “TheBest Of 1980-1990", “U2", “Rock” , 15, 1998, 30000 }; genero Num Canc. año Lanza. structcdsMusicacd1; precio

  6. Variables tipo Estructura ACCESO A ESTRUCTURAS Una Variable tipo estructura, así tenga internamente otros tipos de datos(No importa cuantos ni cuales), se sigue considerando como UNA SOLA VARIABLE. Se puede copiar todo el contenido de variable tipo estructura a otra que tenga el mismo tipo de estructura cd1=cd2; //Todo el contenido de cd2 se copia en cd1

  7. Variables tipo Estructura ACCESO A ESTRUCTURAS cd1 cd2 titulo titulo structcdsMusica cd2,cd1= { “TheBest Of 1980-1990", “U2", “Rock” , 15, 1998, 50000 }; artista artista genero genero Num Canc. Num Canc. cd1=cd2; año Lanza. año Lanza. precio precio

  8. Variables tipo Estructura ACCESO A ESTRUCTURAS cd1=cd2; //Todo el contenido de cd2 se copia en cd1 Un elemento especifico dentro de una variable estructura se puede accesar por medio del operador “.” ó “->” (Con apuntadores). nombreVarEstructura.nombreMiembro= dato; Cada miembro de una variable estructura se maneja como si fuera otra variable común y corriente.

  9. Variables tipo Estructura ACCESO A ESTRUCTURAS cd1 structcdsMusica { char titulo[40]; char artista[40]; chargenero[15]; intnumCanciones; int lanzamiento; int precio; }; intmain(void){ structcdsMusicacd1; ….. cd1.numCanciones=10; cd1.precio=30000; printf(“%d”, cd1.precio); ……. strcpy(cd1.titulo, "The Best"); } titulo artista genero Num Canc. 10 año Lanza. precio 30000 Como copia una cadena de caracteres a un miembro de un estructura que es tipo cadena de caracteres? Ejemplo a titulo

  10. RESUMEN RECUERDE …… Un arreglo es ….. La dirección de un arreglo se obtiene …. Una estructura es… Una colección de varios datos bajo un nombre general. Una estructura es una VARIABLE. La dirección de una estructura se obtiene….

  11. TAMAÑO TAMAÑO DE UNA ESTRUCTURA El operador sizeof se puede aplicar para determinar el tamaño en bytes que ocupa en memoria una estructura, u otra variable structcdsMusicacd1; tam=sizeof(cd1); printf ("El tamaño en Bytes de cd1 es: %d \n",tam) ;

  12. ARREGLOS DE ESTRUCTURAS structcdsMus{ char titulo[20]; char autor[20]; intnumCanc; intlanz; }; ERROR!!! Se define un arreglo de variables del tipo structcdsMus: structcdsMuscds[10]; Se Accede a la variable estructura dentro del arreglo: cds[0]=cds[1]; //Se copia toda la información Se puede acceder a cualquier miembro de cualquiera de las variables estructura del arreglo cds[0].numCanc=10; cds[3].titulo="Los cañonazos"; printf("El titulo del CD3 es: %s\n", cds[3].titulo);

  13. #include <stdio.h> structcdsMus{ char titulo[20]; char autor[20]; intnumCanc; intlanz; charflag; }; intmain(void){ structcdsMuscds[10]; intopc; printf("\n PROGRAMA PARA MANEJAR COLECCION DE CDS (Max10) \n"); while(1){ printf("\n1. para modificar 2.para consultar\n"); scanf("%d",&opc); if(opc==1){ printf("\nIngrese el # del CD a modificar:\n"); scanf("%d",&opc); printf("-----------------------------\n"); printf("Ingrese el titulo del CD%d: ",opc); scanf("%s",cds[opc].titulo); printf("Ingrese el autor del CD%d: ",opc); scanf("%s",cds[opc].autor); printf("Ingrese el NumCanciones del CD%d: ",opc); scanf("%d",&cds[opc].numCanc); printf("Ingrese el agno de lanzamiento del CD%d: ",opc); scanf("%d",&cds[opc].lanz); printf("-----------------------------\n"); cds[opc+1]=cds[opc]; //Se copia el cd[i] a cd[i+1] } elseif(opc==2){ printf("\nIngrese el # del CD a visualizar\n"); scanf("%d",&opc); printf("-----------------------------\n"); printf("El titulo del CD%d es: %s\n",opc,cds[opc].titulo); printf("El autor del CD%d es: %s\n",opc,cds[opc].autor); printf("El #canciones del CD%d es: %d\n",opc,cds[opc].numCanc); printf("El lanzamiento del CD%d fue %d\n",opc,cds[opc].lanz); printf("-----------------------------\n"); } else{} } return 0; }

  14. APUNTADORES A ESTRUCTURAS • struct estudiante{ • char Nombre[40]; • intnumEstudiante; • intagnoMatricula; • float nota; • }; Se define una variable estud1 del tipo struct estudiante: structestudiante estud1={"Jose" , 4 , 2009 , 4.5}; Se define una variable puntero para apuntar a variables del tipo struct estudiante: struct estudiante *ptrEstruct; Apunte con ptrEstruct a la variable estud1: ptrEstruct=&estud1; El operador puntero, ->, sirve para acceder a los datos de la estructura a partir de un apuntador. printf("La nota de estud1 es %d", ptrEstruct->nota); //Es lo mismo que printf("La nota de estud1 es %d", estud1.nota);

  15. APUNTADORES A ESTRUCTURAS Ejemplo: #include <stdio.h> struct estudiante{ char Nombre[40]; intnumEstudiante; intagnoMatricula; float nota; }; intmain(void){ struct estudiante estud1={"Jose" , 4 , 2009 , 4.5}; struct estudiante *ptrEstruct; ptrEstruct=&estud1; printf("La nota de estud1 es %.2f (Con Apuntador)\n", ptrEstruct->nota); //Metodo1 printf("La nota de estud1 es %.2f (Sin Apuntador)\n", estud1.nota); //Metodo2 getchar(); return 0; }

  16. Estructuras anidadas • Los campos de las estructuras puede ser la combinación de los siguientes datos: • Variables: char, int, double,…. • Apuntadores • Arreglos de variable • OTRA ESTRUCTURA Cliente structcliente{ char nombre[20]; structdirecciondirec; int saldo; }; Dirección Nombre Saldo Cll Num Ciu Estudiante structestudiante{ char nombre[20]; intcodigo; structnotas notaEst; }; Notas Nombre Código N1 N2 N3

  17. Estructuras anidadas(2) Cliente Dirección Nombre Saldo Cll Num Ciu structdireccion{ charcll[5]; charnum[5]; charciu[15]; } ; struct cliente{ char nombre[20]; structdirecciondirec; int saldo; }; structcliente{ char nombre[20]; structdirecciondirec; int saldo; }; structcliente{ char nombre[20]; structdireccion{ charcll[5]; charnum[5]; charciud[15]; } direc; int saldo; };

  18. Bibliografía • Joyanes Aguilar, Luis. PROGRAMACIÓN EN C. Metodología, algoritmos y estructura de datos Capitulo10. • Google

  19. GRACIAS

More Related