Вы находитесь на странице: 1из 19

www.zonajava.

net

Algoritmosy
EstructuradedatosI
ProgramacinconJava2

ModulodeReforzamiento

Ing. Ral Enrique Fernndez


Bejarano

2009

JAVA

Captulo 7

Arreglos
Vectores y Matrices

Contenido

Enelpresentecapitulovamosaverqueson,paraque
sirven y como se usan los arreglos. Como se organiza
Java esta informacin. Hacia el final del captulo
analizaremos que otras posibilidades nos brinda este
lenguajeademsdelosarreglostradicionales.

Introduccin
Objetivos
Visn global
Pre test
Hoja de requisitos
Recomendaciones
Actividades
7.1. Introduccin
7.2. Declarar un array
7.3. Creacin de un array
7.4. Inicializacin de los
Elementos
7.5. Utilizacin del array
Ejemplos
7.7. Trabajando con
Matrices
Ejemplos
Post Test
Actividades de RetroaliMentacin
Bibliografia

3
3
4
4
5
6
6
6
7
7
8
8
8
15
16
18
19
19

Universidad Peruana Los Andes


www.zonajava.net

Introduccin
En los captulos anteriores se han descrito las caractersticas de los
tipos de datos, asimismo se ha aprendido a definir y utilizar constantes
simblicas utilizando la clausula final.
En el presente capitulo aprender el concepto, declarar, crear o instanciar,
inicializar y utilizar los arrays. Un array almacena muchos elementos del mismo
tipo, tales como nmeros enteros, de coma flotante o caracteres, los arrays
pueden ser de una dimensin vectores de dos dimensiones matrices
tambin de tres o ms dimensiones.
El array es muy importante por diversas razones, una muy importante es
almacenar cadena de texto, por su importancia java proporciona la clase String,
que representa una secuencia de caracteres y las operaciones con cadenas ms
comunes. Son estructuras muy tiles y si bien son estructuras estticas es decir
cuando le das un tamao no puede exceder ese tamao en java te da la opcin
de hacer un arreglo dinmico, que aumente el tamao del arreglo.

Objetivos
Despues de haber leido y estudiado este capitulo usted pdra:

Conocer las colecciones de items en una misma estructura de


programacin.

Diferenciar entre un tipo simple y un tipo estructurado.

Declarar variables array de una y varias dimensiones y distinguir


declaracin de definicin.

Inicializar los elementos de un array.

Acceder a los elementos de un array.

Resolver ejercicios utilizando arrays.

Apreciar las ventajas del empleo de diversas herramientas de software


libre.

Valorar la importancia de consultar con soltura bibliografa y otros


materiales.

Estar dispuesto a buscar y contrastar informacin de diversas fuentes de


manera independiente.

Ing. Ral Enrique Fernndez Bejarano

Pgina 3

Algoritmos y Estructura de datos I


www.zonajava.net

Visn global

Pre Test
Antes de empezar a trabajar con el modulo de reforzamiento, resuelva los
siguientes ejercicios:
Preguntas:
1.

Que valor se asigna a consumo en la sentencia if siguiente si velocidad es 120?.


if (velocidad > 80)
consumo = 10.00;
else if (velocidad > 100)
consumo = 12.00;
else if (velocidad > 120)
consumo = 15.00;

2.

Cul es la salida del siguiente segmento de programa?


for(cuenta = 1; cuenta < 5; cuenta++)
System.out.println(2 * cuenta);

3.

Cul es la salida del siguiente bucle?


for(n = 10; n > 0; n = n-2)

Ing. Ral Enrique Fernndez Bejarano

Pgina 4

Universidad Peruana Los Andes


www.zonajava.net

{
System.out.println(hola);
System.out.println(n);
}

4.

Cul es la salida del siguiente bucle?


double n = 2;
for(; n > 0; n = n 0.5)
System.out.println(n);

5.

Considerar el siguiente codigo de programa?


int i = 1;
while(i <= n)
{
if((i % n) == 0)
{
++i;
}
}
System.out.println(i);
a)
b)
c)

