Está en la página 1de 16

UNIVERSIDAD TCNICA DE AMBATO

FACULTAD DE INGENIERA EN SISTEMAS, ELECTRONICA E INDUSTRIAL

TRABAJO DE PROGRAMACION

TEMA:

ARRAYS

AUTOR

: CHULDE PAL

DOCENTE

: ING. PATRICIO GONZALEZ

AMBATO - ECUADOR 2013

ARRAYS Un array es un medio para guardar un conjunto de objetos de la misma clase. Se accede a cada elemento individual del array mediante un nmero entero denominado ndice. 0 es el ndice del primer elemento y n-1 es el ndice del ltimo elemento, siendo n, la dimensin del array. Los arrays son objetos en Java y como tales vamos a ver los pasos que hemos de seguir para usarlos convenientemente.

Un conjunto de 10 elementos.

Cada elemento de una matriz se denomina elemento y cada elemento se accede por su numrico ndice. Como se muestra en la ilustracin anterior, la numeracin comienza con 0. El noveno elemento, por ejemplo, por lo tanto, puede acceder en el ndice 8. El siguiente programa, ArrayDemo , crea una matriz de enteros, pone algunos valores en la matriz, e imprime cada valor en la salida estndar.
clase ArrayDemo { public static void main (String [] args) { / / Declara un arreglo de enteros int [] anArray; / / Asigna memoria para 10 nmeros enteros anArray = new int [10]; / / Inicializa el primer elemento unArray [0] = 100; / / Inicializa el segundo elemento unArray [1] = 200; / / Y as sucesivamente unArray [2] = 300; anArray [3] = 400; anArray [4] = 500; anArray [5] = 600; anArray [6] = 700; anArray [7] = 800; unArray [8] = 900; anArray [9] = 1,000;

System.out.println ("Elemento en el + AnArray [0]); System.out.println ("Elemento en el + AnArray [1]); System.out.println ("Elemento en el + AnArray [2]); System.out.println ("Elemento en el + AnArray [3]); System.out.println ("Elemento en el + AnArray [4]); System.out.println ("Elemento en el + AnArray [5]); System.out.println ("Elemento en el + AnArray [6]); System.out.println ("Elemento en el + AnArray [7]); System.out.println ("Elemento en el + AnArray [8]); System.out.println ("Elemento en el + AnArray [9]); } }

ndice 0:" ndice 1:" ndice 2:" ndice 3:" ndice 4:" ndice 5:" ndice 6:" ndice 7:" ndice 8:" ndice 9:"

La salida de este programa es:


Elemento Elemento Elemento Elemento Elemento Elemento Elemento Elemento Elemento Elemento en en en en en en en en en en el el el el el el el el el el ndice ndice ndice ndice ndice ndice ndice ndice ndice ndice 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 100 200 300 400 500 600 700 800 900 1000

Declarar una variable para hacer referencia a una matriz El programa anterior declara un array (llamado anArray ) con la siguiente lnea de cdigo:
/ / Declara un arreglo de enteros int [] anArray;

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 del array. Un tipo de arreglo se escribe como tipo [], donde tipo es el tipo de datos de los elementos contenidos, los soportes son smbolos especiales que indican que esta variable tiene una matriz. El tamao de la matriz no es parte de su tipo (por lo que los soportes estn vacos). El nombre de un arreglo puede ser lo que quieras, siempre y cuando siga las reglas y convenciones como se discuti previamente en

la nomenclatura seccin. Al igual que con las variables de otros tipos, la declaracin no crea realmente una serie, sino que simplemente le dice al compilador que esta variable tendr una matriz del tipo especificado. Del mismo modo, se puede declarar matrices de otros tipos:
byte [] anArrayOfBytes; corto [] anArrayOfShorts; tiempo [] anArrayOfLongs; float [] anArrayOfFloats; double [] anArrayOfDoubles; Boolean [] anArrayOfBooleans; char [] anArrayOfChars; String [] anArrayOfStrings;

Creacin, inicializacin y acceso a un array


Para inicializar un array de 4 enteros escribimos
numeros[0]=2; numeros[1]=-4; numeros[2]=15; numeros[3]=-25;

Se pueden inicializar en un bucle for como resultado de alguna operacin


for(int i=0; i<4; i++){ numeros[i]=i*i+4; }

No necesitamos recordar el nmero de elementos del array, su miembro dato length nos proporciona la dimensin del array. Escribimos de forma equivalente
for(int i=0; i<numeros.length; i++){ numeros[i]=i*i+4; }

Los arrays se pueden declarar, crear e inicializar en una misma lnea, del siguiente modo
int[] numeros={2, -4, 15, -25}; String[] nombres={"Juan", "Jos", "Miguel", "Antonio"};

