You are on page 1of 52

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;
}
System.out.print(" Arreglo cargado..........\n");
}
void mostrar()
{ int i;
for (i=0;i<10;i++){ System.out.print( x[i]+" "); }
System.out.print(" \n\n\n");
}
void sumar()
{ int i,suma;
suma=0;
for (i=0;i<10;i++){ suma+=x[i];}
System.out.print(" 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
(System.in));
System.out.println("
prof.");
System.out.println("
Rosa Dutari de Samaniego");
System.out.println("\n\n\n");
while(opc!=4)
{ System.out.println("\n\n\t\tMENU del PROYECTO");
System.out.println("\n\nElija una Opcin del Men:");
System.out.println("\n1. Cargar el arreglo.");
System.out.println("\n2. Mostrar Los Datos del Arreglo.");
System.out.println("\n3. Sumar.");
System.out.println("\n4. Salir del Programa");
System.out.println("\n\nElija una opcin de *1 a 4* : ");
opc=Integer.parseInt(br.readLine());

Continuacin........Ejemplo N.4
switch(opc)
//Switch de los casos del menu
{ case 1:
obj.cargar();
break;
case 2:
obj.mostrar(); break;
case 3:
obj.sumar();
break;
case 4: System.out.println("\nCHAOOOOO..........");
break;
default:System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
System.out.println("LA OPCIN NO ESTA EN EL MEN");
System.out.println("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 (System.in));

String cad;
for( hora=0; hora<24; hora++ )
{ System.out.printf( "Temperatura en la hora : "+ (hora+1)+" es ");
cad=br.readLine( );
temp[hora]=Integer.parseInt(cad);
media += temp[hora];
}
media = media / 24;
System.out.println( "\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(System.in));
int A[]=new int[20],i,prod=1;
float prom=0;
for (i=0;i<20;i++)
{ System.out.println("Ingrese el elemento n :"+(i+1));
A[i]= Integer.parseInt(teclado.readLine());
}
for (i=0;i<20;i++)
{ prod = prod * A[i];
prom = prom + A[i];
}
prom=prom/20;
System.out.println("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();
System.out.println(\nPara continuar presiona 0\n\n\n");
ent= Integer.parseInt(teclado.readLine());
}
}
}

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

System.out.print(\n cuenta descendente );


for (i=9;i>= 0; i--)
System.out.print(\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,

System.out.print( "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++ )
System.out.print( "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 java.io.*;
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}};
System.out.println("\n\n\t\tIMPRIMiENDO LA MATRIZ PREVIAMENTE INICIALIZADA");
for (i=0;i<3;i++)
{ for (k=0;k<4;k++)
System.out.print(p[i][k]+" ");
System.out.println("\n\n");
}}
catch(ArrayIndexOutOfBoundsException aie)
{System.out.println("\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 (System.in));
System.out.println(" prof. Rosa Dutari de Samaniego");
System.out.println("\n\n\n");
while(opc!=2)
{ System.out.println("\n\n\t\tMENU del PROYECTO");
System.out.println("\n\nElija una Opcin del Men:");
System.out.println("\n1. Cargar el arreglode dos dimensiones.");
System.out.println("\n2. Salir del Programa");
System.out.println("\n\nElija una opcin de *1 a 4* : ");
opc=Integer.parseInt(br.readLine());

continuacin...Ejemplo N.15
switch(opc)
{
case 1:

case 2:

obj.mat();
break;
System.out.println("\nCHAOOOOO..........");

break;
default:System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
System.out.println("LA OPCIN NO ESTA EN EL MEN");
System.out.println("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;
System.out.println("\n\n\t\tIMPRIMiENDO LA OTRA MATRIZ PREVIAMENTE INICIALIZADA");
for ( i=0; i<fil; i++ )
{ for ( j=0; j<col; j++ )
{ System.out.print(m[i][j]+" ");
sum += m[i][j];
}
System.out.print("\n\n");
}
System.out.print("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

You might also like