lunes, 2 de abril de 2012

Arrays Bidimensionales o Matrices

Buenas amigos, en el anterior tema vimos los ARRAYS o VECTORES, ahora veremos los ARRAYS BIDIMENSIONALES o MATRIZ.

Una MATRIZ es un medio donde almacenar un conjunto de valores del mismo tipo (int, float, String...). Como veis, en este aspecto es igual que un ARRAY o VECTOR, pero cambia en un aspecto, está formado por FILAS y COLUMNAS. Lo veremos mejor en un ejemplo:



ARRAY:
Un ARRAY está formado por una fila de datos, almacenados en un orden.

MATRIZ:
Una MATRIZ tiene forma de tabla, y como tal, está dividida en FILAS y COLUMNAS.

Bien, una vez aclarado la forma que debe tener una MATRIZ, veamos su formato:
  • tipoDato [ ] [ ] nombreVariable=new tipoDato[  tamañoFILA ] [ tamañoCOLUMNA ];
  1. En primer lugar elegimos el tipo de dato (int, float, String...), seguido de 2 corchetes "[ ] [ ] ", es muy importante que la matriz lleve 2 corchetes, ya que tenemos que almacenar FILAS y COLUMNAS.
  2. Elegimos un nombre para nuestra MATRIZ, a vuestra elección.
  3. Creamos el objeto de la MATRIZ (Al igual que el ARRAY o VECTOR, la MATRIZ es una clase) con la linea "new tipoDato", donde tipoDato es el tipo que habéis elegido.
  4. Por último agregamos los 2 corchetes "[ ] [ ]", y le damos un tamaño, al igual que el tamaño de los ARRAYS o VECTORES, el tamaño estará compuesto por un número entero.
La forma de rellenar una MATRIZ es muy parecida a la del ARRAY y hay distintas formas:
  1. Creamos una MATRIZ de 2 FILAS y 2 COLUMNAS,(como hemos descrito arriba) y la rellenamos uno por uno:
    • int [ ] [ ] numEnteros=new int [2] [2];
    • numEnteros[0][0]=1;
    • numEnteros[0][1]=2;
    • numEnteros[1][0]=3;
    • numEnteros[1][1]=4;
    Como ya dijimos, se empieza a contar el tamaño de la matriz desde 0, hasta x-1, donde x es el tamaño de la MATRIZ, con eso tenemos 2 FILAS (FILA 0 y FILA 1) y 2 COLUMNAS (COLUMNA 0 y COLUMNA 1). quedando rellena de la siguiente manera:
  2. Rellenar la MATRIZ al mismo tiempo que lo creamos:
    • int [ ] [ ] numEnteros={{1,2},{3,4}}

    De esta manera, tenemos una MATRIZ que se llena de datos, el número de llaves determina el número de FILAS(no confundir las llaves que contienen datos, con las llaves que se utilizan para englobar todo), y la cantidad de datos que hay entre esas llaves, determina en número de COLUMNAS; en este ejemplo tenemos, dos juegos de llaves (Un juego equivale a una llave abierta y otra cerrada "{ }"), que contienen 2 datos cada una, por lo tanto nuestra MATRIZ tiene un tamaño de 2x2.

  3. Rellenar la MATRIZ mediante bucle FOR:
        • int [][] numEnteros=new int[2][2];

        • int numeros=0;

        • for(int fila=0; fila<numEnteros.length; fila++){

        • for(int columna=0; columna<numEnteros[fila].length; columna++){

        • numeros=numeros+1;

        • numEnteros[fila][columna]=numeros;

        • System.out.println(numEnteros[fila][columna]);
        • }
        • }
Este método para rellenar la MATRIZ parece más complicado que los otros 2, pero para manejar MATRICES con gran cantidad de datos es la forma ideal para hacerlo:
      • Primero creamos la MATRIZ de 2x2;
      • Creamos una variable de tipo int inicializada a 0;
      • Creamos un bucle FOR que nos recorrerá las FILAS;
      • Creamos un segundo bucle FOR que nos recorrerá las COLUMNAS;
      • Incrementamos en +1 el valor de la variable numeros creada anteriormente;
      • Asignamos el valor de la variable numeros a la MATRIZ;
      • Imprimimos por pantalla la MATRIZ
Bien, lo que esto hace básicamente es: 
      • Se mete en el FOR de las FILAS, como FILA vale 0, se va a la FILA número 0 de la MATRIZ, una vez dentro de esa FILA 0, pasa una por una revisando todas las columnas de esa FILA, y la rellena con el valor de numeros, que se incrementa en +1 cada vez que se llegue a una nueva COLUMNA, y finalmente imprime uno por uno cada número almacenado en la columna.
      • Cuando llega a la última COLUMNA, FILA se incrementa en +1 (fila++), y comienza a recorrer cada columna de esa FILA, repitiendo todo el proceso anterior.
Para recorrer e imprimir una MATRIZ, volvemos a realizar 2 bucles FOR, uno para recorrer FILAS y otro para recorrer COLUMNAS

  • for(int fila=0; fila<numEnteros.length; fila++){

  • for(int columna=0; columna<numEnteros[fila].length; columna++){

  • System.out.println(numEnteros[fila][columna]);
  • }
  • }
Recorremos las FILAS y las COLUMNAS y por cada vez que llega a una nueva COLUMNA imprime su valor.


Espero que os sirva de ayuda. Un saludo.

No hay comentarios:

Publicar un comentario