+ All Categories
Home > Documents > Arreglos en Java

Arreglos en Java

Date post: 05-Dec-2015
Category:
Upload: fernando
View: 234 times
Download: 1 times
Share this document with a friend
Description:
java areglos
12
23/06/2015 Por: Ing. Msc. Alberto MEDINA VILLACORTA 1 Arreglos, Arrays o Matrices en Java Arreglos, Arrays o Matrices en Java Por: Ingー Msc. Alberto Medina Villacorta Es una colección de datos que se caracteriza por su organización y por el conjunto de operaciones que se definen para su manipulación, éstos definen la estructura. 1 Se clasifican en estructuras estáticas y dinámicas, según el uso que hace de la memoria. 2 Estructuras de Datos Estáticas: Aquellas en las que la cantidad de memoria que ocupan se define antes de ejecutar el programa. No se puede cambiar el tamaño de memoria asignado, durante la ejecución del programa. 1 Se usan cuando se conoce la cantidad de datos, se tienen los Arreglos, las Cadenas y los Registros. Tipos de Estructuras Dinámicas: Aquellas en las que no es necesario reservar espacio de memoria antes de ejecutar el programa. ya que este espacio se puede asignar durante su ejecución según se necesite. 2 Así mismo dicho espacio se puede liberar para ser utilizado por otros datos, se tienen las Listas, Pilas, Colas, Árboles y Grafos. Tipos de Estructuras
Transcript

23/06/2015

Por: Ing. Msc. Alberto MEDINA VILLACORTA 1

Arreglos, Arrayso Matrices enJava

Arreglos, Arrayso Matrices enJava

Por: Ing° Msc. Alberto Medina Villacorta

Es una colección de datos que secaracteriza por su organización ypor el conjunto de operaciones quese definen para su manipulación,éstos definen la estructura.

1

Se clasifican en estructuras estáticasy dinámicas, según el uso que hacede la memoria.

2

Estructuras de Datos

Estáticas: Aquellas en las que lacantidad de memoria que ocupan sedefine antes de ejecutar el programa.No se puede cambiar el tamaño dememoria asignado, durante laejecución del programa.

1

Se usan cuando se conoce la cantidadde datos, se tienen los Arreglos, lasCadenas y los Registros.

Tipos de Estructuras

Dinámicas: Aquellas en las que noes necesario reservar espacio dememoria antes de ejecutar elprograma. ya que este espacio sepuede asignar durante su ejecuciónsegún se necesite.

2

Así mismo dicho espacio se puedeliberar para ser utilizado por otrosdatos, se tienen las Listas, Pilas,Colas, Árboles y Grafos.

Tipos de Estructuras

23/06/2015

Por: Ing. Msc. Alberto MEDINA VILLACORTA 2

Tipos personalizados: Enumerados

Los enumerados son conjuntos de valoresconstantes para los que no existen un tipopredeterminado.Son definidos por el usuario, según susnecesidades.

En el lenguaje Java se definen de la siguientemanera:

enum nombre {listaDeConstantes}

Enumerados: definición

Por ejemplo, no existe ningún tipo de datopredefinido para representar los días de lasemana, los meses del año, etc.

enum diaSemana {DOMINGO, LUNES,…, SABADO}enum mesAño{ENERO, FEBRERO, …, DICIEMBRE}enum turnoClase {MAÑANA, TARDE, NOCHE}

Ejemplos:Ejemplos:

Ejemplo de uso de Enumerados

public class enumerado{enum diaSemana {DOMINGO, LUNES, MARTES,MIERCOLES, JUEVES, VIERNES, SABADO}public static void main(String[ ] args) {diaSemana ahora = diaSemana.MIERCOLES;diaSemana fin = diaSemana.SABADO;System.out.println("Hoy es: " + ahora +

"\nEl fin de semana es el " + fin ); }}

Una arreglo, array o matriz es un conjunto devariables (llamados elementos o componentes)que contiene valores del mismo tipo.Los tipos de datos se dividen en 2 categorías:primitivos y tipos de referencia.Las matrices son objetos, por tanto se considerantipos de referencia.Lo que normalmente consideramos como unamatriz es en realidad una referencia a un objetode matriz en la memoria.

Arreglo, Array o Matriz

23/06/2015

Por: Ing. Msc. Alberto MEDINA VILLACORTA 3

Los elementos de una matriz pueden ser tiposprimitivos o tipos de referencia (incluye matrices).Para hacer referencia a un elemento determinadoen una matriz, se especifica el nombre de lareferencia a la matriz y el número de posición delelemento en la matriz.El número de posición del elemento se llama elíndice del elemento o subíndice del dato.El primer elemento de un array tiene índice ceroy se llama a veces el elemento cero

Arreglo, Array o Matriz

Es una estructura estática de datos, que permiteagrupar tipos de datos sencillos en estructurasmás complejas y hacer referencia a esaestructura por su nombre.

Arreglo Unidimensional o Lista

Lo más importante es que se accede y se hacereferencia a los datos individuales del arraya través de un índice numérico, el mismo quepermite ejecutar muchas operaciones entiempos muy cortos.

1

Se almacenanen posicionesconsecutivasde memoria.

2

Todos loselementos sondel mismo tipo.

3

Todos los elementostienen el mismonombre y sediferencian por unnúmero que indicasu posición.

Es un conjunto de elementos que tiene lassiguientes características:

Arreglo Unidimensional o Lista

4

Permite manipular concódigo compacto datosen forma masiva.

Arreglo Unidimensional o Lista

12 45 19 75edad0 1 2 3

‘u’ ‘c’ ‘d’ ‘a’ ‘z’ ‘m’letra0 1 2 3 4 5

1.50 1.89 1.45 1.56 0.95 1.82talla0 1 2 3 4 5

Ejemplos:

23/06/2015

Por: Ing. Msc. Alberto MEDINA VILLACORTA 4

Declaración de Arreglo-Lista

En el lenguaje Java un arreglo unidimensionalse declara según la siguiente sintaxis:

tipoDato nombreArreglo [ ];

Ejemplos:Ejemplos: int edad[ ];char letra[ ];double talla[ ];

Declaración de Arreglo-Lista

Puede usar cualquier tipo base, un primitivo(int, double, etc.), un enumerado, u otro tipo(String, etc.) con la sintaxis equivalente:

tipoDato [ ] nombreArreglo;

Ejemplos:Ejemplos: int [ ]edad;char [ ]letra;double [ ]talla;Creación de Arreglo-Lista

Luego de su declaración se debe crear el arrayhaciendo uso del operador new así:

nombreArreglo = new tipoDato [numElementos];

Ejemplos:Ejemplos: edad = new int [4];letra = new char [6];talla = new double [6];

Declarar y Crear Arreglo-Lista

Los arrays son objetos, por el que es posiblecombinar los pasos de declaración y creaciónde arreglos simultáneamente en uno solo, así:

tipoDato nombreArreglo=new tipoDato[numElem];

Ejemplos:Ejemplos: int edad=new int [5];char letra=new char[6];double talla=new double[6];

23/06/2015

Por: Ing. Msc. Alberto MEDINA VILLACORTA 5

Resumen: Declarar y Crear

En resumen se tiene que:

tipoDato nombreArreglo=new tipoDato[numElem];

Más ejemplos:Más ejemplos: int nHijos=new int [40];double prom=new double[N];

tipoDato [ ] nombreArreglo;

nombreArreglo = new tipoDato [numElementos];

Declarar, crear e inicializar Arrays

Llamada inicialización estática: también esposible inicializar un array con valorescuando se declara, para ello se debe encerrarentre llaves la lista de valores, así:

Ejemplos:Ejemplos:int edad[ ]={12, 45, 19, 75};char letra[ ]={‘u’, ‘c’, ‘d’, ‘a’, ‘z’, ‘m’};double talla[ ]={1.5,1.89, 1.45,1.56,0.95,1.82};

Acceso a elementos

Para hacer referencia a un elemento de unarreglo unidimensional es necesario indicar elnombre del arreglo y la posición de dichoelemento.

