Capitulo 13 Arreglos

En este capitulo conoceremos cómo:

  • Declarar un arreglo.

  • Utilizar un indice.

  • Obtener el tamaño de un arreglo.

  • Pasar arreglos como párametros.

  • Usar la intrucción for mejorada.

  • Inicializar un arreglo.

  • Llegar a cabo operaciones tipicas teles como las búsquedas rapidas (lookup) y detalladas (search).

  • Crear arreglos de objetos.

 

Introducción

Hasta ahora en este libro hemos descrito, con excepción de los obejetos ArrayList, elemntos de datos (variables) individuales y aislados.
Por ejemplo;
 
int conteo, suma;
String nombre;
 
Estos elemntos de datos viven po su propia cuenta, desempeñado funciones útiles en los programas como contadores, sumas o cualquierotra cosa.
Podemos considerar estas variables como lugares en la memoria que tienen nombres inviduales.
Por otra parte, en la vida lidiamos muy a menudo con datos que no estan aislados, sino agrupados en una colección de información.
Algunas veces la información se encuentra en tablas.
Algunos ejemplos son el itinerario de un tren, un directorio telefonico o el estado de cuenta de un banco.
En la programación, a estas cosas se les conoce como estructuras de datos.
La informacion de una tabla esta interrelacionada de alguna manera.
El arreglo es uno de los tipos más simples de estructura de datos en la programación.
Un arreglo se puede considerar simplemente como una tabla, conuna sola fila de información ( también podemos visualizar una tabla como una salo columna de información ).
Esta podria ser una tabla de números, de cadenas de texto o de cualquier otra cosa.
En este capitulo veremos arreglos de números, de cadenas de texto y de otro objetos, como objetos gráficos.
 
  • Ejemplo; Muestra un arreglo de números.

      

 

Este arreglo podría representar las edades de un grupo de personas en una fiesta.

Mustra una tabla de palabras que guarda los nombres de los miembros de un grupo musical.

  • Ejemplo; Un arreglo de cadenas de texto

         

 

En java, a una tabla como ésta se le denomina arreglo.

En la programación, a un componente del arreglo se le conoce como elemento y nos referimos a éste por su posición  en el arreglo, la cual se conose como índice (en el mundo de la programación, algunas veces se utiliza el termino componente en ves de el, y el término subindice en vez de índice).

Para nosotros los humanos, el nombre  John está en la primera posición de esta tabla, pero en java a la primera posición es un arreglo se le denomina la posición cero.

Las posiciones es un arreglo son cero, primera, segunda, tercera, etc.

Por ende, la cadena de texto Ringo se encuentra en la tercera posición del arreglo anterior.

En consecuencia, podemos visualizar un arreglo, junto con sus índices.

 

                                  

 

Recuerde que los índices no se guardan en la menoria de la computadora, únicamente los datos.

Los índices son la forma en que podemos localizar la información en un arreglo.

Otro arreglo que contiene números.

También se muestan los índices para el arreglo.

                                        

 

Cómo Crear un Arreglo

En java un arreglo se declara justo igual que cualquier otro objeto mediante la palabra clave new, por lo general en la parte superior de una clase o de un métondo.

El programador debe dar al arreglo un nombre como se muestra a continuación:

       int  [ ] edades = new int [6] ;
      String [  ] grupo = new String [4];
La variable edades está ahora lista para guardar un arreglo de enteros.
Al igual que con cualquier  otra variable, es común (y una muy buena idea) elegir un nombre para el arreglo que describa con claridad su función.
El nombre servirá para el arreglo completo - lo conección de datos completa.
Las reglas para elegir el nombre de un arreglo son iguales que para cualquier otro nombre de variable en java.
El número entre corches despúes del nombre del arreglo representa el tamaño.
El arreglo edades es lo bastante grande como para contener seis números, en donde sus índices van de 0 a 5.
El arreglo llamado grupo  es lo bastente grande como para contener cuatro cadenas de texto.
Los índices van de 0 a 3.
 

Índices

Para hacer referencia a un elmento individual de un arreglo, un programa especifica el valor de un índice (algunas veces llamado subíndice).
Por lo tanto, en el ejemplo anterior edades[3] hace referencia al elemento en el arreglo con el índice 3: el valor 13 en este caso.
De manera similar, grupo[2] contiene la cadena George.
Recuerda que los índices empiezan en 0, por lo que un arreglo de longitud 4 tiene índices que van de 0  a  3.
En consecuencia, la referencia a grupo[4] es un error.
El  programa se detendrá y aparecerá un mensaje de error.
En serumen, los valores de los índices:
 
  • Empiezan en cero.
  • Son enteros.
  • Llegan hasta un número  menos que el tamaño del arreglo ( el valor que se especifica al momento de declarar el arreglo).

Algunas veces, como veremos mas adelante, es conveniente utilizar el valor de una variable como índice.

En tales cases utilizamos variables int como índices.

Podemos recibir como entrada el valor de un elemento de un arreglo mediante un campo de texto:

               edades[2] = Integer.pareInt(campoTexto.getText());
                grupo[3]  = campoTexto.getText();
y de manera similar podemos mostrar los valores en pantalla:
              
               campoTexto.setText(" La Primera Edad es " + Integer.toString(edades[0]));
               campoTexto.setText(" El 4o . Mienbro del Grupo es " + grupo[3]); 
Este último ejemplo muestra lo cuidadoso  que debemos ser con los índices de los arreglos.
Podemos cambiar los valores de elementos individuales de un arreglo mediante enstrucciones de asignación, como en el siguiente ejemplo:
 
                edaes[3] = 99;
                grupo[2] = "Mike" ;
En todos estos fragmentos de programa, hecemos referencia a los elementos individuales de un arreglo especificando el valor de un índice.
Con frecuencia necesitamos hacer referencia al n-ésimo elemento de un arreglo, en donde  n es una variable.
Ésta es la forma en que podemos ver el verdadero poder de los arreglos.
 

La Longitud de un Arreglo

Un programa 

 

           

 

 

 

 

 

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.