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
Lenguaje de Programación I - 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
Lenguaje de Programación I - 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.
Lenguaje de Programación I - 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
Lenguaje de Programación I - 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 [ ] ).
Lenguaje de Programación I - 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 ).
Lenguaje de Programación I - 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‘ };
Lenguaje de Programación I - 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
Lenguaje de Programación I - 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'; .
Lenguaje de Programación I - 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.
Lenguaje de Programación I - 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
Lenguaje de Programación I - 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.
Lenguaje de Programación I - 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]);
}
Lenguaje de Programación I - 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
Lenguaje de Programación I - 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
Lenguaje de Programación I - 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] );
Lenguaje de Programación I - Prof. Ing. Jose C. Benitez P. 17
18. Recordar siempre:
Colocar en su código el encabezado.
Tarea (T4) Los reportes deben empezar con un titulo.
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, y la
desviación estándar por día en grados centígrados. Solicitar día y tres temperaturas (mañana,
tarde y noche), para los 07 días.
El reporte debe ser el siguiente:
Día TM TT TN T. media (oC) Desviación estándar de T.
2. Hacer una tabla que muestre los meses del año, los días del mes, los días feriados por mes y
las semanas por mes. Solicitar mes, feriados y numero de semanas para ese mes, para
los 12 meses del año.
El reporte debe ser el siguiente:
Mes Días del mes Feriados Numero de Semanas
3. Hacer una tabla que muestre los nombres, apellidos y cumpleaños de sus familiares.
Solicitar los nombres, apellidos y cumpleaños de sus padres, y los nombres y cumpleaños de
sus hermanos. El reporte debe ser el siguiente:
Nombres Apellidos Parentesco Fecha Cumpleaños
4. Solicitar un numero entero (n). Escribir una matriz de n x n. Mostrar la matriz y su transpuesta.
5. Solicitar un numero entero (n), generar un vector aleatorio de tamaño n, ordenar el vector de
menor a mayor y presentarlo.
Ejemplo: n=12 a[n]=[5, 8, 0, 1, 11, 2, 9, 3, 7, 4, 10, 6]
Reporte:
n=12 a[n]=[5, 8, 0, 1, 11, 2, 9, 3, 7, 4, 10, 6] A[n]=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
Lenguaje de Programación I - Prof. Ing. Jose C. Benitez P. 18
19. Presentación
Todas las fuentes y tareas deben presentarse en su
carpeta personal del Dropbox, dentro de una carpeta
que lleve sus Apellidos, guion bajo y luego el número
de la tarea. Ejemplo:
BenitezP_T4
Si para el desarrollo de las tareas utilizó otras fuentes,
agregarlas en el Dropbox. La fuente debe conservar
el nombre original y añadir al final _T4.
Las Tareas que no cumplan las
indicaciones no serán
considerados por el profesor.
Lenguaje de Programación I - Prof. Ing. Jose C. Benitez P. 19
20. Sesión 5. Arreglos
Lenguaje de Programación I
http://utplpi.blogspot.com
Lenguaje de Programación I - Prof. Ing. Jose C. Benitez P. 20