Upload
va-padilla
View
86
Download
1
Embed Size (px)
DESCRIPTION
arreglos en Java
Citation preview
Array en Java
Ingeniería de Sistemas e Informática
Asignatura : Lenguaje de Programación ISemestre : 2012-ITurno : Noche Elaborado por
Ing° Oscar Alberto Barnett Contreras
Objetivos Declarar un array de tipos de datos
primitivos. Inicializar un array mediante lazos y
en la declaración. Utilizar lazos para realizar
operaciones con un array: Ordenar un array con el método
burbuja. Buscar en un array con el método
lineal.Ing. Oscar ALberto Barnett
Contreras
Declaración de un array
Array: objeto que contiene una colección de elementos con el mismo tipo de dato.
Declaración de un array:
Tipo[] identificador;
O Tipo identificador[];
Un array se construye con el operador new
int lluvia[];lluvia = new int[12];
O
int lluvia[] = new int[12];
Se crea un array de 12 elementos con valor 0.
lluvia[0] 0
lluvia[1] 0
lluvia[2] 0
lluvia[3] 0
lluvia[4] 0
lluvia[5] 0
lluvia[6] 0
lluvia[7] 0
lluvia[8] 0
lluvia[9] 0
lluvia[10] 0
lluvia[11] 0
Ing. Oscar ALberto Barnett Contreras
Declaración de un array
double lluvia[];lluvia = new double[12];
O
double lluvia[] = new double[12];
Se crea un array de 12 elementos con valor 0.0
lluvia[0] 0.0
lluvia[1] 0.0
lluvia[2] 0.0
lluvia[3] 0.0
lluvia[4] 0.0
lluvia[5] 0.0
lluvia[6] 0.0
lluvia[7] 0.0
lluvia[8] 0.0
lluvia[9] 0.0
lluvia[10] 0.0
lluvia[11] 0.0
Ing. Oscar ALberto Barnett Contreras
Declaración de un array
gota lluvia[];lluvia = new gota[12];
O
gota lluvia[] = new gota[12];
Se crea un array de 12 elementos con valor null
lluvia[0] null
lluvia[1] null
lluvia[2] null
lluvia[3] null
lluvia[4] null
lluvia[5] null
lluvia[6] null
lluvia[7] null
lluvia[8] null
lluvia[9] null
lluvia[10] null
lluvia[11] null
Ing. Oscar ALberto Barnett Contreras
Acceso a los elementos
Los elementos de un array se acceden mediante un índice.
lluvia[2] o lluvia[i+1]
El índice de la primera posición de un array es siempre 0.
Ing. Oscar ALberto Barnett Contreras
Iniciación de array en la declaración
La forma de iniciar un array al declararlo es como sigue:
String[] nombreMes = {“enero”,”febrero”,”marzo”,
”abril”,”mayo”,”junio”,
”julio”,”agosto”,”septiembre”,
”octubre”,”noviembre”,”diciembre”};
Ing. Oscar ALberto Barnett Contreras
Iniciación de array con lazo
double lluvia[] = new double[12];double mediaAnual, suma = 0.0;
for( int i = 0; i < 12; i++)
{ System.out.print(“LLUVIA PARA EL MES “ + (i+1)); lluvia[i] = sc.nextDouble(); suma += lluvia[i]; }
mediaAnual = suma/12;System.out.println(“Media anual = ” + mediaAnual);
Leer 12 valores de lluvia mensual y calcular el promedio
Ing. Oscar ALberto Barnett Contreras
Procesos en un array
double diferencia;
for( int i = 0; i < 12; i++)
{ System.out.println( lluvia[i] ); diferencia = Math.abs(lluvia[i]- mediaAnual); System.out.println( diferencia );}
Calcula la diferencia entre la lluvia del mes y la media anual
Ing. Oscar ALberto Barnett Contreras
Tamaño de un array
El tamaño de un array se obtiene por medio del miembro length del objeto array.
Los lazos de los ejemplos anteriores pueden escribirse como:
for( int i = 0; i < lluvia.length; i++)
{ …;…;
}
Ing. Oscar ALberto Barnett Contreras
Lluvia para meses pares e impares
double lluvia[] = new double[12];double sumaMesImpar = 0.0, mediaMesImpar,double sumaMesPar = 0.0, mediaMesPar;for(int i=0; i < lluvia.length; i++){ System.out.print("LLUVIA PARA EL MES DE “ + nombreMes[i]); lluvia[i]=(double) sc.nextFloat();}for(int i = 0; i < lluvia.length; i+=2)
sumaMesImpar += lluvia[i];
mediaMesImpar = sumaMesImpar/6;for(int i = 1; i < lluvia.length; i+=2)
sumaMesPar += lluvia[i];
mediaMesPar = sumaMesPar/6;Ing. Oscar ALberto Barnett
Contreras
Método de ordenación
Compara el primer elemento con el segundo, luego el segundo, con el tercero, etc., si es necesario se intercambian los elementos. Al final de esta “pasada” se tendrá el primer elemento ordenado al inicio.
La pasada se repite a partir del segundo elemento con todos los demás y luego a partir del tercer , etc., hasta el penúltimo.
for(i = 0; i<n-1; i++) for(j = i+1; j<n; j++) if(d[i]>d[j])
{ intercambiar d[i] y d[j];
}Ing. Oscar ALberto Barnett
Contreras
Ordenación y despliegue
//Despliega lista desordenada System.out.println("Desordenados\n"); for(i = 0; i<n; i++) System.out.println(d[i]);
System.out.println("\nOrdenados\n"); //ordena el vector for(i = 0; i<n-1; i++) for(j = i; j<n; j++) if(d[i].compareToIgnoreCase(d[j])>0){
String temp = d[i]; d[i] = d[j]; d[j] = temp; }
//Despliega lista ordenada for(i = 0; i<n; i++) System.out.println(d[i]); }}
Compara cadenas 0 – iguales>0 – la primera mayor<0 – la primera menor
Intercambia cadenasIng. Oscar ALberto Barnett
Contreras
Método de Búsqueda Lineal
El método consiste en comparar la clave de búsqueda (el valor a encontrar) con cada elemento del arreglo, si la clave es encontrada se cambia el estado de una variable bandera ( flag) obteniendo la posición donde existe la clave.
clave = sc.nextInt(); bandera = 0;
for(i = 0; i<array.lenght; i++) if(clave == array[i])
{ bandera = 1; posición = i;
}
Ing. Oscar ALberto Barnett Contreras
Array Multidimensional
Ing. Oscar ALberto Barnett Contreras
Un array multidimensional es un array de elementos array. En un array multidimensional de k-dimensiones; sus elementos se pueden acceder empleando la siguiente sintaxis:
array [ i1 ] [ i2 ]…[ ik ]
donde n1, n2, ….., nk
Declaración de array MD
Ing. Oscar ALberto Barnett Contreras
De la misma forma que el array simple, el MD se puede declarar con alguna de las siguientes formas:
Usando el operador new. Usando inicialización al declarar.
Declaración de array MD
Ing. Oscar ALberto Barnett Contreras
Usando operador new
new Tipo [ n1] [n2]…[nk]
Tamaño de cada dimensión es n1, n2, …,nk, respectivamente.
Todos los elementos en el array son inicializados con los valores default según el tipo de sus elementos.
Usando inicializador
{I1, I2, ...., Ik}
donde cada I1, I2, ...., Ik es un
inicializador dimensional.
Declaración de array MD
Ing. Oscar ALberto Barnett Contreras
Ejemplo usando el operador new:
double mat1[ ][ ] = new double[4][5];
Crea un array bidimensional de 4 filas x 5 columnas. Todos los 20 elementos son iniciados con 0.0
Ejemplo usando un inicializador k-dimensional, para un array de 2 dimensiones:
int mat2[ ] [ ] = {{1, 2, 3}, {4, 5, 6}};
Se crea un array de dos dimensiones 2 x 3. Los elementos son iniciados:
mat2[0][0]=1 mat2[1][0]= 4 mat2[0][1]=2 mat2[1][1]= 5 mat2[0][2]=3 mat2[1][2]= 6
Procesos en un array MD
Ing. Oscar ALberto Barnett Contreras
Para procesar todos los elementos de un array bidimensional, se necesita un for embebido dentro de otro for, por ejemplo:
Si int[ ][ ] A = new int[3][4];
El siguiente doble lazo, almacena 0 en cada posición del array bidimensional A :
for (int fila = 0; fila < 3; fila++) { for (int columna = 0; columna < 4; columna++)
{ A [fila][columna] = 0;
}}
Ing. Oscar ALberto Barnett Contreras
public class MaxMin{ public static void main(String[] args)
{ double mat[ ] [ ]= { {2.3, 5.1, 9.9}, {8.3, 4.5, 7.7},
{ 5.2, 6.1, 2.8}; };int n = mat.length;int m = mat[0].length;double maxmin = 0.0; for (int j = 0; j < m; j++) { double min = mat[j][0];
for (int i = 1; i < n ; i ++) { min = Math.min(min, mat[i][j]); } if (j==0) { maxmin = min; }else { maxmin = Math.max(maxmin, min); }
}System.out.println(“El valor max-min es” + maxmin);
}}
Al ejecutar, se obtiene:
El valor max-min es 4.5