En un principio podemos decir
que una matriz no es otra cosa que una tabla, como las que
hemos visto en la lección anterior, pero en dos dimensiones.
Si nosotros representamos una tabla de 10 posiciones lo
podríamos hacer así:
En definitiva,
en la tabla anterior tenemos 1 fila
(horizontal) y 10 columnas (vertical), esto
hace un total de 10 posiciones. Con lo que
para referirnos a una posición solo hace falta indicar la
columna a la que nos estamos refiriendo. Valor[3] Hacemos referencia a la tercera
posición de la tabla llamada Valor.
Ahora bien, en según que
caso, ya veremos cuales, nos puede interesar tener lo que
llamaremos matriz, una "tabla"
pero con más filas. Podríamos representar una matriz de 2
filas con 10 columnas de la
siguiente manera:
En esta matriz
tendríamos 20 posiciones 2*10. Para
referirnos a ellas tendremos que buscar una manera diferente
a como lo hemos hecho con una tabla. En realidad no es que la
forma de llamar a cada una de las posiciones sea muy
diferente, pero se añade un elemento más. Recuerda que
cuando utilizábamos una tabla lo que hacíamos era indicar
la columna que ocupaba el elemento Datos[4], pues bien, ahora nosotros deberemos
indicar la fila y la columna
que ocupa. Esto lo haríamos de la siguiente manera: para
referirnos a una posición siempre, al igual que en el caso
de una tabla, pondremos el nombre de la tabla y entre
corchetes [
] primero la fila
y después la columna separados por una coma
de la siguiente forma: Datos[1, 4]. De esta manera observa que los
elementos que ocupan la cuarta columna se deben diferenciar
entre ellos por la fila en la que se encuentran.
Observa este pequeño ejemplo
en el que rellenaremos algunos campos de una matriz de 3
filas por 4 columnas, llamada Valor en la que introducimos
los siguientes valores Valor[1,3] =
"Excel",
Valor[2,4]
=
"Word",
Valor[3,2]
= "VB". La tabla quedaría de la siguiente
manera, recuerda que siempre miraremos primero la
fila (horizontal) y después la columna
(vertical):
| Valor |
1 |
2 |
3 |
4 |
| 1 |
|
|
Excel |
|
| 2 |
|
|
|
Word |
| 3 |
|
VB |
|
|
Te recomiendo
que utilices ejemplos como este para que te acostumbres a
utilizar tablas y a colocar los elementos en su lugar, piensa
que en programación si colocamos los elementos de una matriz
de forma incorrecta o nos referimos a una posición fuera de
la matriz nos puede dar error y "fastidiar" la
ejecución del programa.
Nota
importante:
Debes tener mucho
cuidado que en los programas en los que utilices matrices no
accedas a una posición que esté fuera del rango de la
matriz, tanto fila como columna. Si sucediera esto nos daría
un error y el programa terminaría su ejecución de forma
incorrecta. También debemos dejar claro que en muchos
lenguajes de programación las tablas, tanto en filas como en
columnas empiezan a contar desde la posición 0.
esto es importante porque si definimos una tabla de 5
columnas nos debemos referir a ellas desde la posición 0 a
la 4. En nuestro caso para facilitar el entendimiento de los
ejemplo vamos a utilizar matrices cuya primera posición es
la número 1.
Vamos con un
ejemplo en el que utilizaremos una matriz: queremos un pequeño
programa que nos ordene unos números, que obtenemos de forma
aleatoria, en pares e impares.
Vamos a definir una tabla con dos filas, de
esta manera pondremos en la primera fila (fila 1)
los número impares y en la segunda fila (fila
2) los número pares.
Para saber si un
número es par o impar lo
único que deberemos hacer es dividir la cantidad entre 2 y
mirar el resto. Si este resto
es 0 querrá decir que el número es par
y si el resto es diferente a 0
el número será impar. Para mirar el resto
utilizaremos la formula Resto( ), poniendo
dentro del paréntesis la división a realizar.
| 1 |
Tabla[2,10] : Número |
| 2 |
IndicePar : Número |
| 3 |
IndiceImpar : Número |
| 4 |
Cantidad : Número |
| 5 |
IndicePar = 1 |
| 6 |
IndiceImpar = 1 |
| 7 |
Mientras (IndicePar
+ IndiceImpar) < 21 hacer |
| 8 |
Cantidad = Random(100)
|
| 9 |
Si Resto(Cantidad/2) = 0 y IndicePar < 11 entonces
|
| 10 |
Tabla[2,IndicePar] = Cantidad
|
| 11 |
IndicePar = IndicePar + 1
|
| 12 |
Finsi
|
| 13 |
Si Resto(Cantidad/2) <> 0 y IndiceImpar < 11 entonces
|
| 14 |
Tabla[1,IndiceImpar] =
Cantidad
|
| 15 |
IndiceImpar =
IndiceImpar +
1
|
| 16 |
Finsi
|
| 17 |
Fin Mientras |
1.- Definimos una tabla llamada Tabla
con 2 filas y 10 posiciones
de tipo número.
2 y
3.- Definimos una
variable llamada IndicePar que nos servirá
para movernos por la fila de los pares y
otra variable llamada IndiceImpar para
movernos por la fila de los impares.
4.- Definimos una variable llamada Cantidad
para almacenar el valor del número buscado aleatoriamente.
5 y
6.- Inicializamos
las variables IndicePar e IndiceImpar
a 1 para empezar a rellenar la matriz desde
la primera columna.
7.- Iniciamos un bucle
que se repetirá hasta que se llene completamente la matriz.
Como nuestra matriz tiene 2 filas y 10
posiciones cada una de ellas en total tenemos 20
posiciones.
8.- Almacenamos en la variable Cantidad
un número aleatorio del 1 al 100.
9.- Miramos si la Cantidad
es par mediante la formula Resto(Cantidad/2) y si el índice que
utilizamos para movernos por la fila de los números par no
esté fuera de rango, no sea más grande de 10. Recordemos
que si intentamos acceder a una posición fuera de la matriz
nos daría un error de ejecución.
10.- Si la
Cantidad es par y el
IndicePar está dentro de los límites almacenamos Cantidad
en la matriz Tabla en la segunda fila,
reservada para los números pares, y en la
posición que indique el IndicePar.
11.- Incrementamos
en 1 el valor de la variable IndicePar,
para avanzar una posición en la fila de los pares.
12.- Línea
que nos indica el fin del primer Si.
13.- Miramos si la Cantidad
es impar mediante la formula Resto(Cantidad/2) y si el índice que
utilizamos para movernos por la fila de los números impares
no esté fuera de rango, no sea más grande de 10.
14.- Si la Cantidad
es impar y el IndiceImpar
está dentro de los límites almacenamos Cantidad
en la matriz Tabla en la primera fila,
reservada para los números impares, y en la
posición que indique el IndiceImpar.
15.- Incrementamos
en 1 el valor de la variable IndiceImpar,
para avanzar una posición en la fila de los impares.
16.- Línea
que nos indica el fin del segundo Si.
17.- Fin
del bucle.
Después
de ver como se ha codificado este ejercicio te invitamos a
que intentes codificar este mismo pero de una forma
diferente. Envíanos tu respuesta.