Programación
   (L109)
    Sesión: 5
     Arreglos
Ing. José C. Benítez P.
Sesión 5. Temas

         Arreglos
           Concepto
           Vector o array unidimensional.
           Declaración. Inicialización
           Arreglos de caracteres. Lectura de
           caracteres .
           Matriz o array multimensional.
           Declaración. Inicialización
           Arreglos de cadenas. Lectura de cadenas




                  Programación - Prof. Ing. Jose C. Benitez P.   2
Sesión 5. Temas

         Arreglos
           Concepto
           Vector o array unidimensional.
           Declaración. Inicialización
           Arreglos de caracteres. Lectura de
           caracteres .
           Matriz o array multimensional.
           Declaración. Inicialización
           Arreglos de cadenas. Lectura de cadenas




                  Programación - Prof. Ing. Jose C. Benitez P.   3
Arreglos. Concepto


         Un array es un identificador que referencia un
         conjunto de datos del mismo tipo.
         Imagina un tipo de dato int; con un array
         podremos crear un conjunto de datos de tipo
         int y utilizar uno u otro con sólo cambiar el
         índice que lo referencia.
         El índice será un valor entero y positivo.
         En C los arrays comienzan por la posición 0.




                   Programación - Prof. Ing. Jose C. Benitez P.   4
Sesión 5. Temas

         Arreglos
           Concepto
           Vector o array unidimensional.
           Declaración. Inicialización
           Arreglos de caracteres. Lectura de
           caracteres
           Matriz o array multimensional.
           Declaración. Inicialización
           Arreglos de cadenas. Lectura de cadenas




                  Programación - Prof. Ing. Jose C. Benitez P.   5
Arrays. Declaración. Inicialización

         Un vector es un array unidimensional, es decir,
         sólo utiliza un índice para referenciar a cada uno
         de los elementos.
         Declaración:
                      tipo nombre [tamaño];
         El tipo puede ser cualquiera de los ya conocidos.
         El tamaño indica el número de elementos del
         vector ( se debe indicar entre corchetes [ ] ).




                     Programación - Prof. Ing. Jose C. Benitez P.   6
Arrays. Declaración. Inicialización

  En el ejemplo se puede               Archivo: array1.c
  observar que la variable i
                                       /* Declaración de un array. */
  es utilizada como índice, el
  primer for sirve para                #include <stdio.h>
                                       main() /* Rellenamos del 0 - 9 */
  rellenar el vector y el              {
  segundo para visualizarlo.             int vector[10],i; /* Declaramos el array */
                                         for (i=0;i<10;i++) vector[i]=i; /* Inicializamos el array */
  Como se ve, las posiciones             for (i=0;i<10;i++) printf(" %d",vector[i]); /* Imprime array */
                                       }
  van de 0 a 9 ( total 10
  elementos ).




                      Programación - Prof. Ing. Jose C. Benitez P.                                 7
