Guia N°1 - Arreglos

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 6

Gua N 1:

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.

Cada elemento de una matriz se llama elemento, y cada elemento se


accede por su ndice numrico, como se muestra en la figura anterior.
First index: Primer elemento indexado
Element at index 8: Elemento en la posicin 8
Array length: Tamao o longitud del arreglo (10 en este ejemplo)
El siguiente programa ArrayDemo, crea una matriz de enteros, pone algunos
valores de la matriz e imprime cada valor en salida estndar.

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:

System.out.println ("Elemento 1 en el ndice 0:" + MiArreglo [0]);


System.out.println ("Elemento 2 en el ndice 1:" + MiArreglo [1]);
System.out.println ("Elemento 3 en el ndice 2:" + MiArreglo [2]);
Alternativamente, puede utilizar la sintaxis de acceso directo para crear e
inicializar una matriz:
int [] MiArreglo = {100, 200, 300, 400, 500, 600, 700, 800, 900,
1000 };

Aqu la longitud de la matriz se determina por el nmero de valores


proporcionados entre llaves y separados por comas.
Tambin puede declarar una matriz de matrices (tambin conocido como
una matriz multidimensional) mediante el uso de dos o ms conjuntos de
corchetes, ejemplo: String[][] names.
Cada elemento, por lo tanto, debe
correspondiente de los valores del ndice.

tener

acceso

un

nmero

Acceso a los elementos de un arreglo


En el lenguaje de programacin Java, una matriz multidimensional es una
matriz cuyos componentes son a su vez matrices. Esto es a diferencia de las
matrices en C o Fortran. Una consecuencia de esto es que las filas se les
permiten variar en longitud, como se muestra en la siguiente programa
MultiDimArrayDemo:

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]);
}
}

La salida de este programa es:

El Sr. Smith
Sra. Jones

Por ltimo, puede utilizar el incorporado en length propiedad para


determinar el tamao de cualquier matriz. El siguiente cdigo imprime el
tamao de la matriz a la salida estndar:

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.

Para su comodidad, Java SE ofrece varios mtodos para realizar


manipulaciones de matriz (tareas comunes, como la copia, clasificacin y
bsqueda arrays) en la clase java.util.Arrays. Por ejemplo, el ejemplo
anterior puede ser modificado para utilizar el copyOfRange mtodo de la
java.util.Arrays clase, como se puede ver en el ArrayCopyOfDemo
ejemplo. La diferencia es que el uso de la copyOfRange mtodo no
requiere que usted para crear la matriz de destino antes de llamar al
mtodo, debido a que la matriz de destino es devuelto por el 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:

Bsqueda de una matriz para un valor especfico para obtener el ndice en


el que se coloca (la binarySearch mtodo).
La comparacin de dos matrices para determinar si son iguales o no (el
equals mtodo).
Llenar una matriz para colocar un valor especfico en cada ndice (el fill
mtodo).
Ordenacin de un conjunto en orden ascendente. Esto se puede hacer ya
sea secuencialmente, utilizando el sort mtodo, o al mismo tiempo,
utilizando el parallelSort mtodo introducido en Java SE 8. clasificacin en
paralelo de matrices grandes en sistemas multiprocesador es ms rpido
que el conjunto secuencial de clasificacin.

También podría gustarte