Guia N°1 - Arreglos
Guia N°1 - Arreglos
Guia N°1 - Arreglos
Fundamentos
sobre arreglos
Norman Salvador Aruz Lpez
-
Programacin II
Fundamentos de arreglos
En esta gua encontrar los fundamentos principales sobre la comprensin e
implementacin de los arreglos. Los arreglos son un tipo de dato que puede
ser entendido por cualquier lenguaje moderno de programacin, en esta
oportunidad se abordar su implementacin en Java utilizando el IDE
(Entorno de Desarrollo Integrado) libre Netbeans, el cual proporciona
herramientas de creacin, modificacin, depuracin y ejecucin de
programas en lenguaje Java.
Concepto de arreglos
Un arreglo (array en ingls) es un objeto contenedor con un nmero fijo de
valores de un solo tipo. La longitud de este se establece cuando se crea.
Despus de su creacin su longitud es fija, la siguiente ilustracin muestra
en detalle cmo est conformado un arreglo.
Declaracin
Considere el siguiente fragmento de cdigo implementado en Java
// Declara un arreglo de enteros
int [] MiArreglo;
Al igual que las declaraciones de las variables de otros tipos, una
declaracin de matriz tiene dos componentes: el tipo de la matriz y el
nombre de la matriz. Un tipo de arreglo se escribe como type [], donde
type es el tipo de datos de los elementos contenidos; los soportes son
smbolos especiales que indican que esta variable contiene una matriz. El
tamao de la matriz no es parte de su tipo (por lo que los soportes estn
vacas). El nombre de un array puede ser lo que quieras, siempre y cuando
siga las reglas de las nomenclaturas convencionales. Al igual que con las
variables de otros tipos, la declaracin en realidad no crea una matriz;
simplemente le dice al compilador que esta variable contendr una matriz
del tipo especificado.
Del mismo modo, se puede declarar arrays de otros tipos, vase los
siguientes ejemplos:
byte [] MiArregloDeBytes;
short [] MiArregloDeShorts;
long [] MiArregloDeLongs;
float [] MiArregloDeFloats;
double [] MiArregloDeDoubles;
boolean [] MiArregloDeBooleans;
char [] MiArregloDeChars;
String [] MiArregloDeStrings;
Creacin
Una forma de crear una matriz es con el operador new. La siguiente
sentencia en el programa ArrayDemo asigna una matriz con suficiente
memoria para 10 elementos enteros y asigna la matriz al variable
MiArreglo.
// Crea una matriz de enteros
MiArreglo = new int [10];
Si esta declaracin se omite, entonces el compilador dar un error como el
siguiente, y la compilacin falla:
ArrayDemo.java:4: Variable MiArreglo no se ha inicializado.
Las siguientes lneas asignan valores a cada elemento de la matriz:
MiArreglo [0] = 100; // Inicializar primer elemento
MiArreglo [1] = 200; // Inicializar segundo elemento
MiArreglo [2] = 300; // Y as sucesivamente
Inicializacin
Cada elemento de la matriz se accede por su ndice numrico:
tener
acceso
un
nmero
clase MultiDimArrayDemo {
main (String [] args) {static void pblicos
String [] [] nombres = {
{"Seor", "seora", "Sra."},
{"Smith", "Jones"}
};
// Sr. Smith
System.out.println (nombres [0] [0] + nombres [1] [0]);
// Sra. Jones
System.out.println (nombres [0] [2] + nombres [1] [1]);
}
}
El Sr. Smith
Sra. Jones
System.out.println (MiArreglo.length);
Copia de un Arreglo
System clase tiene un mtodo arraycopy que puede utilizar para copiar de
manera eficiente los datos de un array en otra:
public static arraycopy void (src object, int srcPos, Dest object, int
destPos, int longitud)
Los dos argumentos Object especifican la matriz a copiar de la matriz y la
copia. Los tres int argumentos especifican la posicin de partida en la
matriz de origen, la posicin de partida en la matriz de destino, y el nmero
de elementos de matriz para copiar.
El siguiente programa, ArrayCopyDemo, declara una matriz de char
elementos, ortografa de la palabra "descafeinado". Utiliza la
System.arraycopy mtodo para copiar una subsecuencia de componentes
de la matriz en una segunda matriz:
clase ArrayCopyDemo {
main (String [] args) {static void pblicos
char [] copyFrom = {'d', 'e', 'c', 'a', 'f', 'f', 'e', 'I', 'n', 'a', 't', 'e', 'd'};
char [] copyTo = new char [7];
System.arraycopy (copyFrom, 2, copyTo, 0, 7);
System.out.println (new String (copyTo));
}
}
La salida de este programa es:
cafena
Manipulacin de un arreglo
Las matrices son un concepto potente y til que se usa en la programacin.
Java proporciona mtodos para llevar a cabo alguno de las manipulaciones
ms comunes relacionados con las matrices. Por ejemplo, la
ArrayCopyDemo ejemplo se utiliza el arraycopy mtodo de la System
clase en lugar de iterar manualmente a travs de los elementos de la matriz
de origen y la colocacin de cada uno de ellos en la matriz de destino. Esto
se lleva a cabo detrs de las escenas, lo que permite al desarrollador utilizar
una sola lnea de cdigo para llamar al mtodo.
clase ArrayCopyOfDemo {
main (String [] args) {static void pblicos
char [] copyFrom = {'d', 'e', 'c', 'a', 'f', 'f', 'e',
'I', 'n', 'a', 't', 'e', 'd'};
char [] = copyTo java.util.Arrays.copyOfRange (copyFrom, 2, 9);
System.out.println (new String (copyTo));
}
}
Como puede ver, la salida de este programa es el mismo (caffein), aunque
requiere un menor nmero de lneas de cdigo. Tenga en cuenta que el
segundo parmetro de la copyOfRange mtodo es el ndice inicial del rango
a copiar, inclusive, mientras que el tercer parmetro es el ndice final del
rango a copiar, exclusivamente. En este ejemplo, el rango que va a copiar
no incluye el elemento de la matriz en el ndice 9 (que contiene el carcter a
).
Algunas otras operaciones tiles proporcionadas por mtodos en el
java.util.Arrays clase, son los siguientes: