Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
La dimensión.
La dimensión de un arreglo es el tamaño del arreglo, y define la forma de
organizar los datos. Un arreglo puede ser unidimensional (tener sólo una
dimensión), bidimensional (dos dimensiones) y tridimensional (tres
dimensiones). Para más sobre los arreglos unidimensionales, puedes
leer aquí.
La organización lógica de los datos en un arreglo nos permite utilizarlos de
forma muy diversa. En realidad, Java no pone restricciones en cuanto al
número de dimensiones que puede tener un arreglo, pero para los
programadores es más compleja su manipulación a mayor número de
dimensiones.
Arreglos bidimensionales
Es muy común llamarles arreglos bidimensionales, arreglos 2d, o matrices,
pero en realidad, se tratan de un arreglo de arreglos. Sólo que para su
manipulación lógica, ha sido más conveniente pensar en ellos como una tabla
de valores. (De ahí que decidí hacer uso, una vez más, del trabajo fotográfico
de Carlos ZGZ para comparar la organización de un edificio de departamentos
con los datos almacenados en un arreglo bidimensional).
Declaración y construcción
La declaración de un arreglo bidimensional en Java se muestra a
continuación:
La propiedad length.
Como ya se mencionó en la entrada sobre arreglos unidimensionales, todo
arreglo declarado y construido apropiadamente es de hecho un objeto
especial. Los objetos en Java tienen métodos y propiedades.
Tipos de matrices.
Como puedes deducir del punto anterior, existen diversos tipos de matrices:
Matrices cuadradas
Una matriz cuadrada es aquella que tiene el mismo número de renglones
como de columnas. Son las matrices que más se utilizan en el álgebra, pues
tienen ciertas propiedades que les permiten ser usadas en operaciones como
la suma de matrices. En la figura 5 puedes observar diferentes ejemplos de
matrices cuadradas.
Matrices irregulares.
Por otro lado, las matrices irregulares son aquellas donde uno o más
renglones tienen un número variable de columnas. En la figura 7 puedes ver
un ejemplo de este tipo de matrices.
1 int[][] matriz = { {1, 2}, {3, 4, 5}, {6, 7}, { 8, 9, 10, 11} };
Figura 8. Excepción generada al intentar acceder a una dirección fuera de los límites
Figura 10. Forma general para introducir un dato en una casilla de una matriz.
1 arreglo[3][2] = 9;
▪ El índice puede ser una variable tipo int:
1 arreglo[3][2] = x;
▪ El valor puede ser una operación cuyo resultado sea compatible con el
tipo del arreglo:
1 arreglo[4][2] = x%y; //arreglo debe ser tipo int para poder almacenar este resultado
▪ El índice puede ser el resultado de una operación entera:
1 arreglo[i*2][j-2] = 12;
El ciclo más interno será el que más pronto se termine, en cambio el contador
del ciclo más externo sólo cambiará su valor cada vez que el ciclo interno
termine. Yo comparo los ciclos anidados con el funcionamiento de las
manecillas de un reloj analógico: la manecilla de minutos sólo puede avanzar
cuando el segundero termine de hacer su recorrido de 60. El segundero (que lo
comparo con el ciclo más interno) avanza más rápido, en tanto que el
minutero es dependiente del segundero y por lo tanto su avance es más lento.