Anda di halaman 1dari 12

23/06/2015

Estructuras de Datos

Arreglos, Arrays
o Matrices en
Java
Por: Ing Msc. Alberto Medina Villacorta

Es una coleccin de datos que se


caracteriza por su organizacin y
por el conjunto de operaciones que
se definen para su manipulacin,
stos definen la estructura.

Se clasifican en estructuras estticas


y dinmicas, segn el uso que hace
de la memoria.

Tipos de Estructuras
1

Estticas: Aquellas en las que la


cantidad de memoria que ocupan se
define antes de ejecutar el programa.
No se puede cambiar el tamao de
memoria asignado, durante la
ejecucin del programa.
Se usan cuando se conoce la cantidad
de datos, se tienen los Arreglos, las
Cadenas y los Registros.

Por: Ing. Msc. Alberto MEDINA VILLACORTA

Tipos de Estructuras
2

Dinmicas: 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 ejecucin
segn se necesite.
As mismo dicho espacio se puede
liberar para ser utilizado por otros
datos, se tienen las Listas, Pilas,
Colas, rboles y Grafos.

23/06/2015

Tipos personalizados: Enumerados


Los enumerados son conjuntos de valores
constantes para los que no existen un tipo
predeterminado.
Son definidos por el usuario, segn sus
necesidades.
En el lenguaje Java se definen de la siguiente
manera:
enum nombre {listaDeConstantes}

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

Por: Ing. Msc. Alberto MEDINA VILLACORTA

Enumerados: definicin
Por ejemplo, no existe ningn tipo de dato
predefinido para representar los das de la
semana, los meses del ao, etc.
Ejemplos:
enum diaSemana {DOMINGO, LUNES,, SABADO}
enum mesAo{ENERO, FEBRERO, , DICIEMBRE}
enum turnoClase {MAANA, TARDE, NOCHE}

Arreglo, Array o Matriz


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

23/06/2015

Arreglo, Array o Matriz


Los elementos de una matriz pueden ser tipos
primitivos o tipos de referencia (incluye matrices).
Para hacer referencia a un elemento determinado
en una matriz, se especifica el nombre de la
referencia a la matriz y el nmero de posicin del
elemento en la matriz.
El nmero de posicin del elemento se llama el
ndice del elemento o subndice del dato.
El primer elemento de un array tiene ndice cero
y se llama a veces el elemento cero

Arreglo Unidimensional o Lista


Es una estructura esttica de datos, que permite
agrupar tipos de datos sencillos en estructuras
ms complejas y hacer referencia a esa
estructura por su nombre.
Lo ms importante es que se accede y se hace
referencia a los datos individuales del array
a travs de un ndice numrico, el mismo que
permite ejecutar muchas operaciones en
tiempos muy cortos.

Arreglo Unidimensional o Lista

Arreglo Unidimensional o Lista

Es un conjunto de elementos que tiene las


siguientes caractersticas:

Ejemplos:

Se almacenan
en posiciones
consecutivas
de memoria.

Todos los
elementos son
del mismo tipo.

Todos los elementos


tienen el mismo
nombre y se
diferencian por un
nmero que indica
su posicin.

4
Permite manipular con
cdigo compacto datos
en forma masiva.

Por: Ing. Msc. Alberto MEDINA VILLACORTA

edad 12 45 19 75
letra u
0

talla 1.50 1.89 1.45 1.56 0.95 1.82


0

23/06/2015

Declaracin de Arreglo-Lista

Declaracin de Arreglo-Lista

En el lenguaje Java un arreglo unidimensional


se declara segn la siguiente sintaxis:

Puede usar cualquier tipo base, un primitivo


(int, double, etc.), un enumerado, u otro tipo
(String, etc.) con la sintaxis equivalente:

tipoDato nombreArreglo [ ];

tipoDato [ ] nombreArreglo;

Ejemplos:

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

Ejemplos:

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

Creacin de Arreglo-Lista

Declarar y Crear Arreglo-Lista

Luego de su declaracin se debe crear el array


haciendo uso del operador new as:

Los arrays son objetos, por el que es posible


combinar los pasos de declaracin y creacin
de arreglos simultneamente en uno solo, as:

