Está en la página 1de 30

AGRUPANDO OBJETOS

(Parte-II)

Por Corina Flores Villarroel


corina@memi.umss.edu.bo
UMSS - Programa MEMI

Corina Flores V. Programa MEMI


El ciclo while
 Un ciclo while es similar en su
estructura y proposito al ciclo for-each
 Contiene una cabecera y un cuerpo.
 El cuerpo puede ser ejecutado
repetidas veces.

Corina Flores V. Programa MEMI


El ciclo while
 Su sintaxis es:
while (condicion del ciclo) {
// cuerpo
}
 El ciclo while es más flexible que el ciclo for-
each, en vez de iterar para cada elemento de
la coleccion, while puede iterar flexiblemente
el numero de veces dependiendo de la
condicion.

Corina Flores V. Programa MEMI


El ciclo while
 La condicion es una expresion booleana que
determina si el cuerpo deberia ser ejecutado al
menos una vez.
 Si la condicion se evalua como VERDAD, el cuerpo
es ejecutado.
 Una vez que el cuerpo se ejecuta debe volver a
evaluarse la condicion. Este proceso continua hasta
que la evaluacion de la condicion sea FALSA.
 Si la condicion es falsa, salta el cuerpo del ciclo y
ejecuta la siguiente instruccion inmediatamente.

Corina Flores V. Programa MEMI


El ciclo while
 Por ejemplo, escribamos el ciclo while para imprimir
todas las citas de nuestra agenda de citas.
public void listaCitas()
{
int index = 0;
while(index < citas.size()){
System.out.println(citas.get(index));
index++;
}
}

Corina Flores V. Programa MEMI


El ciclo while
 El ciclo while es equivalente a for-each. Analizemos
el ejemplo:

 El ciclo while es mas complicado porque tenemos


que hacer la declaracion de una variable que juega
como indice fuera del ciclo. Inicializamos la variable
en cero para el primer elemento de la coleccion.

 La lista de elementos de la coleccion no es fijada


automaticamente, sino que debemos utilizar el
metodo get de ArrayList.

Corina Flores V. Programa MEMI


El ciclo while
 Mantenemos nuestro propio contador (variable) para
recordar las veces de ejecucion.

 Debemos recordar incrementar el contador


(variable).

 El ciclo for-each es mas seguro en el sentido de


garantizar siempre su finalizacion. En cambio con
while es posible cometer el error de ciclo infinito.

Corina Flores V. Programa MEMI


El ciclo while
 Ciclo infinito se da cuando hemos olvidado
incrementar el valor del contador (variable) antes de
salir del cuerpo del ciclo. La condicion nunca
llegara ser falsa provocando una iteracion infinita
de veces.

 Sin embargo while tambien tiene algunas ventajas


respecto a for-each
1. El ciclo while no necesita relacionarse siempre con una
coleccion.
2. Utilizamos while para procesar una coleccion y podemos
parar de hacerlo el momento que se desea.

Corina Flores V. Programa MEMI


El ciclo while
 Veamos el siguiente ejemplo:

int num = 0;
while(num <= 10){
System.out.println(num);
num = num +2;
}

Corina Flores V. Programa MEMI


Iterando sobre una coleccion
 Para examinar cada elemento de una coleccion, el
ArrayList provee de una manera de iterar (acción de
repetir una serie de pasos un cierto número de
veces) sobre su contenido.

 El metodo iterador de ArrayList retorna un objeto


Iterador

 Iterador es una clase definida en el paquete


java.util. Entonces, para utilizar en el programa
debemos escribir:
import java.util.Iterator;
Corina Flores V. Programa MEMI
Iterando sobre una coleccion
 La clase Iterator provee dos metodos para iterar
sobre una coleccion:
 HasNext
 Next

 La sintaxis es:
Iterator<Tipo_Elemento> it = miColeccion.iterator();

 Notar que Iterator es tambien una clase generica,


porque esta parametrizado con el tipo de elemento
de la coleccion.

Corina Flores V. Programa MEMI


Iterando sobre una coleccion
 Una representación general:

Iterator<Tipo_Elemento> it = miColeccion.iterator();
while(it.hasNext()){
Clase it.next() ;
// Después, hacer algo con el elemento. Metodo
}
 Usamos iterator para chequear repetidas veces si
hay mas elementos (it.hasNext()) y luego
conseguimos el proximo elemento (it.next())

Corina Flores V. Programa MEMI


Iterando sobre una coleccion
/**
* Lista todas las citas de la agenda usando iterator.
*/
public void listaCitas1()
{
Iterator<String> it = citas.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}

Corina Flores V. Programa MEMI


Acceso por índice vs. iteradores
 Hasta ahora hemos visto 3 maneras diferentes de
iterar sobre un ArrayList:
1. Ciclo for-each
2. Ciclo While y El método get con índice
3. Objeto Iterator

 La opción 1 y 3, cuando todos los elementos de la


colección van a ser procesados.

 La opción 2, se puede interrumpir más facilmente


el procesamiento a mitad de hacerlo, es decir, solo
procesar parte de la colección.
Corina Flores V. Programa MEMI
Acceso por índice vs. iteradores
 Para un ArrayList los dos métodos get e iterator
son igualmente buenos de aplicar.

 Si utilizamos el método get, podemos ingresar u


obtener los elementos de una colección a través de
un índice

 Si deseamos iterar sobre todos los elementos de


la colección usamos un objeto Iterator