En el lenguaje Java esto se hace de la siguientemanera:

nombreArreglo [posiciónDelElemento]

Acceso a elementos

edad0 1 2 3

edad[0] edad[1] edad[2] edad[3]

Ejemplos:

23/06/2015

Por: Ing. Msc. Alberto MEDINA VILLACORTA 6

Tamaño: arreglo unidimensional

Para conocer el número de elementos de unarreglo unidimensional se utiliza su atributolength según la siguiente sintaxis:

nombreArreglo.length

Ejemplos:Ejemplos:int longitudEdad = edad.length;int longitudTalla = talla.length;

Arreglo Bidimensional o Tabla

0 1 2 3 4012

Filas

Columnas

Es una estructura que permite almacenarelementos del mismo tipo, los cuales estánorganizados a manera de matriz en filas ycolumnas, como se muestra:

Declaración de Arreglo-Tabla

En el lenguaje Java un arreglo bidimensionalse declara según la siguiente sintaxis:

tipoDato nombreArreglo [ ] [ ];

Ejemplos:Ejemplos: int datos[ ][ ];double tabla[ ][ ];

Creación de Arreglos

En el lenguaje Java un arreglo bidimensionalse creará de manera similar a los unidimensio-nales según la siguiente sintaxis:

nombreArreglo=new tipoDato [numFil][numCol];

Ejemplos:Ejemplos: datos=new int [4][5];tabla=new double [10][6];

23/06/2015

Por: Ing. Msc. Alberto MEDINA VILLACORTA 7

Acceso a elementos (tablas)

Para acceder a un elemento en particularde un arreglo bidimensional es necesarioespecificar el nombre del arreglo y el númerode la fila y la columna donde está ubicado.

En lenguaje Java esto se hace de la siguientemanera:

nombreArreglo [numFila ] [numColumna]

Acceso a elementos (tablas)

datos[0][0] datos[0][1] datos[0][2] datos[0][3] datos[0][4]

datos[1][0] datos[1][1] datos[1][2] datos[1][3] datos[1][4]

datos[2][0] datos[2][1] datos[2][2] datos[2][3] datos[2][4]

datos[3][0] datos[3][1] datos[3][2] datos[3][3] datos[3][4]

0 1 2 3 4

0

1

2

3

datos

Cada elemento del array se puede manipular en formaindependiente como si de tratara de un dato simple.

Almacenamiento en memoria

17 25 9 32

41 72 23 19

31 21 52 48

0 1 2 3

0

1

2

Z

Se hace en forma consecutiva, fila tras fila.

17 25 9 32 41 72 23 19 31 21 52 48Z

Fila 0 Fila 1 Fila 2

Esquemalógico

Esquema enmemoria

Tamaño: arreglo bidimensional

Como en el caso de un arreglo unidimensionalse usa el atributo length, en este caso cadadimensión tiene su propio tamaño.

nombreArreglo.lengthnombreArreglo[0].length

Ejemplos:Ejemplos:int tamañoPrimera = tabla.length;int tamañoSegunda = tabla[0].length;Primera dimensión

Segunda dimensión

23/06/2015

Por: Ing. Msc. Alberto MEDINA VILLACORTA 8

Arrays Multidimensionales

En Java un arreglo multidimensional sedeclara según la siguiente sintaxis:

tipoDato nombreArreglo [ ] [ ] [ ] . . . ;

Ejemplo:Ejemplo: int m[ ][ ][ ];double matriz[ ][ ][ ][ ];

Arrays MultidimensionalesComo en los casos anteriores, se crearánsegún la siguiente sintaxis:

nombreArreglo=new tipoDato [ ] [ ] [ ] . . . ;

Ejemplo:Ejemplo:m=new int[5][3 ][2 ];matriz= new double [2][3][4][5];Arrays Multidimensionales

También se pueden inicializar como en casosanteriores según lo siguiente:double notas [ ][ ] ={{ 1, 2, 3},{ 3, 2, 1},{ 3, 1, 2},{ 2, 1, 2}}

