SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
Programación
     (L109)
     Sesión: 10
Estructuras y Uniones
  Ing. José C. Benítez P.
Sesión 10. Temas

         Estructuras y Uniones
            Introducción
            Concepto y declaración de
            una Estructura
            Estructuras anidadas.
            Arrays de Estructuras




                   Programación - Prof. Ing. Jose C. Benitez P.   2
Arreglos, Estructuras y Uniones. Introducción


      En la creación de aplicaciones para algunos
      problemas surge la necesidad de agrupar datos de
      diferente tipo o de manejar datos que serian muy
      difícil de describir con los tipos de datos
      primitivos, en este caso debemos aprovecharnos
      de las características que hacen al lenguaje C
      especial, es decir se debe usar estructuras,
      uniones y punteros.




                    Programación - Prof. Ing. Jose C. Benitez P.   3
Arreglos, Estructuras y Uniones. Introducción


        Conociendo el uso de arrays en C, aprender como
        se usan estructuras y uniones será sencillo.
        Una estructura es un array que tiene la capacidad
        de almacenar variables con distintos tipos y
        nombres.
        Una unión es similar a una estructura, pero solo
        podrá tener un valor a la vez.




                   Programación - Prof. Ing. Jose C. Benitez P.   4
Estructuras. Concepto y declaración
 Una estructura contiene varios tipos de datos.
 La forma de definir una estructura es haciendo                     struct mystruct
                                                                    {
 uso de la palabra clave struct.                                          int numero;
 Ejemplo de la declaración de una estructura:                             double peso;
                                                                          char nombre[25];
                                                                    } variable;


    "variable" es una instancia de "mystruct"
    y no es necesario ponerla aquí.
                                                                    struct mystruct
    Se podría omitir de la declaración de                           {
    "mystruct" y más tarde declararla                                    int numero;
                                                                         double peso;
    usando:                                                              char nombre[25];
               struct mystruct variable;
                                                                    };
                     Programación - Prof. Ing. Jose C. Benitez P.                      5
Estructuras. Concepto y declaración
                                                                      struct mystruct
  También es una práctica muy común                                   {
                                                                            int numero;
  asignarle un alias o sinónimo al nombre de la                             double peso;
  estructura, para evitar el tener que poner                                char nombre[25];
  "struct mystruct" cada vez.                                         } variable;

  C nos permite la posibilidad de hacer esto                          typedef struct
  usando la palabra clave typedef, lo que crea                        {
  un alias a un tipo:                                                      int numero;
                                                                           double peso;
                                                                           char nombre[25];
La estructura misma no tiene nombre (por                              } Mystruct;
la ausencia de nombre en la primera linea),
pero tiene de alias "Mystruct".
Entonces se puede usar así:
                                Mystruct variable;
                       Programación - Prof. Ing. Jose C. Benitez P.                            6
Estructuras. Concepto y declaración


  Note que es una convención, y una
  buena costumbre usar mayúscula en la                              typedef struct
  primera letra de un sinónimo de tipo.                             {
  De todos modos lo importante es darle                                  int numero;
                                                                         double peso;
  algún identificador para poder hacer                                   char nombre[25];
  referencia a la estructura: podríamos                             } Mystruct;
  tener una estructura de datos recursiva
  de algún tipo.                                                    Mystruct variable;




                     Programación - Prof. Ing. Jose C. Benitez P.                           7
#include <stdio.h>
                             #include <string.h>
