Temas:

 
 1) Programacion Estucturada
 
2) Seleccion (if, else, switch)
 
3)Repeticion (while, for, do)
 
4)Como Escribir  Clases (public, private)
 
5)Herencia (protected, super, final, abstract) 

MATRICES

en este capítulo conoceremos cómo:
  • Declarar una matriz (o arreglo bidimensional).
  • Utilizar los índices con las matrices.
  • Obtener el tamaño de una matriz.
  • Pasar matrices como parámetros.
  • Inicializar una matriz

INTRODUCCIÓN

Las matrices o arreglo bidimensionales (también conocidas como tablas) son muy comunes en la vida diaria:
  • Un tablero de ajedrez.
  • El itinerario de los trenes.
  • Una hoja de cálculo.

En el capítulo anterior vimos los arreglos unidimensionales.

Java cuenta con una forma natural para extender los arreglos unidimensionales a dos dimensiones.

Por ejemplo, la siguiente declaración:

         int [ ] [ ] ventas = new int [4] [7];

Declara una matriz o arreglo bidimensional de enteros.

Contiene las cifras de las ventas de computadoras en cada una de cuatro tiendas para cada uno de los siete días de una semana.

La matriz se llama ventas.

Podemos considerar que tiene cuatro filas y seis columnas.

Cada fila representar una semana en una tienda especifica.

Cada columna  representa un día individual  en cada una de las cuatro tiendas.

Los índices de las filas van de 0 a 3.

Los índices de las columnas van de 0 a 6.

La columna 0 es el lunes, la columna 1 es martes, etc.

                Una matriz o arreglo bidimensional.

 

Comó Declarar una Matriz

Al igual que con otras variables y ojetos, para declarar una matriz utilizamos new, ya sea en la parte superior de la clase o de un método.
El programador asigna un nombre a la matriz, como en el siguiente ejemplo:
 
                  int [  ]  [  ] ventas  = new int [ 4] [ 7];
                  double [  ] [  ] temps =  new double [ 10] [ 24];

Al declarar una matriz es necesario indicar cúantas filas y columnas tiene.

La matriz ventas tiene cuatro filas: una para cada una de las cuatro tiendas.

Tiene siete columnas: una para cada día de la semana.

La matriz contiene cifras de ventas para cada una de las cuatro tiendas durante cada día de la semana.

La matriz temps contiene información sobre las temperaturas en cada una de 10 hornos, para cada hora durante un perioda de 24 horas.

Al igual que con cualquier otra  variable, es común ( y conveniente) elegir un nombre para la matriz que describa con claridad para qué se va a utilizar.

El nombre es para la matriz completa: para toda la colección de datos.

Índices

Para hacer referencia a un elmento endividual en una matriz, un programador debe especificar los valores de los índices enteros (también conocidos como subíndices).

Por lo tanto, ventas [ 3] [ 2] se refiere al elemento de la matriz  que se encuentra en la fila 3 y columna 2, lo cual representa a la tienda número 3 y el día número 2 (miercoles).

De manera similar, tableroAjedrez [ 2 ] [7 ] podría contener la cadena de texto "peón"

Para entroducir un valor para un elemnto de una matriz podemos utilizar el siguiente código:

      ventas[ 3] [2 ] = Integer.parseInt(campoTexto.getText());

       tableroAjedrez [ 3] [4 ] = campoTexto.getText();

y de manera  similar podemos mostrar los valores de los elemntos de una matriz mediante cuatros de texto.

Podemos modificar los valores con intrucciones de asignación, como en el siguiente ejemplo:

        ventana [ 3 ] [ 2 ] = 99

         tableroAjedrez [ 2 ] [ 7 ] = "caballo";  // coloca un caballo en uno de los cuadros

En todos los fragmentos de programas, para referirnos a los elementos individuales de una matriz declaramos los valores de los índices que identifican al elemnto específico en el que estamos interesado.

A menudo es necesario hacer referencia a un elemento de una matriz mediante la especificación de variables para cada uno de los dos índices.

Ésta es la forman en la que podemos aprovechar el poder de las matrices.

Como ejemplo, suponga que queremos sumar todos los números en una matriz de números que contiene datos sobre las ventas de computadoras en cuatro tiendas, durante en periodo de siete días:

         int [  ] [  ] ventas = new int [ 4 ] [ 7 ];

La manera burda de sumar las ventas sería esrcibir lo siguiente:

   suma =

                  ventas [ 0 ] [ 0 ]  +  ventas [ 0 ] [ 1 ]  +  ventas[ 0 ] [ 2 ]  +  ventas [ 0 ] [ 3 ]

                              + ventas [ 0 ] [ 4 ]  +  ventas [ 0 ] [ 5 ]  +  ventas [ 0 ] [ 6 ]

              +  ventas [ 1 ] [ 0 ]  +  ventas [ 1 ] [ 2 ]

                             +  ventas [ 1 ] [ 3 ]  +  ventas [ 1 ] [ 3 ]  +  ventas [ 1 ] [ 4 ]  +  ventas [ 1 ] [ 5 ]  +  ventas [ 1 ] [6

                             +  etcétera;

el código anterior  es largo, dificil de entender y propenso a errores, pero es correcto.

Sin embargo, no aprovecha la regularidad de una matriz.

La alternativa sería utilizar in ciclo for.

Se utilizann variables para guardar los valores de los índices.

Al principio cada índice  se hace igual a 0 y después se incrementa cada vez que se repite el ciclo:

 

int [ ]  [ ] ventas  new int [ 4]  [ 7];
int suma;
suma  = 0; 
for  (int tienda = 0; tienda  <= 3;  tienda++) {
       for  (int númeroDía = 0;  númeroDía <= 6;  númeroDía++  )  {
                suma = suma + ventas[ tienda] [ númeroDía];
     }
}
lo cual es mucho más corto y ordenado que si hubiéramos escrito todas las sumas con mucho detalle.
 

El Tamaño de una Matriz

Cuando creamos una matriz de la siguiente forma:
 
double [ ]  [ ]  info = new double [20] [ 40];
tiene un tamaño fijo que no se puede modificar, a menos que volvamos a crear la matriz completa mediante new.
Siempre podemos obtener el tamaño de una matriz mediante la propiedad legnth.
Por ejemplo, para la matriz anterior podemos usar:
 
int  tamañoFila  =  info.legnth;
lo cual nos da un valor de 20, es tanto que:
 
int tamañoColumna  =  info [ 0].legnth;
nos da un valorde 40.
Esta instrucción  proporciona la longitud de la fila cero de la matriz, pero como todas las filas son del mismo tamaño, está bien hacerlo.
Cabe mencionar que no se colocan paréntesis ( ) después de la propiedad length.