Para imprimir a los elementos de array nombres se escribe


for(int i=0; i<nombres.length; i++){ System.out.println(nombres[i]); }

Java verifica que el ndice no sea mayor o igual que la dimensin del array, lo que facilita mucho el trabajo al programador.

Para crear un array de tres objetos de la clase Rectangulo se escribe

Declarar
Rectangulo[] rectangulos;

Crear el array

rectangulos=new Rectangulo[3];

Inicializar los elementos del array

rectangulos[0]=new Rectangulo(10, 20, 30, 40); rectangulos[1]=new Rectangulo(30, 40); rectangulos[2]=new Rectangulo(50, 80);

O bien, en una sola lnea


Rectangulo[] rectangulos={new Rectangulo(10, 20, 30, 40), new Rectangulo(30, 40), new Rectangulo(50, 80)};

Usar el array

Para calcular y mostrar el rea de los rectngulos escribimos


for(int i=0; i<rectangulos.length; i++){ System.out.println(rectangulos[i].calcularArea()); }

ARREGLOS MULTIDIMENSIONALES Los arrays multidimensionales son unas estructuras de datos que almacenan los valores en ms de una dimensin. Los arrays que hemos visto hasta ahora almacenan valores en una dimensin, por eso para acceder a las posiciones utilizamos tan solo un ndice. Los arrays de 2 dimensiones guardan sus valores, por decirlo de alguna manera, en filas y columnas y por ello necesitaremos dos ndices para acceder a cada una de sus posiciones. Dicho de otro modo, un array multidimensional es como un contenedor que guardara ms valores para cada posicin, es decir, como si los elementos del array fueran a su vez otros arrays. DECLARACION: Tipo_de_variable[ ][ ] [ ] new Tipo_de_variable[dimensin1][dimensin2][dimensinN]; Nombre_del_array =

Tambin podemos alternativamente usar esta declaracin: Tipo_de_variable[ ][ ] [ ] Nombre_del_array; Nombre_del_array new Tipo_de_variable[dimensin1][dimensin2][dimensinN]; =

Arrays de diferentes tipos de datos:


byte[][] edad = new byte[4][3]; short ][] edad = new short[4][3]; int[][] edad = new int[4][3]; long[][] edad = new long[4][3]; float[][] estatura = new float[3][2]; double[][] estatura = new double[3][2]; boolean[][] estado = new boolean[5][4]; char[][] sexo = new char[2][1]; String[][] nombre = new String[2][1];

Una matriz bidimensional puede tener varias filas, y en cada fila no tiene por qu haber el mismo nmero de elementos o columnas. Por ejemplo, podemos declarar e inicializar la siguiente matriz bidimensional

double[][] matriz={{1,2,3,4},{5,6},{7,8,9,10,11,12},{13}};

La primer fila tiene cuatro elementos {1,2,3,4} La segunda fila tiene dos elementos {5,6} La tercera fila tiene seis elementos {7,8,9,10,11,12} La cuarta fila tiene un elemento {13}

Para mostrar los elementos de este array bidimensional escribimos el siguiente cdigo
for (int i=0; i < matriz.length; i++) { for (int j=0; j < matriz[i].length; j++) { System.out.print(matriz[i][j]+"\t"); } System.out.println(""); }

Como podemos apreciar, matriz.length nos proporciona el nmero de filas (cuatro), y matriz[i].length, nos proporciona el nmero de elementos en cada fila. Mostramos los elementos de una fila separados por un tabulador usando la funcin print. Una vez completada una fila se pasa a la siguiente mediante println. Los arrays bidimensionales nos permiten guardar los elementos de una matriz. Queremos crear y mostrar una matriz cuadrada unidad de dimensin 4. Recordaremos que una matriz unidad es aquella cuyos elementos son ceros excepto los de la diagonal principal i==j, que son unos. Mediante un doble bucle for recorremos los elementos de la matriz especificando su fila i y su columna j. En el siguiente programa

Se crea una matriz cuadrada de dimensin cuatro Se inicializa los elementos de la matriz (matriz unidad) Se muestra la matriz una fila debajo de la otra separando los elementos de una fila por tabuladores.

public class MatrizUnidadApp { public static void main (String[] args) { double[][] mUnidad= new double[4][4]; for (int i=0; i < mUnidad.length; i++) { for (int j=0; j < mUnidad[i].length; j++) { if (i == j) { mUnidad[i][j]=1.0; }else { mUnidad[i][j] = 0.0; } } } for (int i=0; i < mUnidad.length; i++) { for (int j=0; j < mUnidad[i].length; j++) { System.out.print(mUnidad[i][j]+"\t"); } System.out.println(""); } } }

Un ejemplo del uso de break con etiqueta y arrays multidimensionales


