Capítulo 11: Vectores
A lo largo de nuestras vidas de programadores tendremos que usar muchas variables a la vez que estén relacionadas entre sí. Imaginaos que queremos almacenar las notas que ha sacado un alumno en cada uno de los 10 exámenes que ha realizado. Tendríamos que crear 10 variables float para almacenar toda la información. Los arrays unidmensionales o vectores solucionan nuestro problema.
Un vector es un conjunto de datos del mismo nombre y tipo que se diferencian en el índice. Podemos declarar el vector de 10 float para almacenar las notas de la siguiente manera:
float notas[9];
Os preguntaréis, ¿por qué pone nueve cuando son diez notas? Tened en cuenta que los índices van de 0 a 9, con lo cual son 10 variables las que tenemos.
Podemos inicializar el vector en el momento de la declaración así:
float notas[9] = {0, 3.4, 5, 7.6, 4.4, 6, 7, 8.7, 9, 10};
o
float notas[] = {0, 3.4, 5, 7.6, 4.4, 6, 7, 8.7, 9, 10};
Las dos son equivalentes. Para asignarle un valor a un elemento del vector hacemos:
notas[5] = 5.5;
Desde luego no vamos a estar asignando valores de uno en uno. Imaginad que en vez de 10 son 1000, las líneas necesarias serían demasiadas. Lo haremos recorriendo el vector. Se puede recorrer el vector tanto como para leer como para escribir.
for(i = 0; i < 10; i++){
printf(“Introduzca el valor de notas[%d]: “, i);
scanf(“%f”, notas[i]); /* No se usa &*/
fflush(stdin);
}
Vamos desde la primera posición hasta la última leyendo desde la entrada estándar (teclado) los valores de nota. Hay que tener en cuenta que para pasar un vector como parámetro (tanto si lo queremos pasar como puntero o no) lo haremos sin &, ni *. A pesar de no usar & podemos pasarlo por referencia y modificar su valor.
Cuando una función recibe un vector la cabecera de la función debería ser:
(devuelve lo que quiera)funcion((tipo que sea) *vector);
También debería recibir el número de elementos del vector porque si nos pasamos y ponemos vector[2000] y no existe podemos obtener errores terribles.
Ya sabemos declarar, inicializar, recorrer y pasar como parámetros todo tipo de vectores. Deberíais experimentar con ellos para acostumbraros a su uso. A ver si se os ocurre algún programilla interesante donde hagáis uso de este tipo de variables y me lo comentáis en este mismo post.
Números anteriores de “Programación de videojuegos”.