Cual es la salida si n es 0 ?
Cual es la salida si n es 1 ?
Cual es la salida si n es 3 ?

Las respuestas a las preguntas las encontrara en la pagina oficial del curso,
www.zonajava.net

Hoja de requisitos
Ahora que has resuelto correctamente los ejercicios, ud. Debera conocer los
siguientes temas (tratados con anterioridad) antes de pasar a estudiar el siguiente
tema.

Constantes y variables.

Operadores y expresiones.

Estructuras de seleccin

Ing. Ral Enrique Fernndez Bejarano

Pgina 5

Algoritmos y Estructura de datos I


www.zonajava.net

Estructuras de control.

Mtodos.

Recomendaciones y diagrama de funcionamiento del modulo


Al recibir el presente modulo Ud. debera realizar los siguientes pasos:
a)
b)
c)
d)
e)
f)

Identificar el tema que esta al inicio del modulo.


Leer el contenido del modulo.
Conocer los objetivos del presente modulo.
Entender la visin global del modulo.
Resolver los ejercicios propuestos del pre test.
Identificar la hoja de requisitos para seguir con el presente tema.

g)
h)
i)
j)

Realizar las actividades propuestas en el modulo.


Resolver los ejercicios propuestos ene el post test.
Aplicar las actividades de retroalimentacin.
Buscar ms informacin en la bibliografia inidicada.

Actividades
Para un mejor entendimiento del presente modulo sugerimos realizar los ejemplos
en forma secuencial,

7.1.

Definicin
Una array se define como una coleccin finita, homognea y
ordenada de elementos.

Ing. Ral Enrique Fernndez Bejarano

Pgina 6

Universidad Peruana Los Andes


www.zonajava.net

7.2.

Declaracin de un array unidimensional


Para declarar un vector se escribe
tipo_de_dato[]nombre_del_vector;

Ejemplo:
Para declarar un vector de enteros escribimos
int[ ] numeros;
int numeros[ ];

7.3.

Creacin de un array unidimensional


Durante la creacin del array; se reserva memoria para el atributo
length, se reserva memoria para guardar la cantidad de
elementos indicada y se asigna la direccin de esa rea de
memoria a la referencia del vector.
Para crear un vector escribimos

nombre=newtipo[tamao];

Ejemplo:
Para crear un vector de 4 nmeros enteros escribimos
numeros = new int[4];
La declaracin y la creacin del vector se pueden hacer en una misma
lnea. Utilice el siguiente formato:

tipo[]nombre=newtipo[tamao];

Ejemplo:
int[ ] numeros = new int[4];

Ing. Ral Enrique Fernndez Bejarano

Pgina 7

Algoritmos y Estructura de datos I


www.zonajava.net

7.4.

Inicializar los Elementos del Array


Para utilizar el array de 4 enteros escribimos

Variables de tipos primitivos:


numeros[0] = 20;
numeros[1] = 30;
numeros[2] = 40;
numeros[3] = 50;

Se pueden inicializar en un bucle for como resultado de alguna operacin


for(int i = 0; i < 4; i++)
{
numeros[ i ] = i*i+4;
}

No necesitamos recordar el nmero de elementos del array, este tiene un


dato miembro llamado length que nos proporciona la dimensin del array.
Escribimos de forma equivalente:
for(int i = 0; i < numeros.length; i++)
{
numeros[ i ] = i*i+4;
}

7.5.

Utilizar los Elementos del Array


Para imprimir a los elementos de array nombres se escribe

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


{
System.out.println(nombres[ i ]);
}

Ing. Ral Enrique Fernndez Bejarano

Pgina 8

Universidad Peruana Los Andes


www.zonajava.net

Java verifica que el ndice no sea mayor o igual que la dimensin del array,
lo que facilita mucho el trabajo al programador.

