Estructuras de Datos: Matrices

Si bien las matrices tienen un origen en la matemática, en el contexto de la programación son estructuras de datos que permiten organizar la información en filas y columnas. Cada elemento de una matriz puede ser accedido por un par de índices (la fila y la columna). Al igual que en los arreglos, los elementos de una matriz deben ser todos del mismo tipo de datos.

Una matriz está organizada en filas y columnas. Cada elemento se accede mediante un índice compuesto por el número de fila y por el número de columna.

ESTRUCTURAS DE DATOS MÁS COMPLEJAS
Los arreglos y matrices son estructuras de datos básicas. En muchas ocasiones, necesitamos trabajar con estructuras más complejas. En .Net, disponemos de tipos de datos para manejar estructuras como listas, pilas o colas, entre otras. Una pila es similar a un arreglo, en donde sólo podemos colocar elementos al principio y sacar del mismo lugar. En una cola, sólo podemos ubicar elementos al final y quitar elementos del comienzo.

Desde el punto de vista de su almacenamiento en memoria, la matriz puede ser vista como un arreglo de filas, donde cada fila es un arreglo de elementos. Visto de esta manera, una matriz es, en definitiva, un arreglo de elementos de tipo de dato arreglo. Es decir, un arreglo bidimensional.

A la hora de recorrer una matriz, se debe prestar atención a no confundir los índices de los elementos, teniendo bien presente en qué columna y en qué fila está cada uno de los que necesitamos acceder. Dada su estructura de dos dimensiones, la forma de recorrer una matriz es mediante dos estructuras repetitivas anidadas, una para recorrer las filas y la otra para recorrer las columnas. Dependiendo del orden en que se quiera hacer el recorrido, se iterará primero sobre las filas y luego sobre las columnas, o primero sobre las columnas y luego sobre las filas. Para saber si hemos implementado correctamente el recorrido, podemos tomar una matriz de ejemplo y seguir con lápiz y papel cada uno de los pasos del algoritmo, verificando el resultado obtenido (esto se conoce como Prueba de Escritorio).

Matrices en .Net
La definición de matrices en los lenguajes de .Net que estamos estudiando resulta muy similar a la definición de arreglos, con el agregado de la segunda dimensión.

// C# - Defino una matriz de 2 filas y 3 columnas
int[,] matriz = new int[2,3];
matriz [0,1] = 1;
matriz [0,2] = 20;

‘ VB.Net – Defino una matriz de 2 filas y 3 columnas
Dim matriz (2,3) as Integer
matriz (0,1) = 1
matriz (0,2) = 2

En C#, existe una forma alternativa de definir las matrices, basada en la idea de una matriz como un arreglo de arreglos:

// C# - Defino una matriz de 2 filas y 3 columnas
int[][] mat = new int[2][]{new int[3],new int[3]};
mat [0][1] = 1;
mat [0][2] = 20;

MÁS ALLÁ DE LAS DOS DIMENSIONES
Como vimos, una matriz es un arreglo de arreglos, lo cual puede verse como un arreglo de dos dimensiones. Los lenguajes de programación permiten definir arreglos con la cantidad de dimensiones que necesitemos. Por ejemplo, si necesitamos
almacenar los registros de lluvia de cada mes, de los últimos 20 años para 10 ciudades distintas, podemos definir un arreglo de 10x20x12 (10 ciudades por 20 años por 12 meses al año). En este caso, la estructura se conoce como Cubo.