int[][] matriz={ {32, 87, 3, 589}, {12, -30, 190, 0}, {622, 127, 981, -3, -5}}; int numero=12; int i=0, j=0; buscado: for(i=0; i<matriz.length; i++){ for(j=0; j<matriz[i].length; j++){ if(matriz[i][j]==numero){ break buscado; } } } System.out.println("buscado: matriz("+ i+", "+j+")="+matriz[i][j]);

DECLARACIN Y CREACIN DE UN ARRAYLIST


De forma general un ArrayList en Java se crea de la siguiente forma: ArrayList nombreArray = new ArrayList(); Esta instruccin crea el ArrayList nombreArray vaco. Un arrayList declarado as puede contener objetos de cualquier tipo. Por ejemplo:
ArrayList a = new ArrayList(); a.add("Lenguaje"); a.add(3); a.add('a'); a.add(23.5); Los elementos del arrayList a son: Lenguaje 2 a 23.5

Es decir, un ArrayList puede contener objetos de tipos distintos . En este ejemplo, el primer objeto que se aade es el String Lenguaje. El resto no son objetos. Son datos de tipos bsicos pero el compilador los convierte automticamente en objetos de su clase envolvente (clase contenedora o wrapper) antes de aadirlos al array. Un array al que se le pueden asignar elementos de distinto puede tener alguna complicacin a la hora de trabajar con l. Por eso, una alternativa a esta declaracin es indicar el tipo de objetos que contiene. En este caso, el array solo podr contener objetos de ese tipo. De forma general: ArrayList<tipo> nombreArray = new ArrayList<tipo>(); Tipo debe ser una clase. Indica el tipo de objetos que contendr el array. No se pueden usar tipos primitivos. Para un tipo primitivo se debe utilizar su clase envolvente. Por ejemplo: ArrayList<Integer> numeros = new ArrayList<Integer>(); Crea el array numeros de enteros.

MTODOS DE ARRAYLIST
Algunos mtodos que proporciona ArrayList son: MTODO size() add(X) add(posicin, X) get(posicion) remove(posicion) remove(X) clear() set(posicin, X) contains(X) indexOf(X) DESCRIPCIN Devuelve el nmero de elementos (int) Aade el objeto X al final. Devuelve true. Inserta el objeto X en la posicin indicada. Devuelve el elemento que est en la posicin indicada. Elimina el elemento que se encuentra en la posicin indicada. Devuelve el elemento eliminado. Elimina la primera ocurrencia del objeto X. Devuelve true si el elemento est en la lista. Elimina todos los elementos. Sustituye el elemento que se encuentra en la posicin indicada por el objeto X. Devuelve el elemento sustituido. Comprueba si la coleccin contiene al objeto X. Devuelve true o false. Devuelve la posicin del objeto X. Si no existe devuelve -1

COPIAR UN ARRAYLIST El nombre de un ArrayList contiene la referencia al ArrayList, es decir, la direccin de memoria donde se encuentra el ArrayList, igual que sucede con los arrays estticos. Si disponemos de un ArrayList de enteros llamado ventas:

La instruccin: ArrayList<Integer> ventas1 = ventas; No copia el array ventas en el nuevo array ventas1 sino que crea un alias:

De esta forma tenemos dos formas de acceder al mismo ArrayList: mediante la referencia ventas y mediante la referencia ventas1. Para hacer una copia podemos hacerlo de forma manual elemento a elemento o se puede pasar la referencia del ArrayList original al constructor del nuevo:
ArrayList<Integer> ventas1 = new ArrayList<Integer>(ventas);