Estructuras. Concepto        /* definimos una estructura para cds */
                                            struct cd
                                            {
  Ejemplo 1:                                  char titulo[30];
                                              char artista[25];
                                              float precio;
                                              int canciones;
                                            } Cd1 = {"Canciones Bebe", "Pinocho", 12.50, 16};
                             void main(void) {
                               struct cd Cd2;
                               strcpy(Cd2.titulo, "New Age“);
                               strcpy(Cd2.artista, "Old Man“);
                               Cd2.precio = 15.00;
                               Cd2.canciones = 12;
                                printf("n Cd 1");
                                printf("n Titulo: %s ", Cd1.titulo);
                                printf("n Artista: %s ", Cd1.artista);
                                printf("n Total Canciones: %d ", Cd1.canciones);
                                printf("n Precio Cd: %f ", Cd1.precio);
                                printf(“nn Cd 2");
                                printf("n Titulo: %s ", Cd2.titulo);
                                printf("n Artista: %s ", Cd2.artista);
                                printf("n Total Canciones: %d ", Cd2.canciones);
                                printf("n Precio Cd: %.2f ", Cd2.precio);
                                getchar();
                             }

                 Programación - Prof. Ing. Jose C. Benitez P.                          8
Estructuras. Concepto
     Ejemplo 2:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void main()
{
        struct
             {
             char nombre[20];
             int edad;
             float estatura;
             } persona;
   printf("nHola! Voy a hacerte unas preguntas:");
   printf("nComo te llamas? : ");
   scanf("%s",persona.nombre); // gets(persona.nombre);
   printf("nCuantos anhos tienes? : ");
   scanf_s("%d", &persona.edad );
   printf("nCuanto mides? : ");
   scanf_s("%f", &persona.estatura );
   printf( "Te llamas %s tienes %d anhos y mides %.2fn", persona.nombre, persona.edad, persona.estatura);
   system("PAUSE");
}
                                   Programación - Prof. Ing. Jose C. Benitez P.                    9
Estructuras Anidadas. Concepto y declaración
                                                                    struct
    Las estructuras se usan como                                    {
    cualquier otro tipo de variables                                   int edad;
                                                                       char* nombre;
    normales y corrientes, pero                                        struct
    almacenadas dentro de un                                           {
    grupo.                                                                 int numero;
                                                                           char* direccion;
    Además, una estructura puede                                           int telefono;
    contener a otra como en el                                          } vivienda;
    ejemplo:                                                        } persona;

    Para acceder a la dirección, por
    ejemplo, habría que escribir
    persona.vivienda.direccion;


                     Programación - Prof. Ing. Jose C. Benitez P.                             10
Arrays de Estructuras. Concepto y declaración
                                                                   struct
                                                                   {
    Se ha creado 10 personas con                                      int edad;
    los mismos datos.                                                 char* nombre;
                                                                      struct
    Para acceder, por ejemplo al                                      {
    número 3 habría que escribir:                                         int numero;
                                                                          char* direccion;
    persona[2].nombre;                                                    int telefono;
                                                                       } vivienda;
                                                                   } persona[20];




                    Programación - Prof. Ing. Jose C. Benitez P.                             11
Arrays de Estructuras. Ejemplo
#include <stdio.h>
int main(){
int npersonas;
int i = 1;
  struct {
     int edad;
     float estatura;
     char* nombre;
  } persona[9];
   printf( "Hola! Voy a hacerte unas preguntas:");
  printf( "Cuantas personas participaran?" );
  scanf( "%i", &npersonas );
  for( i = 0; i < 10 ; i++ )
  {
      printf( "nComo te llamas? : "); scanf( "%s", &persona[i].nombre );
      printf( "nCuantos anios tienes? : "); scanf( "%d", &persona[i].edad );
      printf( "nCuanto mides? : "); scanf( "%f", &persona[i].estatura );
      printf( "Te llamas %s tienes %d anios y mides %.2f", &persona[i].nombre, persona[i].edad, persona[i].estatura );
  }
  return 0;
  getchar();
}
                                      Programación - Prof. Ing. Jose C. Benitez P.                           12
Tarea (T10)
 Hacer un programa en C utilizando estructuras. (Utilizar enciclopedias):
 1.   Registrar y mostrar los datos mas importantes de su familia. Como mínimo
      5 variables. Los datos deben ser reales.
 2.   Registrar y mostrar los datos mas importantes de su clase. Como mínimo 5
      variables. Hallar el promedio de edad. Hallar el peso promedio. Hallar la
      talla promedio. Los datos deben ser reales.
 3.   Registrar y mostrar los datos mas importantes de América Latina. Como
      mínimo 5 variables. Hallar la población y la extensión promedio. Hallar el
      PBI promedio. Los datos deben ser reales.
 4.   Registrar y mostrar los datos mas importantes de su Curso de
      Programación C. Como mínimo 5 variables. Hallar el promedio de notas, la
      edad media y la talla promedio. Los datos deben ser reales.
 5.   Registrar y mostrar los datos mas importantes de una empresa. Considerar
      los siguientes variables: Código, Apellidos, Nombres, Fecha de Ingreso,
      Sexo, SI es casado o no, Numero de hijos, Grado de Instrucción, Edad,
      Talla. Hacer un reporte estadístico de los empleados considerando la
      media, la moda y la desviación estándar de cada variable.
                           Programación - Prof. Ing. Jose C. Benitez P.       13
Tarea (T10)
6. Un programa que pida el nombre, el apellido y la edad de una persona, los
    almacene en un “struct” y luego muestre los tres datos en una misma línea,
    separados por comas.
7. Un programa que pida datos de 8 personas: nombre, dia de nacimiento, mes de
    nacimiento, y año de nacimiento (que se deben almacenar en una tabla de
    structs).
   Después deberá repetir lo siguiente: preguntar un número de mes y mostrar en
    pantalla los datos de las personas que cumplan los años durante ese mes.
    Terminará de repetirse cuando se teclee 0 como número de mes.
8. Un programa que sea capaz de almacenar los datos de 50 personas: nombre,
    dirección, teléfono, edad (usando una tabla de structs). Deberá ir pidiendo los
    datos uno por uno, hasta que un nombre se introduzca vacío (se pulse Intro sin
    teclear nada). Entonces deberá aparecer un menú que permita:
       Mostrar la lista de todos los nombres.
       Mostrar las personas de una cierta edad.
       Mostrar las personas cuya inicial sea la que el usuario indique.
       Salir del programa
   (lógicamente, este menú debe repetirse hasta que se escoja la opción de “salir”).

                            Programación - Prof. Ing. Jose C. Benitez P.      14
Presentación
   Todos los códigos fuentes deben ser presentados en un
   solo archivo de texto, cuyo nombre lleve las iniciales del
   curso, sus Apellidos, guion bajo y luego el numero de la
   tarea. Ejemplo:
                PRG_BenitezPalacios_T10.txt
   Los códigos deben estar comentados bloque a bloque.
   La presentación de esta Tarea es obligatoria y tiene 03
   puntos de bonificación en la Tercera Practica Calificada.
   Plazo de entrega: Lunes 30/01/12
              Las Tareas que no cumplan las
                  indicaciones no serán
              recepcionados por el profesor.

                   Programación - Prof. Ing. Jose C. Benitez P.   15
Sesión 10. Estructuras y uniones

               Programación




         http://utpprogc.blogspot.com
               Programación - Prof. Ing. Jose C. Benitez P.   16

Más contenido relacionado

Similar a Utp pti_s10_estructuras y uniones

GuíA De PráCtica 2
GuíA De PráCtica 2GuíA De PráCtica 2
GuíA De PráCtica 2
louis
 
Clase 10_ programacion
Clase 10_ programacionClase 10_ programacion
Clase 10_ programacion
diego MC
 
ESTRUCTURAS Y UNIONES EN C++
ESTRUCTURAS Y UNIONES EN C++ESTRUCTURAS Y UNIONES EN C++
ESTRUCTURAS Y UNIONES EN C++
die_dex
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matrices
Johanna Marin
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matrices
Johanna Marin
 
Unidad%2 bxii estructuras
Unidad%2 bxii estructurasUnidad%2 bxii estructuras
Unidad%2 bxii estructuras
jeoselyn
 
5 Mecanismos Reuntilizacion Abstraccion Cont
5 Mecanismos Reuntilizacion Abstraccion Cont5 Mecanismos Reuntilizacion Abstraccion Cont
5 Mecanismos Reuntilizacion Abstraccion Cont
UVM
 
Estructuras 1
Estructuras 1Estructuras 1
Estructuras 1
eduard
 

Similar a Utp pti_s10_estructuras y uniones (20)

GuíA De PráCtica 2
GuíA De PráCtica 2GuíA De PráCtica 2
GuíA De PráCtica 2
 
Clase 10_ programacion
Clase 10_ programacionClase 10_ programacion
Clase 10_ programacion
 
ESTRUCTURAS Y UNIONES EN C++
ESTRUCTURAS Y UNIONES EN C++ESTRUCTURAS Y UNIONES EN C++
ESTRUCTURAS Y UNIONES EN C++
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
 
Tema-estructuras-c++.pdf
Tema-estructuras-c++.pdfTema-estructuras-c++.pdf
Tema-estructuras-c++.pdf
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
 
Tema 9 www.fresymetal.com
Tema 9 www.fresymetal.comTema 9 www.fresymetal.com
Tema 9 www.fresymetal.com
 
Estructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la ProgramaciónEstructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la Programación
 
Estructura de Datos
Estructura de DatosEstructura de Datos
Estructura de Datos
 
Arrays csharp visto_desde_c
Arrays csharp visto_desde_cArrays csharp visto_desde_c
Arrays csharp visto_desde_c
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matrices
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matrices
 
Unidad%2 bxii estructuras
Unidad%2 bxii estructurasUnidad%2 bxii estructuras
Unidad%2 bxii estructuras
 
Definición de clases en POO
Definición de clases en POODefinición de clases en POO
Definición de clases en POO
 
C++
C++C++
C++
 
5 Mecanismos Reuntilizacion Abstraccion Cont
5 Mecanismos Reuntilizacion Abstraccion Cont5 Mecanismos Reuntilizacion Abstraccion Cont
5 Mecanismos Reuntilizacion Abstraccion Cont
 
Estructuras 1
Estructuras 1Estructuras 1
Estructuras 1
 
Cplus
CplusCplus
Cplus
 
C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 

Más de jcbenitezp

Tarea 1 tesis i filosofia y conocimiento
Tarea 1 tesis i filosofia y conocimientoTarea 1 tesis i filosofia y conocimiento
Tarea 1 tesis i filosofia y conocimiento
jcbenitezp
 
Uni rdsi 2016 1 sesion 13-14 redes moviles 4 g
Uni rdsi 2016 1 sesion 13-14 redes moviles 4 gUni rdsi 2016 1 sesion 13-14 redes moviles 4 g
Uni rdsi 2016 1 sesion 13-14 redes moviles 4 g
jcbenitezp
 
Uni rdsi 2016 1 sesion 12 redes moviles 3 g
Uni rdsi 2016 1 sesion 12 redes moviles 3 gUni rdsi 2016 1 sesion 12 redes moviles 3 g
Uni rdsi 2016 1 sesion 12 redes moviles 3 g
jcbenitezp
 
Calendario academico 2015 02 g
Calendario academico 2015   02 gCalendario academico 2015   02 g
Calendario academico 2015 02 g
jcbenitezp
 
Db vsa-011 registro de asistencia docente ago2015
Db vsa-011 registro de asistencia docente  ago2015Db vsa-011 registro de asistencia docente  ago2015
Db vsa-011 registro de asistencia docente ago2015
jcbenitezp
 
Utp 2015-2_pdi_lab3
 Utp 2015-2_pdi_lab3 Utp 2015-2_pdi_lab3
Utp 2015-2_pdi_lab3
jcbenitezp
 
Utp sirn_2015-2 lab3
 Utp sirn_2015-2 lab3 Utp sirn_2015-2 lab3
Utp sirn_2015-2 lab3
jcbenitezp
 
Pdi paterno m_lab2c
Pdi paterno m_lab2cPdi paterno m_lab2c
Pdi paterno m_lab2c
jcbenitezp
 
Utp 2015-2_sirn_s7_r_competitivas
 Utp 2015-2_sirn_s7_r_competitivas Utp 2015-2_sirn_s7_r_competitivas
Utp 2015-2_sirn_s7_r_competitivas
jcbenitezp
 
Utp 2015-2_sirn_s7_r_competitivas
 Utp 2015-2_sirn_s7_r_competitivas Utp 2015-2_sirn_s7_r_competitivas
Utp 2015-2_sirn_s7_r_competitivas
jcbenitezp
 
Utp 2015-2_sirn_s6_adaline y backpropagation
 Utp 2015-2_sirn_s6_adaline y backpropagation Utp 2015-2_sirn_s6_adaline y backpropagation
Utp 2015-2_sirn_s6_adaline y backpropagation
jcbenitezp
 
Utp ia_s1_introduccion ia
 Utp ia_s1_introduccion ia Utp ia_s1_introduccion ia
Utp ia_s1_introduccion ia
jcbenitezp
 
Utp sirn_s1_introduccion ia 2014-2
 Utp sirn_s1_introduccion ia 2014-2 Utp sirn_s1_introduccion ia 2014-2
Utp sirn_s1_introduccion ia 2014-2
jcbenitezp
 
Utp sirn_s1_introduccion ia 2014-2
 Utp sirn_s1_introduccion ia 2014-2 Utp sirn_s1_introduccion ia 2014-2
Utp sirn_s1_introduccion ia 2014-2
jcbenitezp
 
Utp sirn_2014-1 lab1
 Utp sirn_2014-1 lab1 Utp sirn_2014-1 lab1
Utp sirn_2014-1 lab1
jcbenitezp
 
Utp sirn_s1_introduccion ia 2014-2
 Utp sirn_s1_introduccion ia 2014-2 Utp sirn_s1_introduccion ia 2014-2
Utp sirn_s1_introduccion ia 2014-2
jcbenitezp
 
Inteligencia artificial
Inteligencia artificialInteligencia artificial
Inteligencia artificial
jcbenitezp
 

Más de jcbenitezp (20)

Cap4 jc benitez
Cap4 jc benitezCap4 jc benitez
Cap4 jc benitez
 
Tarea 1 tesis i filosofia y conocimiento
Tarea 1 tesis i filosofia y conocimientoTarea 1 tesis i filosofia y conocimiento
Tarea 1 tesis i filosofia y conocimiento
 
It526 2017 2 ep
It526 2017 2 epIt526 2017 2 ep
It526 2017 2 ep
 
Uni rdsi 2016 1 sesion 13-14 redes moviles 4 g
Uni rdsi 2016 1 sesion 13-14 redes moviles 4 gUni rdsi 2016 1 sesion 13-14 redes moviles 4 g
Uni rdsi 2016 1 sesion 13-14 redes moviles 4 g
 
Uni rdsi 2016 1 sesion 12 redes moviles 3 g
Uni rdsi 2016 1 sesion 12 redes moviles 3 gUni rdsi 2016 1 sesion 12 redes moviles 3 g
Uni rdsi 2016 1 sesion 12 redes moviles 3 g
 
It526 2015 2 pc3
It526 2015 2 pc3 It526 2015 2 pc3
It526 2015 2 pc3
 
Calendario academico 2015 02 g
Calendario academico 2015   02 gCalendario academico 2015   02 g
Calendario academico 2015 02 g
 
Db vsa-011 registro de asistencia docente ago2015
Db vsa-011 registro de asistencia docente  ago2015Db vsa-011 registro de asistencia docente  ago2015
Db vsa-011 registro de asistencia docente ago2015
 
Utp 2015-2_pdi_lab3
 Utp 2015-2_pdi_lab3 Utp 2015-2_pdi_lab3
Utp 2015-2_pdi_lab3
 
Utp sirn_2015-2 lab3
 Utp sirn_2015-2 lab3 Utp sirn_2015-2 lab3
Utp sirn_2015-2 lab3
 
Pdi paterno m_lab2c
Pdi paterno m_lab2cPdi paterno m_lab2c
Pdi paterno m_lab2c
 
Utp 2015-2_sirn_s7_r_competitivas
 Utp 2015-2_sirn_s7_r_competitivas Utp 2015-2_sirn_s7_r_competitivas
Utp 2015-2_sirn_s7_r_competitivas
 
Utp 2015-2_sirn_s7_r_competitivas
 Utp 2015-2_sirn_s7_r_competitivas Utp 2015-2_sirn_s7_r_competitivas
Utp 2015-2_sirn_s7_r_competitivas
 
Utp 2015-2_sirn_s6_adaline y backpropagation
 Utp 2015-2_sirn_s6_adaline y backpropagation Utp 2015-2_sirn_s6_adaline y backpropagation
Utp 2015-2_sirn_s6_adaline y backpropagation
 
Utp ia_s1_introduccion ia
 Utp ia_s1_introduccion ia Utp ia_s1_introduccion ia
Utp ia_s1_introduccion ia
 
Utp sirn_s1_introduccion ia 2014-2
 Utp sirn_s1_introduccion ia 2014-2 Utp sirn_s1_introduccion ia 2014-2
Utp sirn_s1_introduccion ia 2014-2
 
Utp sirn_s1_introduccion ia 2014-2
 Utp sirn_s1_introduccion ia 2014-2 Utp sirn_s1_introduccion ia 2014-2
Utp sirn_s1_introduccion ia 2014-2
 
Utp sirn_2014-1 lab1
 Utp sirn_2014-1 lab1 Utp sirn_2014-1 lab1
Utp sirn_2014-1 lab1
 
Utp sirn_s1_introduccion ia 2014-2
 Utp sirn_s1_introduccion ia 2014-2 Utp sirn_s1_introduccion ia 2014-2
Utp sirn_s1_introduccion ia 2014-2
 
Inteligencia artificial
Inteligencia artificialInteligencia artificial
Inteligencia artificial
 

Utp pti_s10_estructuras y uniones

  • 1. Programación (L109) Sesión: 10 Estructuras y Uniones Ing. José C. Benítez P.
  • 2. Sesión 10. Temas Estructuras y Uniones Introducción Concepto y declaración de una Estructura Estructuras anidadas. Arrays de Estructuras Programación - Prof. Ing. Jose C. Benitez P. 2
  • 3. Arreglos, Estructuras y Uniones. Introducción En la creación de aplicaciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos que serian muy difícil de describir con los tipos de datos primitivos, en este caso debemos aprovecharnos de las características que hacen al lenguaje C especial, es decir se debe usar estructuras, uniones y punteros. Programación - Prof. Ing. Jose C. Benitez P. 3
  • 4. Arreglos, Estructuras y Uniones. Introducción Conociendo el uso de arrays en C, aprender como se usan estructuras y uniones será sencillo. Una estructura es un array que tiene la capacidad de almacenar variables con distintos tipos y nombres. Una unión es similar a una estructura, pero solo podrá tener un valor a la vez. Programación - Prof. Ing. Jose C. Benitez P. 4
  • 5. Estructuras. Concepto y declaración Una estructura contiene varios tipos de datos. La forma de definir una estructura es haciendo struct mystruct { uso de la palabra clave struct. int numero; Ejemplo de la declaración de una estructura: double peso; char nombre[25]; } variable; "variable" es una instancia de "mystruct" y no es necesario ponerla aquí. struct mystruct Se podría omitir de la declaración de { "mystruct" y más tarde declararla int numero; double peso; usando: char nombre[25]; struct mystruct variable; }; Programación - Prof. Ing. Jose C. Benitez P. 5
  • 6. Estructuras. Concepto y declaración struct mystruct También es una práctica muy común { int numero; asignarle un alias o sinónimo al nombre de la double peso; estructura, para evitar el tener que poner char nombre[25]; "struct mystruct" cada vez. } variable; C nos permite la posibilidad de hacer esto typedef struct usando la palabra clave typedef, lo que crea { un alias a un tipo: int numero; double peso; char nombre[25]; La estructura misma no tiene nombre (por } Mystruct; la ausencia de nombre en la primera linea), pero tiene de alias "Mystruct". Entonces se puede usar así: Mystruct variable; Programación - Prof. Ing. Jose C. Benitez P. 6
  • 7. Estructuras. Concepto y declaración Note que es una convención, y una buena costumbre usar mayúscula en la typedef struct primera letra de un sinónimo de tipo. { De todos modos lo importante es darle int numero; double peso; algún identificador para poder hacer char nombre[25]; referencia a la estructura: podríamos } Mystruct; tener una estructura de datos recursiva de algún tipo. Mystruct variable; Programación - Prof. Ing. Jose C. Benitez P. 7
  • 8. #include <stdio.h> #include <string.h> Estructuras. Concepto /* definimos una estructura para cds */ struct cd { Ejemplo 1: char titulo[30]; char artista[25]; float precio; int canciones; } Cd1 = {"Canciones Bebe", "Pinocho", 12.50, 16}; void main(void) { struct cd Cd2; strcpy(Cd2.titulo, "New Age“); strcpy(Cd2.artista, "Old Man“); Cd2.precio = 15.00; Cd2.canciones = 12; printf("n Cd 1"); printf("n Titulo: %s ", Cd1.titulo); printf("n Artista: %s ", Cd1.artista); printf("n Total Canciones: %d ", Cd1.canciones); printf("n Precio Cd: %f ", Cd1.precio); printf(“nn Cd 2"); printf("n Titulo: %s ", Cd2.titulo); printf("n Artista: %s ", Cd2.artista); printf("n Total Canciones: %d ", Cd2.canciones); printf("n Precio Cd: %.2f ", Cd2.precio); getchar(); } Programación - Prof. Ing. Jose C. Benitez P. 8
  • 9. Estructuras. Concepto Ejemplo 2: #include<stdio.h> #include<stdlib.h> #include<string.h> void main() { struct { char nombre[20]; int edad; float estatura; } persona; printf("nHola! Voy a hacerte unas preguntas:"); printf("nComo te llamas? : "); scanf("%s",persona.nombre); // gets(persona.nombre); printf("nCuantos anhos tienes? : "); scanf_s("%d", &persona.edad ); printf("nCuanto mides? : "); scanf_s("%f", &persona.estatura ); printf( "Te llamas %s tienes %d anhos y mides %.2fn", persona.nombre, persona.edad, persona.estatura); system("PAUSE"); } Programación - Prof. Ing. Jose C. Benitez P. 9
  • 10. Estructuras Anidadas. Concepto y declaración struct Las estructuras se usan como { cualquier otro tipo de variables int edad; char* nombre; normales y corrientes, pero struct almacenadas dentro de un { grupo. int numero; char* direccion; Además, una estructura puede int telefono; contener a otra como en el } vivienda; ejemplo: } persona; Para acceder a la dirección, por ejemplo, habría que escribir persona.vivienda.direccion; Programación - Prof. Ing. Jose C. Benitez P. 10
  • 11. Arrays de Estructuras. Concepto y declaración struct { Se ha creado 10 personas con int edad; los mismos datos. char* nombre; struct Para acceder, por ejemplo al { número 3 habría que escribir: int numero; char* direccion; persona[2].nombre; int telefono; } vivienda; } persona[20]; Programación - Prof. Ing. Jose C. Benitez P. 11
  • 12. Arrays de Estructuras. Ejemplo #include <stdio.h> int main(){ int npersonas; int i = 1; struct { int edad; float estatura; char* nombre; } persona[9]; printf( "Hola! Voy a hacerte unas preguntas:"); printf( "Cuantas personas participaran?" ); scanf( "%i", &npersonas ); for( i = 0; i < 10 ; i++ ) { printf( "nComo te llamas? : "); scanf( "%s", &persona[i].nombre ); printf( "nCuantos anios tienes? : "); scanf( "%d", &persona[i].edad ); printf( "nCuanto mides? : "); scanf( "%f", &persona[i].estatura ); printf( "Te llamas %s tienes %d anios y mides %.2f", &persona[i].nombre, persona[i].edad, persona[i].estatura ); } return 0; getchar(); } Programación - Prof. Ing. Jose C. Benitez P. 12
  • 13. Tarea (T10) Hacer un programa en C utilizando estructuras. (Utilizar enciclopedias): 1. Registrar y mostrar los datos mas importantes de su familia. Como mínimo 5 variables. Los datos deben ser reales. 2. Registrar y mostrar los datos mas importantes de su clase. Como mínimo 5 variables. Hallar el promedio de edad. Hallar el peso promedio. Hallar la talla promedio. Los datos deben ser reales. 3. Registrar y mostrar los datos mas importantes de América Latina. Como mínimo 5 variables. Hallar la población y la extensión promedio. Hallar el PBI promedio. Los datos deben ser reales. 4. Registrar y mostrar los datos mas importantes de su Curso de Programación C. Como mínimo 5 variables. Hallar el promedio de notas, la edad media y la talla promedio. Los datos deben ser reales. 5. Registrar y mostrar los datos mas importantes de una empresa. Considerar los siguientes variables: Código, Apellidos, Nombres, Fecha de Ingreso, Sexo, SI es casado o no, Numero de hijos, Grado de Instrucción, Edad, Talla. Hacer un reporte estadístico de los empleados considerando la media, la moda y la desviación estándar de cada variable. Programación - Prof. Ing. Jose C. Benitez P. 13
  • 14. Tarea (T10) 6. Un programa que pida el nombre, el apellido y la edad de una persona, los almacene en un “struct” y luego muestre los tres datos en una misma línea, separados por comas. 7. Un programa que pida datos de 8 personas: nombre, dia de nacimiento, mes de nacimiento, y año de nacimiento (que se deben almacenar en una tabla de structs). Después deberá repetir lo siguiente: preguntar un número de mes y mostrar en pantalla los datos de las personas que cumplan los años durante ese mes. Terminará de repetirse cuando se teclee 0 como número de mes. 8. Un programa que sea capaz de almacenar los datos de 50 personas: nombre, dirección, teléfono, edad (usando una tabla de structs). Deberá ir pidiendo los datos uno por uno, hasta que un nombre se introduzca vacío (se pulse Intro sin teclear nada). Entonces deberá aparecer un menú que permita: Mostrar la lista de todos los nombres. Mostrar las personas de una cierta edad. Mostrar las personas cuya inicial sea la que el usuario indique. Salir del programa (lógicamente, este menú debe repetirse hasta que se escoja la opción de “salir”). Programación - Prof. Ing. Jose C. Benitez P. 14
  • 15. Presentación Todos los códigos fuentes deben ser presentados en un solo archivo de texto, cuyo nombre lleve las iniciales del curso, sus Apellidos, guion bajo y luego el numero de la tarea. Ejemplo: PRG_BenitezPalacios_T10.txt Los códigos deben estar comentados bloque a bloque. La presentación de esta Tarea es obligatoria y tiene 03 puntos de bonificación en la Tercera Practica Calificada. Plazo de entrega: Lunes 30/01/12 Las Tareas que no cumplan las indicaciones no serán recepcionados por el profesor. Programación - Prof. Ing. Jose C. Benitez P. 15
  • 16. Sesión 10. Estructuras y uniones Programación http://utpprogc.blogspot.com Programación - Prof. Ing. Jose C. Benitez P. 16