Arrays. Declaración. Inicialización

   Podemos inicializar (asignarle valores) un vector en el
   momento de declararlo.
   Si lo hacemos así no es necesario indicar el tamaño.
   Sintaxis:
           tipo nombre []={ valor 1, valor 2...};
   Ejemplos:
           int vector[]={1,2,3,4,5,6,7,8};
           char vector[]={'p','r','o','g','r','a','m','a','d','o','r‘, ‘0‘ };




                          Programación - Prof. Ing. Jose C. Benitez P.           8
Sesión 5. Temas

         Arreglos
           Concepto
           Vector o array unidimensional.
           Declaración. Inicialización.
           Arreglos de caracteres. Lectura de
           caracteres
           Matriz o array multimensional.
           Declaración. Inicialización
           Arreglos de cadenas. Lectura de cadenas




                  Programación - Prof. Ing. Jose C. Benitez P.   9
Arrays de caracteres.
    Declaración:
         char vector[]={'p','r','o','g','r','a','m','a','d','o','r‘, '0' };
         char vector[]="programador";
    En los vectores de tipo char (cadena de caracteres), se debe
    indicar en que elemento se encuentra el fin de la cadena
    mediante el caracter nulo (0).
    Esto no lo controla el compilador, y tendremos que insertar
    este caracter al final de la cadena.
    En un vector de 10 elementos de tipo char podremos
    rellenar un máximo de 9, es decir, hasta vector[8].
    Si sólo rellenamos los 5 primeros, hasta vector[4], debemos
    asignar el caracter nulo a vector[5]: vector[5]='0'; .

                        Programación - Prof. Ing. Jose C. Benitez P.      10
Arrays de caracteres.
Ejemplo: Como se rellena un vector de tipo char.
 Podemos ver que en el for se encuentran dos
 condiciones:
                                                                         Archivo: arrays2.c
 1.- Que no se hayan rellenado todos los elementos (i<99).
 2.- Que el usuario no haya pulsado la tecla ENTER, cuyo
                                                                         /* Vector de tipo char. */
 código ASCII es 13. (cadena[x-i]!=13).
 También podemos observar una nueva función llamada
                                                                         #include <stdio.h>
 getche( ), que se encuentra en conio.h.
                                                                         #include <conio.h>
 Esta función permite la entrada de un caracter por
                                                                         main() /* Rellenamos un vector char */
 teclado.
                                                                         {
 Después se encuentra un if, que comprueba si se ha
                                                                           char cadena[100];
 rellenado todo el vector.
                                                                           int i;
 Si es cierto, coloca el caracter nulo en el elemento nº100
                                                                           for (i=0;i<99 && cadena[i-1]!=13;i++)
 (cadena[99]).
                                                                                      cadena[i]=getche( );
 En caso contrario tenemos el else, que asigna el caracter
                                                                           if (i==99) cadena[i]='0';
 nulo al elemento que almacenó el caracter ENTER.
                                                                           else cadena[i-1]='0';
                                                                           printf("n%s",cadena);
 Nota: Al declarar una cadena deberemos reservar una
                                                                         }
 posición adicional (para '0') a la longitud que queremos
 que tenga dicha cadena.

                                   Programación - Prof. Ing. Jose C. Benitez P.                            11
Sesión 5. Temas

         Arreglos
           Concepto
           Vector o array unidimensional.
           Declaración. Inicialización.
           Arreglos de caracteres. Lectura de
           caracteres .
           Matriz o array multimensional.
           Declaración. Inicialización
           Arreglos de cadenas. Lectura de cadenas




                  Programación - Prof. Ing. Jose C. Benitez P.   12
Arrays multimensionales

    Una matriz es un array multidimensional. Se definen
    igual que los vectores excepto que se requiere un
    índice por cada dimensión.
    Sintaxis:
    tipo nombre [tamaño 1][tamaño 2]...;
    Una matriz bidimensional se podría representar
    gráficamente como una tabla con filas y columnas.
    La matriz tridimensional se utiliza, por ejemplo, para
    trabajos gráficos con objetos 3D.



                     Programación - Prof. Ing. Jose C. Benitez P.   13
Arrays multimensionales
                                                          Archivo: arrays4.c
En el ejemplo:
Se puede ver como se rellena y                            /* Matriz bidimensional. */
                                                          #include <stdio.h>
visualiza una matriz bidimensional.                       main() /* Rellenamos una matriz */
                                                          {
Se necesitan dos bucles para cada                            int x,i,numeros[3][4];
una de las operaciones (relleno y                            /* rellenamos la matriz */
                                                             for (x=0;x<3;x++)
visualización).                                                for (i=0;i<4;i++)
Un bucle controla las filas y otro las                           scanf("%d",&numeros[x][i]);
                                                             /* visualizamos la matriz */
columnas.                                                    for (x=0;x<3;x++)
                                                               for (i=0;i<4;i++)
                                                                  printf("%d",numeros[x][i]);
                                                          }




                         Programación - Prof. Ing. Jose C. Benitez P.                           14
Arrays multimensionales

  Si al declarar una matriz también queremos inicializarla, habrá
  que tener en cuenta el orden en el que los valores son
  asignados a los elementos de la matriz.

  Ejemplos:
  int numeros[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

  quedarían asignados de la siguiente manera:
  numeros[0][0]=1 numeros[0][1]=2 numeros[0][2]=3 numeros[0][3]=4
  numeros[1][0]=5 numeros[1][1]=6 numeros[1][2]=7 numeros[1][3]=8
  numeros[2][0]=9 numeros[2][1]=10 numeros[2][2]=11 numeros[2][3]=12



                       Programación - Prof. Ing. Jose C. Benitez P.    15
Sesión 5. Temas

         Arreglos
           Concepto
           Vector o array unidimensional.
           Declaración. Inicialización.
           Arreglos de caracteres. Lectura de
           caracteres .
           Matriz o array multimensional.
           Declaración. Inicialización
           Arreglos de cadenas. Lectura de cadenas




                  Programación - Prof. Ing. Jose C. Benitez P.   16
Arrays de cadenas

     También se pueden inicializar cadenas de texto:

     char dias[7][10] = {"lunes", "martes", "miércoles",
     "jueves","viernes","sábado","domingo"};

     Para referirnos a cada palabra bastaría con el
     primer índice:

     printf("%s", dias[i] );




                      Programación - Prof. Ing. Jose C. Benitez P.   17
Tarea (T5)
      Hacer un programa en C utilizando arrays para los siguientes
      enunciados:
      1. Hacer una tabla que muestre los días de la semana y las
          temperaturas promedio por día en grados centígrados.
         El reporte debe ser el siguiente:
         Día           Temperatura promedio (oC)
      2. Hacer una tabla que muestre los meses del año, los días
          feriados por mes y las semanas pro mes.
         El reporte debe ser el siguiente:
         Mes           Numero de feriados Numero de Semanas
      3. Hacer una tabla que muestre los nombres de sus padres y
          hermanos y los fechas de sus cumpleaños.
         El reporte debe ser el siguiente:
         Nombres Apellidos Parentesco Fecha Cumpleaños
      4. Escribir una matriz identidad de 5 x 5.

                     Programación - Prof. Ing. Jose C. Benitez P.    18
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_T5.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 23/01/12
              Las Tareas que no cumplan las
                  indicaciones no serán
              recepcionados por el profesor.

                   Programación - Prof. Ing. Jose C. Benitez P.   19
Sesión 5. Arreglos

               Programación




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

Utp pti_s5_arreglos

  • 1.
    Programación (L109) Sesión: 5 Arreglos Ing. José C. Benítez P.
  • 2.
    Sesión 5. Temas Arreglos Concepto Vector o array unidimensional. Declaración. Inicialización Arreglos de caracteres. Lectura de caracteres . Matriz o array multimensional. Declaración. Inicialización Arreglos de cadenas. Lectura de cadenas Programación - Prof. Ing. Jose C. Benitez P. 2
  • 3.
    Sesión 5. Temas Arreglos Concepto Vector o array unidimensional. Declaración. Inicialización Arreglos de caracteres. Lectura de caracteres . Matriz o array multimensional. Declaración. Inicialización Arreglos de cadenas. Lectura de cadenas Programación - Prof. Ing. Jose C. Benitez P. 3
  • 4.
    Arreglos. Concepto Un array es un identificador que referencia un conjunto de datos del mismo tipo. Imagina un tipo de dato int; con un array podremos crear un conjunto de datos de tipo int y utilizar uno u otro con sólo cambiar el índice que lo referencia. El índice será un valor entero y positivo. En C los arrays comienzan por la posición 0. Programación - Prof. Ing. Jose C. Benitez P. 4
  • 5.
    Sesión 5. Temas Arreglos Concepto Vector o array unidimensional. Declaración. Inicialización Arreglos de caracteres. Lectura de caracteres Matriz o array multimensional. Declaración. Inicialización Arreglos de cadenas. Lectura de cadenas Programación - Prof. Ing. Jose C. Benitez P. 5
  • 6.
    Arrays. Declaración. Inicialización Un vector es un array unidimensional, es decir, sólo utiliza un índice para referenciar a cada uno de los elementos. Declaración: tipo nombre [tamaño]; El tipo puede ser cualquiera de los ya conocidos. El tamaño indica el número de elementos del vector ( se debe indicar entre corchetes [ ] ). Programación - Prof. Ing. Jose C. Benitez P. 6
  • 7.
    Arrays. Declaración. Inicialización En el ejemplo se puede Archivo: array1.c observar que la variable i /* Declaración de un array. */ es utilizada como índice, el primer for sirve para #include <stdio.h> main() /* Rellenamos del 0 - 9 */ rellenar el vector y el { segundo para visualizarlo. int vector[10],i; /* Declaramos el array */ for (i=0;i<10;i++) vector[i]=i; /* Inicializamos el array */ Como se ve, las posiciones for (i=0;i<10;i++) printf(" %d",vector[i]); /* Imprime array */ } van de 0 a 9 ( total 10 elementos ). Programación - Prof. Ing. Jose C. Benitez P. 7
  • 8.
    Arrays. Declaración. Inicialización Podemos inicializar (asignarle valores) un vector en el momento de declararlo. Si lo hacemos así no es necesario indicar el tamaño. Sintaxis: tipo nombre []={ valor 1, valor 2...}; Ejemplos: int vector[]={1,2,3,4,5,6,7,8}; char vector[]={'p','r','o','g','r','a','m','a','d','o','r‘, ‘0‘ }; Programación - Prof. Ing. Jose C. Benitez P. 8
  • 9.
    Sesión 5. Temas Arreglos Concepto Vector o array unidimensional. Declaración. Inicialización. Arreglos de caracteres. Lectura de caracteres Matriz o array multimensional. Declaración. Inicialización Arreglos de cadenas. Lectura de cadenas Programación - Prof. Ing. Jose C. Benitez P. 9
  • 10.
    Arrays de caracteres. Declaración: char vector[]={'p','r','o','g','r','a','m','a','d','o','r‘, '0' }; char vector[]="programador"; En los vectores de tipo char (cadena de caracteres), se debe indicar en que elemento se encuentra el fin de la cadena mediante el caracter nulo (0). Esto no lo controla el compilador, y tendremos que insertar este caracter al final de la cadena. En un vector de 10 elementos de tipo char podremos rellenar un máximo de 9, es decir, hasta vector[8]. Si sólo rellenamos los 5 primeros, hasta vector[4], debemos asignar el caracter nulo a vector[5]: vector[5]='0'; . Programación - Prof. Ing. Jose C. Benitez P. 10
  • 11.
    Arrays de caracteres. Ejemplo:Como se rellena un vector de tipo char. Podemos ver que en el for se encuentran dos condiciones: Archivo: arrays2.c 1.- Que no se hayan rellenado todos los elementos (i<99). 2.- Que el usuario no haya pulsado la tecla ENTER, cuyo /* Vector de tipo char. */ código ASCII es 13. (cadena[x-i]!=13). También podemos observar una nueva función llamada #include <stdio.h> getche( ), que se encuentra en conio.h. #include <conio.h> Esta función permite la entrada de un caracter por main() /* Rellenamos un vector char */ teclado. { Después se encuentra un if, que comprueba si se ha char cadena[100]; rellenado todo el vector. int i; Si es cierto, coloca el caracter nulo en el elemento nº100 for (i=0;i<99 && cadena[i-1]!=13;i++) (cadena[99]). cadena[i]=getche( ); En caso contrario tenemos el else, que asigna el caracter if (i==99) cadena[i]='0'; nulo al elemento que almacenó el caracter ENTER. else cadena[i-1]='0'; printf("n%s",cadena); Nota: Al declarar una cadena deberemos reservar una } posición adicional (para '0') a la longitud que queremos que tenga dicha cadena. Programación - Prof. Ing. Jose C. Benitez P. 11
  • 12.
    Sesión 5. Temas Arreglos Concepto Vector o array unidimensional. Declaración. Inicialización. Arreglos de caracteres. Lectura de caracteres . Matriz o array multimensional. Declaración. Inicialización Arreglos de cadenas. Lectura de cadenas Programación - Prof. Ing. Jose C. Benitez P. 12
  • 13.
    Arrays multimensionales Una matriz es un array multidimensional. Se definen igual que los vectores excepto que se requiere un índice por cada dimensión. Sintaxis: tipo nombre [tamaño 1][tamaño 2]...; Una matriz bidimensional se podría representar gráficamente como una tabla con filas y columnas. La matriz tridimensional se utiliza, por ejemplo, para trabajos gráficos con objetos 3D. Programación - Prof. Ing. Jose C. Benitez P. 13
  • 14.
    Arrays multimensionales Archivo: arrays4.c En el ejemplo: Se puede ver como se rellena y /* Matriz bidimensional. */ #include <stdio.h> visualiza una matriz bidimensional. main() /* Rellenamos una matriz */ { Se necesitan dos bucles para cada int x,i,numeros[3][4]; una de las operaciones (relleno y /* rellenamos la matriz */ for (x=0;x<3;x++) visualización). for (i=0;i<4;i++) Un bucle controla las filas y otro las scanf("%d",&numeros[x][i]); /* visualizamos la matriz */ columnas. for (x=0;x<3;x++) for (i=0;i<4;i++) printf("%d",numeros[x][i]); } Programación - Prof. Ing. Jose C. Benitez P. 14
  • 15.
    Arrays multimensionales Si al declarar una matriz también queremos inicializarla, habrá que tener en cuenta el orden en el que los valores son asignados a los elementos de la matriz. Ejemplos: int numeros[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; quedarían asignados de la siguiente manera: numeros[0][0]=1 numeros[0][1]=2 numeros[0][2]=3 numeros[0][3]=4 numeros[1][0]=5 numeros[1][1]=6 numeros[1][2]=7 numeros[1][3]=8 numeros[2][0]=9 numeros[2][1]=10 numeros[2][2]=11 numeros[2][3]=12 Programación - Prof. Ing. Jose C. Benitez P. 15
  • 16.
    Sesión 5. Temas Arreglos Concepto Vector o array unidimensional. Declaración. Inicialización. Arreglos de caracteres. Lectura de caracteres . Matriz o array multimensional. Declaración. Inicialización Arreglos de cadenas. Lectura de cadenas Programación - Prof. Ing. Jose C. Benitez P. 16
  • 17.
    Arrays de cadenas También se pueden inicializar cadenas de texto: char dias[7][10] = {"lunes", "martes", "miércoles", "jueves","viernes","sábado","domingo"}; Para referirnos a cada palabra bastaría con el primer índice: printf("%s", dias[i] ); Programación - Prof. Ing. Jose C. Benitez P. 17
  • 18.
    Tarea (T5) Hacer un programa en C utilizando arrays para los siguientes enunciados: 1. Hacer una tabla que muestre los días de la semana y las temperaturas promedio por día en grados centígrados. El reporte debe ser el siguiente: Día Temperatura promedio (oC) 2. Hacer una tabla que muestre los meses del año, los días feriados por mes y las semanas pro mes. El reporte debe ser el siguiente: Mes Numero de feriados Numero de Semanas 3. Hacer una tabla que muestre los nombres de sus padres y hermanos y los fechas de sus cumpleaños. El reporte debe ser el siguiente: Nombres Apellidos Parentesco Fecha Cumpleaños 4. Escribir una matriz identidad de 5 x 5. Programación - Prof. Ing. Jose C. Benitez P. 18
  • 19.
    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_T5.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 23/01/12 Las Tareas que no cumplan las indicaciones no serán recepcionados por el profesor. Programación - Prof. Ing. Jose C. Benitez P. 19
  • 20.
    Sesión 5. Arreglos Programación http://utpprogc.blogspot.com Programación - Prof. Ing. Jose C. Benitez P. 20