Corina Flores V. Programa MEMI


Colecciones de tamaño fijo
 Existen aplicaciones en el que de antemano se
conoce el número de elementos a almacenar en la
colección.

 En este caso debemos usar la forma especializada


de colecciones de objetos tamaño fijo. A este
tipo de colecciones se denomina arreglos

Corina Flores V. Programa MEMI


Colecciones de tamaño fijo
 Si bien el tamaño fijo de los arreglos puede ser una
desventaja. Hay dos cosas que compensan como
ventaja de los arreglos frente a las colecciones de
tamaño flexible.
 El acceso a los elementos contenidos en un arreglo es
más eficiente, que en una colección flexible.

 Los arreglos son capaces de almacenar objetos o


valores de tipos primitivos. Las colecciones flexibles
solamente almacenan objetos.(ArrayList)

Corina Flores V. Programa MEMI


Declaración de un arreglo
 La sintaxis:

tipoDato[ ] nombreVariable;

tipoDato nombreVariable[ ];

 La característica que distingue la declaración de un


arreglo, son [ ] Por ejemplo:

int[ ] contadorPuntaje; // indica que es un arreglo


de enteros

Corina Flores V. Programa MEMI


Declaración de un arreglo
 Asi por ejemplo:

public class EjemploArreglos1


{ Arreglo de valores
private int[] contadorPuntaje; primitivo

} public class EjemploArreglos2


{
private Registro[] personas;
Arreglo de objetos

}
Corina Flores V. Programa MEMI
Creación o inicializacion de un
arreglo
 La sintaxis:

nombreArreglo = new tipoDato[tamano];

 Cuando se declara una variable arreglo, ésta no


tine ningún valor. Antes de asignar cualquier valor
se debe, reservar un espacio en memoria,
utilizando el operador new. Por ejemplo:

contadorPuntaje = new int [24]; // crea un arreglo


capaz de almacenar 24 elementos.

Corina Flores V. Programa MEMI


Creación de un arreglo
 Continuando con el ejemplo anterior …

public class EjemploArreglos1


{
private int[] contadorPuntaje;

public EjemploArreglos1()
{
contadorPuntaje = new int[24];

}

Corina Flores V. Programa MEMI


Creación de un arreglo
 Continuando con el ejemplo anterior …

public class EjemploArreglos2


{
private Registro[] personas;
private int cant;

public EjemploArreglos2(int c)
{
personas = new Registro[c];
}

Corina Flores V. Programa MEMI


Utilización de un arreglo
 La sintaxis:
nombreArreglo [índice]

 Para acceder a un elemento de un arreglo, se


coloca el nombre del arreglo y entre corchetes el
índice del elemento que se desea.
Por ejemplo, si se desea obtener el número 8 del siguiente arreglo:
 0  1  2  3  4  5  6
 3  6  8  1  0  4  2

contadorPuntaje [2]
Corina Flores V. Programa MEMI
Indices de un arreglo
 Generalmente el arreglo inicia su índice en cero,
siendo asi que su índice final es igual al tamaño
total menos 1.

Por ejemplo, el tamaño de este arreglo es 7 :


 0  1  2  3  4  5  6
contadorPuntaje  3  6  8  1  0  4  2

Corina Flores V. Programa MEMI


Indices de un arreglo
 El tamaño de un arreglo se puede obtener con el
método length, de la siguiente manera:
nombreArreglo.length

 Para el ejemplo anterior, si desearíamos realizar


un recorrido sobre el arreglo, deberíamos escribir

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

Corina Flores V. Programa MEMI


Ciclo for
 Sirve para repetir una secuencia de instrucciones,
sobre todo cuando se conoce la cantidad exacta de
veces que se quiere que se ejecute una instrucción

 Su sintaxis es:

for (inicializacion; condicion; incremento)


{
// cuerpo del ciclo
}

Corina Flores V. Programa MEMI


Ciclo for
 La inicialización es una instrucción de asignación que carga
la variable de control de ciclo con un valor inicial.

 La condición es una expresión relacional, que evalúa la


variable de control de ciclo contra un valor final o de parada
que determina cuando debe acabar el ciclo.

 El incremento define la manera en que la variable de control


de ciclo debe cambiar cada vez que la computadora repite un
ciclo.

 Se deben separar esos 3 argumentos con punto y coma (;)

Corina Flores V. Programa MEMI


Para más detalles acerca de

ESTRUCTURAS DE CONTROL SE
RECOMIENDA …
Ver el material acerca de este tema
publicado en un archivo de nombre
estructurasControl.pps en la pagina de
la materia.

Corina Flores V. Programa MEMI


TAREAS para entregar
TAREA1:
 Abrir el proyecto coleccion de www.cs.umss.edu.bo
 Examinar las clases: Listas y Persona
 Se han dejado en comentario en la clase Listas los métodos
a implementar

1. borrarPersona
2. buscarMayorEdad
3. muestraMayores
4. muestraMenores
5. muestraOrdenada

Corina Flores V. Programa MEMI


TAREAS para entregar
 TAREA2: Se pide abrir el proyecto de nombre Products o
Producto desde www.cs.umss.edu.bo. Buscar en el libro
“Primero Objetos con Java”los ejercicios: 4.34, 4.35, 4.36,
4.37 y 4.38, leer cuidadosamente cada uno y proceder con su
ejecución.

 FECHA de ENTREGA de ambos ejercicios por definir

Corina Flores V. Programa MEMI

También podría gustarte