Vectores y matrices
Definición de una tabla y acceso a los datos
Una tabla, vector, matriz o array (que algunos autores traducen por “arreglo”) es un conjunto de elementos, todos los cuales son del mismo tipo. Estos elementos tendrán todos el mismo nombre, y ocuparán un espacio contiguo en la memoria.
Por ejemplo, si queremos definir un grupo de 4 números enteros, usaríamos
int ejemplo[4];
Podemos acceder a cada uno de los valores individuales indicando su nombre (ejemplo) y el número de elemento que nos interesa, pero con una precaución: se empieza a numerar desde 0, así que en el caso anterior tendríamos 4 elementos, que serían ejemplo[0], ejemplo[1], ejemplo[2], ejemplo[3].
Como ejemplo, vamos a definir un grupo de 5 números enteros y hallar su suma:
Valor inicial de una tabla
Al igual que ocurría con las variables “normales”, podemos dar valor a los elementos de una tabla al principio del programa. Será más cómodo que dar los valores uno por uno, como hemos hecho antes. Esta vez los indicaremos todos entre llaves, separados por comas:
Recorriendo los elementos de una tabla
Es de esperar que exista una forma más cómoda de acceder a varios elementos de un array, sin tener siempre que repetirlos todos, como hemos hecho en
suma = numero[0] + numero[1] + numero[2] + numero[3] + numero[4];
El “truco” consistirá en EMPLEAR cualquiera de las estructuras repetitivas que ya hemos visto (while, do..while, for). Lo más habitual, ya que sabemos cuántos elementos tiene un array, es usar un "for" para contar, así:
En este caso, que sólo sumábamos 5 números, no hemos escrito mucho menos, pero si TRABAJÁSEMOScon 100, 500 o 1000 números, la ganancia en comodidad sí que está clara.
En física se usan mucho los "vectores", para representar magnitudes que no se pueden expresar sólo con un número. Por ejemplo, para una temperatura basta con decir cosas como "tengo 39 grados", pero para una fuerza no basta con decir que es de 200 N, sino que también es importante en qué dirección (y sentido) se aplica esa fuerza: no tendrá el mismo efecto si se aplica en el centro de un cuerpo o en un extremo, ni si comprime que si estira. Un vector se suele representar a partir de sus "componentes", que son las coordenadas de su extremo (suponiendo que comienza en el punto (0,0). Un vector en el plano tendrá dos componentes (x,y) y un vector en el espacio tendrá 3 componentes (x,y,z).como un conjunto de varias coordenadas. Así, un programa que pida al usuario las coordenadas de 2 vectores en el espacio y halle su vector suma sería:
Tablas bidimensionales
odemos declarar tablas de dos o más dimensiones. Por ejemplo, si queremos guardar datos de dos grupos de alumnos, cada uno de los cuales tiene 20 alumnos, tenemos dos opciones:
Podemos usar int datosAlumnos[40] y entonces debemos recordar que los 20 primeros datos corresponden realmente a un grupo de alumnos y los 20 siguientes a otro grupo.
O bien podemos EMPLEAR int datosAlumnos[2][20] y entonces sabemos que los datos de la forma datosAlumnos[0][i] son los del primer grupo, y los datosAlumnos[1][i] son los del segundo.
En cualquier caso, si queremos indicar valores iniciales, lo haremos entre llaves, igual que si fuera una tabla de una única dimensión. Vamos a verlo con un ejemplo de su uso:
Este tipo de tablas son las que se usan también para guardar matrices, cuando hay que resolver problemas matemáticos más complejos. Por ejemplo, un programa que pida al usuario los datos de dos matrices de 3x3 y luego muestre su suma podría ser así:
Cuidado: no podemos dar por sentado que los datos de un array tengan valor inicial 0, sino que pueden contener "basura" (lo que hubiera en cada posición de memoria anteriormente), de modo que este programa es incorrecto y puee mostrar resultados incorrectos:
Arrays indeterminados
Si damos un valor inicial a un array, no será necesario que indiquemos su tamaño, porque el compilador lo puede saber contando cuantos valores hemos detallado, así:
No hay comentarios:
Publicar un comentario