Utilizar las estructuras complejas de
arreglos en la solucin de problemas de
acuerdo a las especificaciones del
lenguaje Java.
Definicin de Arreglos
OBJETIVOS DEL MODULO
Arreglos
indices
Es una secuencia de datos del
mismo tipo. Se caracterizan por
tener un solo ndice
Los elementos de un arreglo se
numeran, estos nmeros se
denominan ndice
Los datos se llaman elementos
del arreglo y se numeran
consecutivamente 0,1,2,3,etc
El ndice localiza la posicin o
direccin del elemento dentro
del arreglo, proporcionando
acceso directo al arreglo
El tipo de elemento almacenado
en el arreglo puede ser cualquier
tipo de dato vistos del lenguaje
Los arreglos se almacenan
en celdas de memoria
contiguas.
Grficamente se representa el arreglo A con
cinco elementos.
0
A[0]
A[1]
A[2]
A[3]
A[4]
Tipos de Arreglos
Un arreglo unidimensional es un tipo de estructura que est
formado de una coleccin finita y ordenada de datos del mismo tipo.
El arreglo bidimensional, (dos dimensiones)El acceso a ellos
tambin es en forma directa por medio de dos ndices. Los arreglos
bidimensionales se usan para representar datos que pueden verse
como una matriz con filas y columnas.
El arreglo
multidimensional, est compuesto por n
dimensiones. Para hacer referencia a cada componente del arreglo
es necesario utilizar n ndices, uno para cada dimensin.
Declaracin de un Arreglo Unidimensional
Al igual que cualquier tipo de variable, se
debe declarar un arreglo antes de utilizarlo.
Se debe indicar al compilador el tamao o
longitud del arreglo.
Para indicar al complilador el tamao o
longitud del arreglo se debe hacer seguir al
nombre, el tamao encerrado entre
corchetes.
Sintaxis para declarar un arreglo de una
dimensin
tipo nombre_variable[]= new tipo[tamao];
elemento 0
elemento 1
elemento n-1
Ejemplo N.1:
Para crear un arreglo llamado num de diez elementos enteros, se escribe:
int num [ ]= new int [10];
Ejemplo N.2:
Para crear un arreglo de nmeros flotantes y su tamao es
de 20 elementos.
float vt [ ]= new float [ 20];
Ejemplo N.3:
int edad[ 5]; El arreglo edad contiene 5
elementos: el primero, edad[0] y el ltimo,
edad[4]
0
edad[0]
edad[1]
edad[2]
edad[3]
edad[4]
Continuacin..Ejemplo N.3:
int pesos[25], longitudes[100];
// Declara dos arreglos enteros
float salarios[ 50];
//Declara un arreglo de 50 elementos float
Ejemplo N.4
class arreglo4
{
int x[]= new int [10];
void cargar()
{
int i;
for (i=0;i<10;i++) {
x[i]=i;
}
[Link](" Arreglo cargado..........\n");
}
void mostrar()
{ int i;
for (i=0;i<10;i++){ [Link]( x[i]+" "); }
[Link](" \n\n\n");
}
void sumar()
{ int i,suma;
suma=0;
for (i=0;i<10;i++){ suma+=x[i];}
[Link](" El resultado de la suma es = "+suma+"\n");
}
}
Continuacin........Ejemplo N.4
class Arrejm4
{ public static void main (String args[]) throws IOException
{
arreglo4 obj = new arreglo4();
int opc=0;
char resp='s';
//Declaracion de _Variables
BufferedReader br = new BufferedReader (new InputStreamReader
([Link]));
[Link]("
prof.");
[Link]("
Rosa Dutari de Samaniego");
[Link]("\n\n\n");
while(opc!=4)
{ [Link]("\n\n\t\tMENU del PROYECTO");
[Link]("\n\nElija una Opcin del Men:");
[Link]("\n1. Cargar el arreglo.");
[Link]("\n2. Mostrar Los Datos del Arreglo.");
[Link]("\n3. Sumar.");
[Link]("\n4. Salir del Programa");
[Link]("\n\nElija una opcin de *1 a 4* : ");
opc=[Link]([Link]());
Continuacin........Ejemplo N.4
switch(opc)
//Switch de los casos del menu
{ case 1:
[Link]();
break;
case 2:
[Link](); break;
case 3:
[Link]();
break;
case 4: [Link]("\nCHAOOOOO..........");
break;
default:[Link]("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
[Link]("LA OPCIN NO ESTA EN EL MEN");
[Link]("ELIJA OTRA");
}
}
}
}
//Fin
Ejemplo N.5
//Supongamos que deseamos almacenar la temperatura media de cada hora del da y la
temperatura y calcular promedio del da.
void temperatura()throws IOException
{
int temp[]=new int [24];
float media=0;
int hora,t;
BufferedReader br = new BufferedReader (new InputStreamReader ([Link]));
String cad;
for( hora=0; hora<24; hora++ )
{ [Link]( "Temperatura en la hora : "+ (hora+1)+" es ");
cad=[Link]( );
temp[hora]=[Link](cad);
media += temp[hora];
}
media = media / 24;
[Link]( "\nLa temperatura media es "+media );
}
Ejemplo N.6
//Este programa carga un arreglo con veinte valores enteros calcula el promedio de los valores
y el producto de los mismos.
class Ejemplo6
{void ej6() throws IOException
{BufferedReader teclado = new BufferedReader(new InputStreamReader([Link]));
int A[]=new int[20],i,prod=1;
float prom=0;
for (i=0;i<20;i++)
{ [Link]("Ingrese el elemento n :"+(i+1));
A[i]= [Link]([Link]());
}
for (i=0;i<20;i++)
{ prod = prod * A[i];
prom = prom + A[i];
}
prom=prom/20;
[Link]("El producto es: "+prod+"\nEl promedio es: "+prom+"\n\n");
}
}
Continuacin............Ejemplo N.6
class arreglo5
{ public static void main (String [] a) throws Exception
{ ent=0;
Ejemplo6 obj = new Ejemplo6();
while(i!= 1)
{
obj.ej6();
[Link](\nPara continuar presiona 0\n\n\n");
ent= [Link]([Link]());
}
}
}
INICIALIZACIN DE UN ARREGLO
Se puede asignar valores a los elementos del
arreglo antes de utilizarlos, tal como se
asignan valores a variables.
Cuando se inicializa un arreglo, el tamao
del
arreglo
se
puede
determinar
automticamente por las constantes de
inicializacin. Estas constantes se separan
por comas y se encierran entre llaves.
Ejemplo N.8
El arreglo numeros tiene 6 elementos
int num [] = new int [ ] {10,20,30,40,50,60};
n tiene 3 elementos.
int n [ ] = new int [ ] {3,4,5};
INICIALIZACIN DE UN ARREGLO
El mtodo de inicializar arreglos mediante
valores constantes despus de su definicin
es adecuado cuando el nmero de
elementos del arreglo es pequeo
int cuenta[ ] =new int [ ] {10,9,8,7,6,4,3,2,1};
[Link](\n cuenta descendente );
for (i=9;i>= 0; i--)
[Link](\n +i+cuenta[i]);
INICIALIZACIN DE UN ARREGLO
NOTA
Java, deja los corchetes vacos, slo cuando se asignan
valores al arreglo, tal como se muestra a continuacin:
int cuenta [ ]=new int[ ] {15,25,-45,0,50};
El compilador asigna automticamente
cinco elementos al arreglo cuenta.
Ejemplo N.9
//Hemos indicado al compilador que nos reserve memoria para un array de 24 elementos de
tipo int.
void otratemp()
{
int hora;
int temp[ ] = new int[ ]{ 15, 18, 20, 23, 22, 24, 22, 25, 26, 25, 24, 22, 21, 20, 18,
17, 15, 14, 14, 14, 13, 12 };
for( hora=0; hora<24; hora++ )
17, 16,
[Link]( "La temperatura a la hora+ es + temp[hora] +grados);
Ejemplo N.10
// Qu ocurre si introducimos menos de lo reservado?.
void otratemp()
{
int hora;
int temp[ ] = new int[ ]{ 15, 18, 20, 23, 22, 24, 22, 25, 26, 25, 24, 22,
21, 20, 18, 17, 16, 17, 15, 14, 14 };
/* Faltan los tres ltimos elementos */
for( hora=0; hora<24; hora++ )
[Link]( "La temperatura a la hora+ es + temp[hora] +grados);
Ejercicios - Laboratorio
1. Realizar un programa en el que se ingresen 10 flotantes, luego se sumen sus
elementos. Mostrar el resultado y arreglo.
2. Carga un arreglo con diez valores enteros, el usuario debe darle el ultimo a
cargar consecutivo descendentemente. Mostrar el arreglo
3. Se tienen dos vectores llamados A y B cargarlos con valores enteros,
imprmalos, luego intercambie los valores de un vector para el otro e
imprmalos nuevamente.
4. En un vector de 5 elementos, determine la suma y el producto de los
elementos del vector.
5. Dado un vector de 10 elementos, cargarlo con valores numricos y luego
determine el elemento mas grande y su posicin.
6. Calcular el nmero de elementos negativos, ceros, y positivos de un vector
de 15 elementos.
ARREGLOS
MULTIDIMENSIONALES
Los arreglos vistos anteriormente se conocen
como arreglos unidimensionales (una sola
dimensin) y se caracterizan por tener un solo
subndice.
Los arreglos multidimensionales son aquellos
que tienen ms de una dimensin y, en
consecuencia, ms de un ndice.
Los arreglos ms usuales son los de dos
dimensiones, conocidos tambin por el nombre
matrices, llamados Bidimensionales.
Estructura de un Arreglo de Dos
Dimensiones
Sintaxis para Declarar una Matriz
tipo nombre[ ][ ] = new tipo [fil ][ col];
Observaciones:
La declaracin de la matriz es similar al arreglo de una dimension la diferencia es el
indice adicional .
fil es el tamao o longitud de la fila
col es el tamao o longitud de la columna
Los corchetes [ ] son obligatorios.
El trmino fil determina el tamao de la primera dimensin de la matriz, es decir, la
cantidad en la primera dimensin. El trmino col determina el tamao de la segunda
dimensin de la matriz. Dichos elementos estarn numerados en forma consecutiva,
empezando en 0.
Sintaxis para Declarar una Matriz
tipo nombrematriz[][]= new tipo[tam][tam];
Ejemplo N.12:
int puestos [ ] [ ] =new int [6][8];
float equipos [ ][ ]= new float [4][10];
char matriz [ ] [ ]= char [4][30];
Nota: La sentencia int equipos [4, 30];
no es vlida
Almacenamiento en memoria de la matriz
int tabla[4][2];
Se representan grficamente en memoria
tabla[0][0]
tabla[0][1]
tabla[1][0]
tabla[1][1]
tabla[2][0]
tabla[2][1]
tabla[3][0]
tabla[3][1]
=10
=20
=30
=40
=50
=60
=70
=80
0
1
2
3
10
20
30
40
50
60
70
80
INICIALIZACIN DE UNA MATRIZ
Los arreglos bidimensionales se pueden
inicializar, al igual que los de una dimensin,
cuando se declaran.
La inicializacin consta de una lista de
constantes separadas por comas y encerradas
entre llaves.
Ejemplo N.13
int p [ ] [ ] = { {51,52,53},
{54,55,56}
};
Representacin grfica del ejemplo anterior
tabla [2 ] [3 ]
Columna
0
Filas
0
1
51
52
53
54
55
56
Acceso a los Elementos de los
Arreglos Bidimensionales
Se puede acceder a los elementos de arreglos
bidimensionales de igual forma que a los
elementos de un arreglo unidimensional.
La diferencia reside en que en los elementos
bidimensionales deben especificarse los
ndices de la fila y la columna.
Acceso a los Elementos de los
Arreglos Bidimensionales
El formato general para asignacin directa de
valores a los elementos es:
nombre_variable[indice fila] [indice columna]= valor elemento;
La forma gral para el acceso de elementos es:
<variable> = <nombre arreglo> [indice fila] [indice columna];
Ejemplo N.14
Asignacin:
Tabla [2] [3] = 4.5;
Resistencia [2] [4] = 50;
Asientoslibres[5] [12] = 5;
Extraccin de valores
Ventas = Tabla [1] [1];
Dia= Semana [3] [6];
Ejemplo N.15
import [Link].*;
class arreglo4
{ int x[]= new int [10];
void mat() throws IOException
{ int i,k;
try{ int p[][] = {{5,6,7,8},
{1,2,3,4,},
{9,0,0,0}};
[Link]("\n\n\t\tIMPRIMiENDO LA MATRIZ PREVIAMENTE INICIALIZADA");
for (i=0;i<3;i++)
{ for (k=0;k<4;k++)
[Link](p[i][k]+" ");
[Link]("\n\n");
}}
catch(ArrayIndexOutOfBoundsException aie)
{[Link]("\n\nERROR DE ARREGLOS");
}
continuacin...Ejemplo N.15
class mat4
{
public static void main (String args[]) throws IOException
{
arreglo4 obj = new arreglo4();
int opc=0;
char resp='s'; //Declaracion de _Variables
BufferedReader br = new BufferedReader (new InputStreamReader ([Link]));
[Link](" prof. Rosa Dutari de Samaniego");
[Link]("\n\n\n");
while(opc!=2)
{ [Link]("\n\n\t\tMENU del PROYECTO");
[Link]("\n\nElija una Opcin del Men:");
[Link]("\n1. Cargar el arreglode dos dimensiones.");
[Link]("\n2. Salir del Programa");
[Link]("\n\nElija una opcin de *1 a 4* : ");
opc=[Link]([Link]());
continuacin...Ejemplo N.15
switch(opc)
{
case 1:
case 2:
[Link]();
break;
[Link]("\nCHAOOOOO..........");
break;
default:[Link]("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
[Link]("LA OPCIN NO ESTA EN EL MEN");
[Link]("ELIJA OTRA");
}
}
}
}
//Fin
Ejemplo N.16
void otro()
{int fil=2,col=3;
int m[ ][ ] = { {11,12,13}, {21,22,23} };
int i, j, sum = 0;
[Link]("\n\n\t\tIMPRIMiENDO LA OTRA MATRIZ PREVIAMENTE INICIALIZADA");
for ( i=0; i<fil; i++ )
{ for ( j=0; j<col; j++ )
{ [Link](m[i][j]+" ");
sum += m[i][j];
}
[Link]("\n\n");
}
[Link]("sumatoria = "+sum);
}
Ejercicios - Laboratorio
1. Rellenar una matriz de dimensiones 3x3 con los siguientes valores(:NO POR
INICIALIZACION)
1 1 1
4 4 4
9 9 9
2. La matriz Identidad es aquella en que los elementos de su diagonal principal
son la unidad y el resto es cero. (:NO POR INICIALIZACION)
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
.
3. Elabore un programa que reciba como entrada un entero n CARGUE una
matriz cuadrada (n x n) de enteros e imprima los elementos que conformaN sus
dos diagonales.
PASO DE ARREGLOS
A FUNCIONES
UNIDIMENSIONALES
El nombre de un arreglo se puede usar como
argumento de una funcin, permitiendo que el
arreglo completo sea pasado a la funcin.
Para pasar un arreglo a un mtodo, el nombre
del arreglo debe aparecer solo, sin corchetes o
ndices, como un argumento actual dentro de la
llamada.
El correspondiente argumento formal se escribe
de la misma manera, pero debe ser declarado
como un arreglo dentro de la declaracin de
argumentos formales.
Cuando se declara un arreglo unidimensional
como un parametro formal, el arreglo se escribe
con un par de corchetes cuadrados vacos,
indicando que el argumento es un arreglo.
metodo1(int x[]){
...
}
main(){
int n=10;
int a[10];
..
obj.metodo1(a);
...
}
No se especifica el tamao
del arreglo
El llamado se realiza similar al envio de una
variable
Ejm
obj.metodo1(x);
Donde x es el arreglo
Ejemplo N.17
int sumar( int m[ ] )
{ }
Ejemplo N.18
//Realizar un programa que haga uso de un metodo para modificar un arreglo de cinco
elementos enteros, el cual ha sido inicializado en cero se modifica en otro metodo haciendo
la sumatoria por posicin.
Ejemplo N.19
Calcule el promedio de notas de 5 estudiantes con 3 notas parciales los resultados
delos en dos arreglos de una dimension 1 con la nota numerica y el otro con la
nota alfabetica en dos metodos diferentes
Preparado por: Janitza de Justiniani
PASO DE ARREGLOS
A FUNCIONES
BIDIMENSIONALES
Es similar al paso de arreglo de una dimension
solo debe tomar en cuenta que tenemos dos
dimensiones por ende 2 indices. Los ndices
deben ser escrito como un par de corchetes
vacos, como en el arreglo unidimensional.
Ejemplo N.20
Cargue dos matrices como se muestra a
continuacin a partir de estos cargue la
tercera
Datos Para La Ejecucin
1
10
11
12
Primera tabla
11
13
15
17
19
21
23
25
29
31
33
10
11
12
13
27
14
15
16
17
18
19
20
21
Suma de los Elementos
Segunda tabla
Preparado por: Janitza de Justiniani