ARRAYLIST COMO PARMETRO DE UN MTODO Un ArrayList puede ser usado como parmetro de un mtodo. Adems un mtodo puede devolver un ArrayList mediante la sentencia return. Ejemplo: Mtodo que recibe un ArrayList de String y lo modifica invirtiendo su contenido:
import java.util.*; public class ArrayList4 { public static void main(String[] args) { ArrayList<String> nombres = new ArrayList<String>(); nombres.add("Ana"); nombres.add("Luisa"); nombres.add("Felipe"); nombres.add("Pablo"); System.out.println(nombres); nombres = invertir(nombres); System.out.println(nombres); } public static ArrayList<String> invertir(ArrayList<String> nombres) { // Crea una lista para el resultado del mtodo ArrayList<String> resultado = new ArrayList<String>(); // Recorre la lista de nombres en orden inverso for (int i = nombres.size() - 1; i >= 0; i--) { // Aade cada nombre al resultado resultado.add(nombres.get(i)); } return resultado; } }

ARRAYS BIDIMENSIONALES UTILIZANDO ARRAYLIST Un ArrayList es un array unidimensional, pero con ellos podemos simular arrays de dos o ms dimensiones anidando ArrayLists. Para crear una matriz lo que creamos es un ArrayList cuyos elementos son a su vez ArrayList. Esto se puede extender sucesivamente y obtener arrays de ms dimensiones.

Sobrecarga de Mtodos. La firma de un mtodo est compuesta por su nombre y lista de parmetros que recibe, en Java los mtodos se pueden sobrecargar, es decir, pueden existir mtodos con el mismo nombre, lo importante es que su firma sea diferente. Si el nombre es el mismo la firma es diferente solo cuando su lista de parmetros es diferente. Para que la lista de parmetros sea diferente se debe tener en cuenta cantidad y tipo de datos usados en la lista. La sobrecarga se utiliza mucho cuando se quiere tener solo un mtodo y reciba parmetros diferentes. El tipo de datos a retornar no se encuentra dentro de la firma, por lo tanto un mtodo no difiere de otro por esta caracterstica. Paso de variables a los mtodos Pasar variables a los mtodos no es ms que pasar parmetros al metdo al momento de realizar su llamado, Java distingue entre dos tipos de variables a pasar en los mtodos, la primera es paso por valor, la segunda es paso por referencia. Paso de variables por valor Cuando un paso por valor se presenta, el mtodo crea una copia exacta del valor de la variable que fue pasada al mtodo. De esta manera el mtodo no puede modificar el argumento original durante los clculos o lgica en el cuerpo del mtodo. Paso de variables por referencia Cuando el paso por referencia ocurre, la referencia de la variable es pasada en el mtodo. Esto hace que el mtodo cree una copia de la referencia de la variable pasada al mtodo. Sin embargo, como no es por valor, el mtodo puede modificar el objeto al que la referencia est apuntando, Aunque diferentes referencias existen en los mtodos, la localizacin de los datos en memoria es la misma.

EJERCICIOS: 1 Programa Java que guarda en un array 10 nmeros enteros que se leen por teclado. A continuacin se recorre el array y calcula cuntos nmeros son positivos, cuntos negativos y cuntos ceros.
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package ejercicio1; import java.util.*; public class Ejercicio1 { /** *PAUL CHULDE *Programa Java que guarda en un array 10 nmeros enteros *que se leen por teclado. A continuacin se recorre *el array y calcula cuntos nmeros son positivos, * cuntos negativos y cuntos ceros. */ public static void main(String[] args) { Scanner teclado = new Scanner(System.in); int numeros[] = new int[10]; int positivos = 0, negativos = 0, cero = 0; //contadores int i; //Leemos los valores por teclado y los guardamos en el array System.out.println("INTRODUZCA LOS VALORES DEL ARRAY: "); System.out.println(""); for (i = 0; i < numeros.length; i++) { System.out.print("numeros[" + i + "]= "); numeros[i] = teclado.nextInt(); } //se recorre el array para contar positivos, negativos y ceros for (i = 0; i < numeros.length; i++) { if (numeros[i] > 0) { positivos++; } else if (numeros[i] < 0) { negativos++; } else { cero++; } } //mostrar resultados System.out.println("LOS NUMEROS POSITIVOS SON: " + positivos); System.out.println("LOS NUMEROS NEGATIVOS SON: " + negativos); System.out.println("LA CANTIDAD DE CEROS ES: " + cero); } }

2 Crear una matriz de tamao 4*4, mostrar la suma de cada fila y de cada columna.
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package programa_1; import java.util.*; public class Deber15 { /** * Crear una matriz de tamao 4*4, mostrar la suma de cada fila y de cada columna. */ public static void main(String[] args) { Scanner teclado = new Scanner (System.in); int t[][]=new int[4][4]; int suma_fila,suma_columnas; int i,j; final int tamao=4; t = new int[tamao][tamao]; System.out.println("MATRIZ DE TAMAO (4X4)"); for (i=0;i<tamao;i++){ for (j=0;j<tamao;j++){ System.out.print("INGRESE LOS VALORES EN LAS POSICIONES:["+i+"]["+j+"]: "); t[i][j]=teclado.nextInt(); } } System.out.println(); for (i=0;i<tamao;i++){ suma_columnas=0; for (j=0;j<tamao;j++){ suma_columnas=suma_columnas+t[i][j]; } System.out.println("LA SUMA DE LAS COLUMNAS ES==>"+" "+i+":"+" "+suma_columnas); } System.out.println(""); for (j=0;j<tamao;j++){ suma_fila=0; for (i=0;i<tamao;i++){ suma_fila=suma_fila+t[i][j]; } System.out.println("LA SUMA DE LAS FILAS ES==>"+" "+j+":"+" "+suma_fila); } } }

También podría gustarte