Manual de programación en C: Arrays.


Nos meteremos en esta entrega con los arrays. Es cierto que no podremos entender algunos usos sin antes haber visto punteros, pero considero que los arrays son bastante más sencillos de entender y usar que los punteros así que prefiero primero explicar los arrays, después veremos los punteros y explicaré algunas cosas sobre arrays que aquí se quedarán un poco en suspenso.

¿Qué son los arrays?

Supongamos que hacemos un programa que nos pide las temperaturas de todos los días del mes para después mostrarnos todas las temperaturas en una tabla y calcular la media. ¿Cómo haríamos esto con lo que sabemos? Tendríamos que hacer 31 variables, por ejemplo:

int dia1, dia2, dia3, dia4, ..., dia31;
scanf("%i", &dia1);
scanf("%i", &dia2);
...
scanf("%i", $dia31);

int media = (dia1+dia2+dia3+...+dia31)/31;
etc...

Como vemos esto puede llegar a resultar un verdadero coñazo, y esto cuando son 31 variables, ¿y si necesitamos 1000 variables?

Estos problemas los resolvemos con los arrays.

Un array es una variable que contiene a varias (se que esto no es así, pero prefiero explicar punteros antes de meterme con la definición de array). Con los arrays podemos juntar bajo un mismo nombre a un montón de variables que se distinguirán entre si con un índice. Veremos el mismo ejemplo que antes pero cusando un array de variables int, primero cómo crear el array:

int dia[31];

Vemos que lo primero es como siempre especificar el tipo de dato, en este caso int, ya que la temperatura la metemos como un número entero. Después el nombre de la variable y entre corchetes [] el número de variables que queremos tener. Podemos acceder a cada variable usando el nombre de la variable, en este caso “dia” y luego entre corchetes el índice. Tenemos entonces las variables dia[0], dia[1], dia[2], …, dia[30]. Ten en cuenta que el número que pongas será el número de variables que se creen, en este caso 31, pero el índice solo llega a n-1 valores, en este caso 30, ya que variable[0] también existe. Si haces: variable[n], existirán desde variable[0] hasta variable[n-1].

La diferencia ahora es que podemos usar otra variable para especificar el índice, de modo que todo se hace mucho más llevadero. Por ejemplo, podemos crear la variable i y acceder a la variable dia[i], de este modo podemos acceder a cada una a través de un solo bucle y no de una en una como en el ejemplo anterior.

int dia[31];
int i=0;
int acumulador = 0;

for (i=0;i<31;i++)
{
     printf("Introduce la temperatura el día %i: ", i+1);
     scanf("%i", &dia[i]);
     printf("\n");
     acumulador += dia[i];
}

int media=acumulador/31;

printf("La media del mes es: %i", media);

Vemos que el código se simplifica muchísimo. Usamos la variable del bucle i para acceder a cada variable dia y meterle un valor.

Podemos dar valor a un array completo al declararlo de la siguiente manera:


int variable[5] = {1,2,3,4,5};

Arrays multidimensionales

También podemos crear arrays multidimensionales, por ejemplo, si queremos crear una tabla de 3×5 para guardar cosas, podemos hacer 3 arrays de 5 valores, o podemos crear un array bidimensional de la siguiente manera

int matriz[3][5];

Podemos ver esto como una matriz de 3 filas y 5 columnas:

[x][x][x][x][x]
[x][x][x][x][x]
[x][x][x][x][x]

Para dar valores directamente hacemos lo mismo que antes:

int matriz[3][5] = {
    {1,2,3,4,5},
    {6,7,8,9,10},
    {1,6,5,4,7}};

¿Cómo haríamos para hacer un bucle que recorra la matriz entera? Recuerda que en un bloque de código puedes poner lo que quieras, si anidamos un bucle dentro de otro podemos recorrer una matriz bidimensional.

int matriz[3][5];
int i, j;
for (i=0;i<3;i++)
{
     for (j = 0; j<5;j++)
     {
          printf("Valor: ");
          scanf("%i", &matriz[i][j]);
     }
}

Esto podemos aplicarlo a cualquier dimensión, podemos hacer arrays tridimensionales, tetradimensionales, etc… Poniendo más corchetes y valores.

Recorrer un array

Recorrer un array es básicamente ir sobre todos sus elementos, como hemos visto antes lo podemos hacer con un bucle for, o bucles for anidados dependiendo de la dimensión del array.

Si intentas combinar arrays y funciones puede que encuentres problemas. Esto ocurre porque no le podemos pasar un array completo a una función, para ello usaremos punteros, de modo que el próximo capítulo será sobre punteros, y después vendrá un nuevo capítulo sobre arrays para poder aprovecharlos a tope.

Nos veremos en la próxima entrega.

Licencia de Creative Commons
Manual de C by The Neowriter is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

Anuncios
Esta entrada fue publicada en Manual de programación en C, Manuales, Manuales largos y etiquetada , , , , , , . Guarda el enlace permanente.

3 respuestas a Manual de programación en C: Arrays.

  1. Pingback: Problema en C y Cygwin

  2. Jonathan dijo:

    Buenas tardes,
    No se si la página sigue vigente o ya la dejaron. De todas formas aquí va mi comentario, si llega bien y si no también. Antes de nada quiero dejar claro que soy muy novato, toque este tema en la uni, pero ya no me acuerdo mucho. ¿Los include por qué no los pones, en este caso no es necesario?, ¿las definiciones y el para que sirve cada comando donde las puedo ver? veo printf (que deduzco que es mostrar en pantalla) y scanf (que deduzco que es introducir dato), pero %i y esas cosillas se me escapan. Sugiero humildemente poner un comentario explicativo por cada línea de comando (se que es un coñazo) para que se entienda todo a la perfección.

    Un saludo y perdona las molestias.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s