guia_1
-
Upload
andres-bayuelo -
Category
Documents
-
view
218 -
download
1
description
Transcript of guia_1
-
Ciclos en JavaResumen
IIC102 - Introduccion a la ProgramacionIntroduccion
Control de Flujo II
Carla [email protected]
Pontifcia Universidad Catolica
12 de Enero de 2009
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Esquema
1 Ciclos en JavaComando WhileComando ForComando Break
2 Resumen
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Esquema
1 Ciclos en JavaComando WhileComando ForComando Break
2 Resumen
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
Cliclos en Java
En la clase anterior vimos como modelar un problema cuando esnecesario aplicar condiciones.
Esto nos permita seleccionar un camino de ejecucion segun lacondicion que evaluaramos.
Este camino era un conjunto de sentencias que se ejecutabansecuencialmente.
El problema ahora es: que pasara si ese camino quisieramosejecutarlo mas de una vez seguida ?
Por ejemplo si quisieramos ejecutarlo N veces siempre ycuando se cumple la condicion esperada.
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
Esquema
1 Ciclos en JavaComando WhileComando ForComando Break
2 Resumen
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
While
Declaracion
while ( expresionBooleana ) {...
}
Mientras la condicion se cumpla se realizaran las sentenciasdefinidas en el bloque ({ ... }).Cada vez que se termina de ejecutar el bloque se vuelve aevaluar la condicion, si es verdadera nuevamente se ejecuta elbloque.
Solo termina la ejecucion cuando la condicion pasa a ser falsa.
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
While
condicin
sentencia
false
true
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
While
Ejemplo: Supongamos que queremos calcular la suma de los 100primeros numeros enteros positivos (1, 2, ... 100).
Ejemplo
int suma = 0, numero = 1;while ( numero 100 ) {
suma = suma + numero;numero = numero + 1;
}
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
While
Ejercicio:
Supongamos que queremos calcular el producto de los 20primeros numeros enteros impares.
A tener en cuenta: i-esimo uumero entero impar es 2 * i - 1.
Por ejemplo el cuarto numero entero impar es: 2 * 4 - 1 = 7.
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
While
Solucion: Calculo del producto de los 20 primeros numeros enterosimpares.
Ejemplo
int producto = 1, numero = 1, contador = 20, ultimoNum;ultimoNum = 2 * contador - 1;while ( numero ultimoNum ) {
producto = producto * numero;numero = numero + 2;
}
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
While
Que sucedera si pusieramos: (while (true))
El ciclo es infinito, por lo tanto, el programa no termina.
Por lo tanto es necesario tener en cuenta la forma de escribirla condicion y revisar que efectivamente no entre en ciclo.
Tenga cidado cuando utilize numeros reales para las variablescontador. Pueden generar ciclos.
Ejemplo
double contador = 0.0;while ( contador != 1.0 ) {
contador = contador + 0.333333333333333;}
Puede suceder que la aproximacion que de la maquina no sea tanprecisa y entre en un ciclo infinito.
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
While- Variables
Se deben tener alguna consideraciones con las variables declaradasdentro de los bloques:
Las variables viven durante la duracion del bloque dondefueron declaradas.
Si una variable es declarada dentro de un ciclo while:Puede utilizarse dentro de ese bloque exclusivamente.Desaparece cuando el bloque termina.Vuelve a crearse en la siguiente iteracion si la condicion secumple.
Si queremos que una variable sea utilizada dentro y fuera delbloque debemos definirla antes del comienzo del bloque.
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
Ejercicio
Realize un metodo que permita sumar 10 numeros aleatorios.
Existe una clase predefinida Math que representa la libreramatematica de Java.
Para obtener un numero aletorio se invoca al metodoMath.random() que devuelve un numero (double).
Ejemplo: double rand = Math.random();
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
Ejercicio
Solucion:
Ejemplo
public double sumaAleatoria() {double contador = 0.0;int numero = 0;while ( numero 9 ) {
double rand = Math.random();contador = contador + rand;numero = numero + 1;
}return contador;
}
La variable rand solamente esta declarada dentro del while y nopuede ser utilizada fuera del bloque.
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
Patron a seguir
Se puede observar que la mayora de las veces se repite un ciertopatron en l ejecucion de los ciclos.
1 Inicializacion de la variable de condicion.
2 Evaluacion de la expresion.
3 Ejecucion de las sentencias.
4 Actualizacion de la variable de condicion.
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
Patron a seguir
Ejemplo
public double sumaAleatoria() {double contador = 0.0;int numero = 0; \\Inicializacion (1)while ( numero 9) { \\Evaluacion (2)
double rand = Math.random(); \\Ejecucion (3)contador = contador + rand;numero = numero + 1; \\Actualizacion (4)
}return contador;
}
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
Esquema
1 Ciclos en JavaComando WhileComando ForComando Break
2 Resumen
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
For
Declaracion
for ( inicializacion ; condicion ; actualizacion ) {...
}
El comando for permite definir los 3 pasos principales de un cicloen una misma sentencia.
La inicializacion se realiza solamente antes de la primeraiteracion.
La condicion se revisa antes de comenzar una iteracion.
La actualizacion se realiza cada vez que termina una iteracion.
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
For
!"#$%!%'
("$%)%!*$"+'!"#,*$"+'
-.#,.#!%*'
%#%!%*/%0*!%'
)*/-.'
,+1.'
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
For
Como modificamos el ejemplo anterior con un for ?
Ejemplo
public double sumaAleatoria() {double contador = 0.0;for(int numero=0; numero = 10; numero++) {
double rand = Math.random();contador = contador + rand;
}return contador;
}
Note que la variable numero se declara dentro del for.
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
Patron a seguir
Se define la secuencia del comando for como:
1 Inicializacion de la variable de condicion.Evaluacion de la condicion.Ejecucion de las sentencias.Actualizacion de la variable de condicion.Repetir todos estos pasos hasta que la condicion sea falsa.
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
Ejemplo
Realicemos el siguiente juego:
Se tienen 2 jugadores.
El primer jugador elije un numero entre 1 y 6.
Si el numero elegido es igual a 3 el jugador avanza 5 espacios.
Si no es igual, pero es menor a 3 el jugador avanza 2 espacios.
Si no se cumple nada de lo anterior, jugador avanza 4espacios.
Luego se repite lo mismo para el jugador 2, eintercaladamente.
Gana el primer jugador que llegue a la posicion 50.
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
Ejemplo - Solucion
Primero realizamos la clase jugador, la cual tendra las siguientescaractersticas.
NombrePosicion Actual
Ejemplo
public class Jugador {private String nombre ;private int posicion ;public Jugador ( String n) {
nombre = n;posicion = 0;
}public String getNombre () { return nombre ;}public int getPosicion () { return posicion ;}
}Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
Ejemplo - Solucion
Ademas debemos definir el comportamiento del jugador.
Ejemplo
public class Jugador {...public int cambiarPosicion ( int delta ) {
return posicion = posicion + delta ;}public int elegirNumero(){
int num = (int) (Math.random() * 6);return num;
}}
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
Ejemplo - Solucion
Ahora pensemos en la clase juego, Que caracteriza un juego?
Ambos jugadores
Ejemplo
public class Juego {private Jugador jugador1 ;private Jugador jugador2 ;public Juego ( String nombreJ1 , String nombreJ2 ) {
jugador1 = new Jugador ( nombreJ1 );jugador2 = new Jugador ( nombreJ2 );
{...
}
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
Ejemplo - Solucion
Ejemplo
public class Juego {...public String jugar() {
for ( int i = 0; true ; i ++) {Jugador jug = jugador1 ;if(i %2 == 1){ jug = jugador2 ;}int numero = jug.elegirNumero();if( numero == 3 ){ jug.cambiarPosicion(5);}else if( numero < 3){ jug.cambiarPosicion(2);}else { jug.cambiarPosicion(4);}if( jug.getPosicion() 30){return jug.getNombre();}
}}
}Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
Esquema
1 Ciclos en JavaComando WhileComando ForComando Break
2 Resumen
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Comando WhileComando ForComando Break
Break
Declaracion
while ( expresionBooleana ) {if( expresionBooleana ) {
...break ;
}...
}
En algunas ocasiones dentro de un ciclo nos encontramos conuna condicion que obliga que el ciclo termine inmediatamente.Para ello es necesario invocar al comando break.
Toda sentencia que se encuentre luego del break no se ejecuta.Se sale por completo del bloque, se termina la ejecucioncompleta, sin evaluar la condicion.
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Resumen
El lenguaje JAVA nos permite definir bloques que pueden serejecutados varias veces.
Se itera hasta que la condicion sea falsa.
Los comandos vistos son for y while.
Para interrumpir la ejecucion de un bloque utilizamos elcomando break.
Euclides IIC102 - Introduccion a la Programacion
-
Ciclos en JavaResumen
Consultas
Euclides IIC102 - Introduccion a la Programacion