guia_1

30
Ciclos en Java Resumen IIC102 - Introducci´ on a la Programaci´ on Introducci´ on Control de Flujo II Carla Vairetti [email protected] Pontif´ ıcia Universidad Cat´ olica 12 de Enero de 2009 Euclides IIC102 - Introducci´ on a la Programaci´ on

description

guia de java

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