Longitud de un arrayPara obtener la longitud de un array se usa elmétodo length según lo siguiente://La primera dimensiónlongitud1=nombreArray.length;//La segunda dimensiónlongitud2=nombreArray[valor].length;//La tercera dimensiónlongitud3=nombreArray[valor][valor].length;

23/06/2015

Por: Ing. Msc. Alberto MEDINA VILLACORTA 9

API de manejo de Arrays

La API(Application Programming Interface) dellenguaje proporciona la clase ya definidaArrays (en java.util.Arrays) para realizarmúltiples operaciones con arrays, comorellenar y ordenar un array y buscar en arrays

int [ ] dato;dato = new int [20];

Por ejemplo si se define:Por ejemplo si se define:

Ejemplo uso de la API

Para rellenar todo el array con el número 11se usa:

Arrays.fill(dato,11);

Para rellenar la parte del array entre lasposiciones 5 y 12 (ambas inclusive) con elnúmero 11 se usa:

Arrays.fill(dato, 5, 13, 11);

Ejemplo uso de la API

Para ordenar el array en forma ascendentese usa:

Arrays.sort(dato);

Para ordenar solo una parte del array entre lasposiciones 5 y 12 (ambas inclusive) se usa:

Arrays.sort(dato, 5, 13);

Ejemplo uso de la APIPara buscar un dato en un array, este debeestar previamente ordenado, para buscar elelemento 19 en un array de enteros se usa:

int pos = Arrays.binarySearch(dato,19);

Si pos es positivo, en esa posición hay un enterocon el valor buscado, si hay mas de un enterocon el valor buscado, no se indica nada sobrecual de ellos se devuelve, si el valor buscado nose encuentra, devuelve un número negativo.

23/06/2015

Por: Ing. Msc. Alberto MEDINA VILLACORTA 10

Código ejemplo: longitud de arraypublic class LongitudArray{ public static void main(String[ ] args){double nota[ ] ={88, 99, 73, 56, 87, 64};double suma, prom;suma = 0;

Código ejemplo: longitud de arrayfor (int i = 0; i < nota.length; i++){suma+= nota[i];}prom = suma / nota.length;System.out.println(“Promedio:”+prom);}}

2do. ejemplo: longitud de array// Función para salida de filas y//columnas de array de 2 dimensionespublic static void salidaArray( int array[ ][ ] ){// loop alrededor de las filas del arrayfor(int fila=0; fila<array.length;fila++){

2do. ejemplo: longitud de array// loop a través de cols. de la fila actualfor (int col=0;col< array[fila].length; col++)System.out.print(array[fila][col] +"\t");// inicia una nueva linea de salidaSystem.out.println( ); }}}

23/06/2015

Por: Ing. Msc. Alberto MEDINA VILLACORTA 11

2do. ejemplo: longitud de arraypublic class LongitudArray2{public static void main(String[ ] args){int array1[ ][ ] = { { 1, 2, 3 }, { 4, 5, 6 } };int array2[ ][ ] = { { 1, 2 }, { 3 }, { 4, 5, 6 } };System.out.println( "Valores en array1por fila son:" );

2do. ejemplo: longitud de array// muestra array1 por filassalidaArray(array1);System.out.println( "\nValores en array2 porfila son:" );// muestra array2 por filassalidaArray(array2);}// fin de main

Arrays MultidimensionalesLos arrays multidimensionales son arrays dearrays , quiere decir que se pueden construirarrays como se quiera:double datos [ ][ ] = new double[5][ ];datos[0]=new double [500];datos[1]=new double [300];datos[2]=new double [400];datos[3]=new double [100];datos[4]=new double [200];

Actividades de reforzamiento

Hacer un programa usando arrays paracalcular la distancia entre dos puntos.

Hacer un programa que ingrese el nombre,sexo, estado civil y edad de N personas, paraImprimir el promedio de edad de aquellas queTienen el mismo sexo de la persona mas joven.

23/06/2015

Por: Ing. Msc. Alberto MEDINA VILLACORTA 12


Recommended