Ejemplo 01:
Realizar un programa que inicialic 4 nmeros enteros y los muestre
class CEjemplo01
{
public static void main (String[] args)
{
//Declarando un array
int numeros[ ];
//creando o instanciando un array
numeros = new int[4];
//inicializando un array
numeros[0] = 20;
numeros[1] = 50;
numeros[2] = 40;
numeros[3] = 30;
//visualizando el array
for (int i = 0; i<4; i++)
System.out.println(numeros[i]);
}
}
Se obtiene como resultado

Ejemplo 02:
Modificar la clase CEjemplo01 realizando la declaracin e instanciacin en
una sola lnea.

Ing. Ral Enrique Fernndez Bejarano

Pgina 9

Algoritmos y Estructura de datos I


www.zonajava.net

class CEjemplo02
{
public static void main (String[] args)
{
//Declarando e instanciando un array
int numeros[ ] = new int [4];
//inicializando un array
numeros[0] = 20;
numeros[1] = 30;
numeros[2] = 40;
numeros[3] = 50;
//visualizando el array
for (int i = 0; i<4; i++)
System.out.println(numeros[i]);
}
}
Analice y explique qu imprime este programa?
______________________________________________________
______________________________________________________

Ejemplo 03:
Modificar la clase CEjemplo02 realizando la declaracin, instanciando y
inicializando en una sola lnea.
class CEjemplo03
{
public static void main (String[] args)
{
//Declarando, instanciando e inicializando un array
int numeros[ ] = {20, 30, 40, 50};
//visualizando el array
for (int i = 0; i<4; i++)
System.out.println(numeros[i]);
}

Analice y explique qu imprime este programa?


______________________________________________________
______________________________________________________

Ing. Ral Enrique Fernndez Bejarano

Pgina 10

Universidad Peruana Los Andes


www.zonajava.net

Ejemplo 04:
Realizar un programa que nos muestre los valores por defecto de los tipos
de datos numricos, cadenas, booleanos y carcter.
class CEjemplo04
{
public static void main (String[] args)
{
int numeros[ ] = new int [2];
System.out.println("Valores por defecto numericos");
for (int i = 0; i<numeros.length; i++)
System.out.println(numeros[i]);
System.out.println();
String cadenas[ ] = new String[2];
System.out.println("Valores por defecto cadenas");
for (int i = 0; i<cadenas.length; i++)
System.out.println(cadenas[i]);
System.out.println();
boolean boleanos[ ] = new boolean [2];
System.out.println("Valores por defecto Booleanos");
for (int i = 0; i<boleanos.length; i++)
System.out.println(boleanos[i]);
System.out.println();
char car[ ] = new char [2];
System.out.println("Valores por defecto caracteres");
for (int i = 0; i<car.length; i++)
System.out.println(car[i]);
}

System.out.println();

}
Analice y explique qu imprime este programa?
______________________________________________________
______________________________________________________

Ing. Ral Enrique Fernndez Bejarano

Pgina 11

Algoritmos y Estructura de datos I


www.zonajava.net

Ejemplo 05:
Realizar un programa que genere 10 nmeros enteros aleatorios
comprendidos entre 10 y 100 y los almacene en un arreglo y luego los
muestre.
class CEjemplo05
{
public static void main(String[] args)
{
int [] Numeritos = new int [10];
int M = 10, N = 100, valor;
//generacion de numeros aleatorios
for (int i = 0; i<Numeritos.length; i++)
{
valor = (int)Math.floor(Math.random()*(N-M+1)+M);
Numeritos[i] = valor;
}
//recorrido de numeros aleatorios
System.out.println("Nmeros Generados");
System.out.println("======= =========");
for (int i = 0; I < Numeritos.length; i++)
{
System.out.println("["+i+"]"+" = "+Numeritos[i]);
}
}

Se obtiene como resultado

Ing. Ral Enrique Fernndez Bejarano

Pgina 12

Universidad Peruana Los Andes


www.zonajava.net

Ejemplo 06:
Modificar el programa anterior utilizando mtodos.
class CEjemplo06
{
static int [] Numeritos = new int [10];
public static void main(String[] args) {
genera();
recorrido();
}
//generacin de nmeros aleatorios
public static void genera()
{
int M = 10, N = 100, valor;
for (int i = 0; i<Numeritos.length; i++)
{
valor = (int)Math.floor(Math.random()*(N-M+1)+M);
Numeritos[i] = valor;
}
}

//recorrido de numeros aleatorios


public static void recorrido()
{
System.out.println("Numeros Generados");
System.out.println("======= =========");
for (int i = 0; i<Numeritos.length; i++)
{
System.out.println("["+i+"]"+" = "+Numeritos[i]);
}
}

Analice y explique qu imprime este programa?


______________________________________________________
______________________________________________________

Ejemplo 07:
Modificar el programa anterior utilizando mtodos y menus.
import java.io.*;
class CEjemplo07{
static int [] Numeritos = new int [10];

Ing. Ral Enrique Fernndez Bejarano

Pgina 13

Algoritmos y Estructura de datos I


www.zonajava.net
public static void main(String []args)
throws IOException
{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader Teclado = new BufferedReader(isr);
int opcion;
do
{
System.out.println("");
System.out.println("
MENU DE OPCIONES");
System.out.println("
==== == ========");
System.out.println();
System.out.println("(1) Generar Numeros Aleatorios");
System.out.println("(2) Mostrar los Numeros Aleatorios");
System.out.println("-------------------------------");
System.out.println("(0) Para salir del programa");
System.out.println();
System.out.print("ingrese una alternativa: ");
opcion = Integer.parseInt(Teclado.readLine());
System.out.println();
if (opcion == 1)
genera();
}

if ( opcion == 2){
recorrido();
}
if (opcion < 0 && opcion > 2){
System.out.println("Ingrese alternativa correcta");
}
}while(opcion != 0);
}

//mtodo que genera nmeros aleatorios


public static void genera(){
int M = 10, N = 100, valor;

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


valor = (int)Math.floor(Math.random()*(N-M+1)+M);
Numeritos[i] = valor;
}

//mtodo que recorre los nmeros aleatorios


public static void recorrido(){

System.out.println("Numeros Generados");
System.out.println("======= =========");
for (int i = 0; i<Numeritos.length; i++)
{
System.out.println("["+i+"]"+" = "+Numeritos[i]);
}

Ing. Ral Enrique Fernndez Bejarano

Pgina 14

Universidad Peruana Los Andes


www.zonajava.net

7.6.

Trabajando con Matrices

7.6.1. Declararando una Matriz


Sintaxis:
tipo_de_dato[][]nombre_del_array;

Ejemplo:
Para declarar una matriz de enteros escribimos
int [ ] [ ] numeros;
int numeros[ ] [ ];

7.6.2. Creando una Matriz


Sintaxis:

nombre=newtipo[filas][columnas];

Ejemplo:
Para crear una matriz de 2x2 de nmeros enteros escribimos
numeros = new int [2] [2];
La declaracin y la creacin del array se pueden hacer en una
misma lnea. Utilice el siguiente formato:

tipo[][]nombre=newtipo[filas][columnas]

7.6.3. Inicializar los Elementos de una matriz


Para utilizar una matriz de de 2x2 de nmeros enteros
escribimos

Ing. Ral Enrique Fernndez Bejarano

Pgina 15

Algoritmos y Estructura de datos I


www.zonajava.net

numero[0][0]
numero[0][1]
numero[1][0]
numero[1][1]

=
=
=
=

0;
1;
2;
3;

7.6.4. Usar los Elementos de una matriz


Para recorrer los elementos inicializados utilizamos las
siguientes lneas de cdigo

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


{
for (int j=0; j < numero.length; j++)
{
System.out.print(numero[i][j]+"\t\t");
}
System.out.println("");
}

Ejemplo 08:
Realizar un programa que utilice una matriz.
class CMatriz
{
public static void main (String[] args)
{
int [][] numero = new int [2][2];
numero[0][0] = 0;
numero[0][1] = 1;
numero[1][0] = 2;
numero[1][1] = 3;
for (int i=0; i < numero.length; i++)
{
for (int j=0; j < numero.length; j++)
{
System.out.print(numero[i][j]+"\t\t");
}
System.out.println("");
}
}
}

Ing. Ral Enrique Fernndez Bejarano

Pgina 16

Universidad Peruana Los Andes


www.zonajava.net

Se obtiene como resultado

Ejemplo 09:
Realizar un programa que utilice sume dos matrices.
class sumamatriz
{
public static void main (String[] args)
{
int[][] m1 = {{5,1,5},{3,7,21},{13,9,23}};
int[][] m2 = {{2,6,3},{4,5,2},{7,8,3}};
int[][] s = new int[3][3];
for (int i=0; i < m1.length; i++)
{
for (int j=0; j < m1[i].length; j++)
{
//calcular la suma
s[i][j] = m1[i][j] + m2[i][j];
}
}
System.out.println("La matriz 1 es:");
for (int i=0; i < m1.length; i++)
{
for (int j=0; j < m1[i].length; j++)
{
System.out.print(m1[i][j]+"\t");
}
System.out.println("");
}
System.out.println("La matriz 2 es:");
for (int i=0; i < m2.length; i++)
{
for (int j=0; j < m2[i].length; j++)
{
System.out.print(m2[i][j]+"\t");
}
System.out.println("");
}

Ing. Ral Enrique Fernndez Bejarano

Pgina 17

Algoritmos y Estructura de datos I


www.zonajava.net

System.out.println("La matriz suma es:");

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


{
for (int j=0; j < s[i].length; j++)
{
System.out.print(s[i][j]+"\t");
}
System.out.println("");
}

Post test:
Despues de haber terminado de practicar con el modulo de reforzamiento,
resuelva los siguientes ejercicios:
Preguntas:
1.

Realizar un programa que lea 5 numeros, los almacene en una arreglo vector luego
obtener el nmero mayor y mostrarlos.

2.

Realizar un programa que lea 5 numeros y un divisor, los almacene en una arreglo vector
determinar cuantos nmeros mltiplos hay del divisor hay en los 5 nmeros ingresados.

3.

Realizar un programa que genere 12 numeros aleatorios, los almacene en una matriz de
4x3 y obtenga la suma de cada columna.

4.

Realizar un programa que lea un nmero entero que determine la cantidad de filas y
columnas de una matriz, generar n numeros aleatorios, los almacene en la matriz y luego
obtenga la cantidad de pares e impares que hay en dicha matriz, utilizando metodos.

5.

Realizar un programa que utilizando mtodos y menus, realice lo siguiente:


a)

Realizar un metodo que genere 10 numeros aleatorios comprendidos entre 10 y


100.

b)

Realizar un mtodo que intercambie el contenido del primer numero par por el
primer numero impar.

c)

Realizar un mtodo que intercambie el primer numero impar por por el ultimo

Ing. Ral Enrique Fernndez Bejarano

Pgina 18

Universidad Peruana Los Andes


www.zonajava.net

numero impar.
d)

Realizar un metodo que intercambie el segundo numero par por el por el ultimo
numero par.

e)

Realizar un metodo que recorra todo el arreglo.

Losejercicios desarrollados los encontrara en la pagina oficial del curso,


www.zonajava.net

Actividades de retroalimentacin
Ahora que Ud. Ya resolvi el pre test, realizo las actividades y no pudo resolver
los ejercicios correctamente, deber regresar nuevamente hasta el apartado de
Recomendaciones y diagrama de funcionamiento del modulo y podr reiniciar
el desarrollo del mdulo en su integridad, parcialmente, seleccionar otras
alternativas o consultar con el docente o a la pgina oficial del curso para que le
ayude a seleccionar otras actividades.

Bibliografa
Programacin en Java 2, algoritmos y estructura de datos
Luis Joyanes Aguilar
Ed. Mc Graw Hill 2002
Fundamentos de programacin Java
Ricardo Marcelo Villalobos
Ed. Macro 2008
Java 2 Curso de programacin
Francisco Ceballos
Ed. Rama 2005

Ing. Ral Enrique Fernndez Bejarano

Pgina 19