nombreArreglo = new tipoDato [numElementos];

tipoDato nombreArreglo=new tipoDato[numElem];

Ejemplos:

edad = new int [4];


letra = new char [6];
talla = new double [6];

Por: Ing. Msc. Alberto MEDINA VILLACORTA

Ejemplos:

int edad=new int [5];


char letra=new char[6];
double talla=new double[6];

23/06/2015

Resumen: Declarar y Crear


En resumen se tiene que:
tipoDato [ ] nombreArreglo;
nombreArreglo = new tipoDato [numElementos];
tipoDato nombreArreglo=new tipoDato[numElem];
Ms ejemplos:

int nHijos=new int [40];


double prom=new double[N];

Declarar, crear e inicializar Arrays


Llamada inicializacin esttica: tambin es
posible inicializar un array con valores
cuando se declara, para ello se debe encerrar
entre llaves la lista de valores, as:
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

Acceso a elementos
Para hacer referencia a un elemento de un
arreglo unidimensional es necesario indicar el
nombre del arreglo y la posicin de dicho
elemento.

Ejemplos:

En el lenguaje Java esto se hace de la siguiente


manera:

edad

edad[0]

edad[1]

edad[2]

edad[3]

nombreArreglo [posicinDelElemento]

Por: Ing. Msc. Alberto MEDINA VILLACORTA

23/06/2015

Tamao: arreglo unidimensional


Para conocer el nmero de elementos de un
arreglo unidimensional se utiliza su atributo
length segn la siguiente sintaxis:

Arreglo Bidimensional o Tabla


Es una estructura que permite almacenar
elementos del mismo tipo, los cuales estn
organizados a manera de matriz en filas y
columnas, como se muestra:

nombreArreglo.length

Ejemplos:

int longitudEdad = edad.length;


int longitudTalla = talla.length;

Declaracin de Arreglo-Tabla

0
1
2

Filas
Columnas

Creacin de Arreglos

En el lenguaje Java un arreglo bidimensional


se declara segn la siguiente sintaxis:

En el lenguaje Java un arreglo bidimensional


se crear de manera similar a los unidimensionales segn la siguiente sintaxis:

tipoDato nombreArreglo [ ] [ ];

nombreArreglo=new tipoDato [numFil][numCol];

Ejemplos:

int datos[ ][ ];
double tabla[ ][ ];

Por: Ing. Msc. Alberto MEDINA VILLACORTA

Ejemplos: datos=new int [4][5];

tabla=new double [10][6];

23/06/2015
Acceso a elementos (tablas)

Acceso a elementos (tablas)


Para acceder a un elemento en particular
de un arreglo bidimensional es necesario
especificar el nombre del arreglo y el nmero
de la fila y la columna donde est ubicado.
En lenguaje Java esto se hace de la siguiente
manera:
nombreArreglo [numFila ] [numColumna]

Cada elemento del array se puede manipular en forma


independiente como si de tratara de un dato simple.
datos

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


1
2
3

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]

Almacenamiento en memoria
Se hace en forma consecutiva, fila tras fila.
Esquema
lgico

Esquema en
memoria
Z

17 25

17

25

32

41

72

23

19

31

21

52

48

Como en el caso de un arreglo unidimensional


se usa el atributo length, en este caso cada
dimensin tiene su propio tamao.
nombreArreglo.length
nombreArreglo[0].length

Primera dimensin
Segunda dimensin

Ejemplos:

9 32 41 72 23 19 31 21 52 48

Fila 0

Tamao: arreglo bidimensional

Fila 1

Fila 2

Por: Ing. Msc. Alberto MEDINA VILLACORTA

int tamaoPrimera = tabla.length;


int tamaoSegunda = tabla[0].length;

23/06/2015

Arrays Multidimensionales
En Java un arreglo multidimensional se
declara segn la siguiente sintaxis:
tipoDato nombreArreglo [ ] [ ] [ ] . . . ;

Ejemplo:

int m[ ][ ][ ];
double matriz[ ][ ][ ][ ];

Arrays Multidimensionales
Tambin se pueden inicializar como en casos
anteriores segn lo siguiente:

double notas [ ][ ] ={{ 1, 2, 3},


{ 3, 2, 1},
{ 3, 1, 2},
{ 2, 1, 2}}

Por: Ing. Msc. Alberto MEDINA VILLACORTA

Arrays Multidimensionales
Como en los casos anteriores, se crearn
segn la siguiente sintaxis:
nombreArreglo=new tipoDato [ ] [ ] [ ] . . . ;

Ejemplo:

m=new int[5][3 ][2 ];


matriz= new double [2][3][4][5];

Longitud de un array
Para obtener la longitud de un array se usa el
mtodo length segn lo siguiente:

//La primera dimensin


longitud1=nombreArray.length;
//La segunda dimensin
longitud2=nombreArray[valor].length;
//La tercera dimensin
longitud3=nombreArray[valor][valor].length;

23/06/2015

API de manejo de Arrays


La API(Application Programming Interface) del
lenguaje proporciona la clase ya definida
Arrays (en java.util.Arrays) para realizar
mltiples operaciones con arrays, como
rellenar y ordenar un array y buscar en arrays
Por ejemplo si se define:
int [ ] dato;
dato = new int [20];

Ejemplo uso de la API


Para ordenar el array en forma ascendente
se usa:
Arrays.sort(dato);

Para ordenar solo una parte del array entre las


posiciones 5 y 12 (ambas inclusive) se usa:
Arrays.sort(dato, 5, 13);

Por: Ing. Msc. Alberto MEDINA VILLACORTA

Ejemplo uso de la API


Para rellenar todo el array con el nmero 11
se usa:
Arrays.fill(dato,11);

Para rellenar la parte del array entre las


posiciones 5 y 12 (ambas inclusive) con el
nmero 11 se usa:
Arrays.fill(dato, 5, 13, 11);

Ejemplo uso de la API


Para buscar un dato en un array, este debe
estar previamente ordenado, para buscar el
elemento 19 en un array de enteros se usa:
int pos = Arrays.binarySearch(dato,19);

Si pos es positivo, en esa posicin hay un entero


con el valor buscado, si hay mas de un entero
con el valor buscado, no se indica nada sobre
cual de ellos se devuelve, si el valor buscado no
se encuentra, devuelve un nmero negativo.

23/06/2015

Cdigo ejemplo: longitud de array

Cdigo ejemplo: longitud de array

public class LongitudArray


{
public static void main(String[ ] args)
{
double nota[ ] ={88, 99, 73, 56, 87, 64};
double suma, prom;
suma = 0;

for (int i = 0; i < nota.length; i++)


{
suma+= nota[i];
}
prom = suma / nota.length;
System.out.println(Promedio:+prom);
}
}

2do. ejemplo: longitud de array

2do. ejemplo: longitud de array

// Funcin para salida de filas y


//columnas de array de 2 dimensiones
public static void salidaArray( int array[ ][ ] )
{
// loop alrededor de las filas del array
for(int fila=0; fila<array.length;fila++)
{

Por: Ing. Msc. Alberto MEDINA VILLACORTA

// loop a travs de cols. de la fila actual

for (int col=0;col< array[fila].length; col++)


System.out.print(array[fila][col] +"\t");

// inicia una nueva linea de salida


System.out.println( ); }
}

10

23/06/2015

2do. ejemplo: longitud de array


public 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 array1
por fila son:" );

Arrays Multidimensionales
Los arrays multidimensionales son arrays de
arrays , quiere decir que se pueden construir
arrays 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];

Por: Ing. Msc. Alberto MEDINA VILLACORTA

2do. ejemplo: longitud de array


// muestra array1 por filas
salidaArray(array1);
System.out.println( "\nValores en array2 por
fila son:" );
// muestra array2 por filas
salidaArray(array2);
}// fin de main

Actividades de reforzamiento
Hacer un programa usando arrays para
calcular la distancia entre dos puntos.
Hacer un programa que ingrese el nombre,
sexo, estado civil y edad de N personas, para
Imprimir el promedio de edad de aquellas que
Tienen el mismo sexo de la persona mas joven.

11

23/06/2015

Por: Ing. Msc. Alberto MEDINA VILLACORTA

12

Anda mungkin juga menyukai