Java CICLOSCICLOS
Haydeé MéndezProgramación 2 2 Recordatorio Habíamos hablado que dentro de un programa nos interesa poder controlar las acciones que son ejecutadas y cuantas veces se ejecutan La primera parte la resolvimos utilizando condiciones (presentación 6) Para controlar cuantas veces se ejecutan las acciones utilizaremos ciclos Java provee tres estructuras para realizar ciclos La sentencia while La sentencia do-while La sentencia for
Haydeé MéndezProgramación 2 3 Promedio Utilizaremos el siguiente problema para trabajar un poco sobre esto Calcularemos el promedio de un listado de números positivos que serán ingresados por el usuario Los números serán ingresados uno por uno El proceso se detendrá hasta que el número ingresado sea negativo
Haydeé MéndezProgramación 2 4 Solución Import java.util.*; public class Average{ public static void main(String []args){ int contador = 0; int acumulador = 0; Scanner stdin = new Scanner (System.in); System.out.println(Ingrese numeros positivos); System.out.println(Ingrese un numero negativo para detener); int numero = stdin.nextInt(); while (numero >= 0) { acumulador += numero; ++contador; numero = stdin.nextInt(); } if (acumulador > 0){ double average = (double) acumulador / contador; System.out.println(Promedio: " + average); } else { System.out.println(No hay numeros con que trabajar"); } } }
Haydeé MéndezProgramación 2 5 Estructura de la sentencia while Esa estructura realiza una serie de instrucciones mientras (while) una condición sea verdadera Su estructura es: while (condición) { statements; } Condición a evaluar Instrucciones a realizar si la condición es verdadera
Haydeé MéndezProgramación 2 6 Ejemplo while (numero >= 0) { acumulador += numero; ++contador; numero = stdin.nextInt(); } Expresión a ser evaluada en el inicio de cada iteración Debe ser verdadera la primera vez para realizar el ciclo por lo menos una vez Si fue verdadera se ejecutan estas instrucciones. Al final la expresión se evalúa nuevamente
Haydeé MéndezProgramación 2 7 Observación Hay muchas ocasiones en las que deseamos que las instrucciones se realicen por lo menos una vez y de ahí en adelante se revise la condición para continuar Con la estructura que vimos necesitamos en todo caso inicializar las variables para que la condición efectivamente fuera verdadera la primera vez que se evaluaba Esto puede ser bastante problemático, tener que preocuparnos por inicializar variables con el único fin de cumplir una condición, en lugar de esto utilizaremos una nueva estructura: do - while
Haydeé MéndezProgramación 2 8 Estructura do-while La estructura del do-while es la siguiente: do{ statements; } while (condición);
Haydeé MéndezProgramación 2 9 Ejemplo Import java.util.*; public class Average{ public static void main(String []args){ int contador = -1; int acumulador = 0; Scanner stdin = new Scanner (System.in); System.out.println(Ingrese numeros positivos); System.out.println(Ingrese un numero negativo para detener); int numero; do { acumulador += numero; ++contador; numero = stdin.nextInt(); } while (numero >= 0); if (acumulador > 0){ double average = (double) acumulador / contador; System.out.println(Promedio: " + average); } else { System.out.println(No hay numeros con que trabajar"); } } }
Haydeé MéndezProgramación 2 10 Estructura For La tercera de las estructuras para realizar ciclos es la estructura for, su sintaxis es a la siguiente: for (inicialización; condición; actualización){ statements } Paso de inicialización que prepara para la primera evaluación Condición para continuar realizando el ciclo Paso final de un ciclo, actualiza los valores de las variables involucradas
Haydeé MéndezProgramación 2 11 Ejemplo import java.util.* public class Pares{ public static void main (String args[]){ Scanner stdin = new Scanner(System.in); System.out.println(Ingrese cuantos numeros pares desea ver); int j = stdin.nextInt(); for (int i = 0; i <= j*2; i=i+2){ System.out.println(i); } } }
Haydeé MéndezProgramación 2 12 Diseño de ciclos Algunas preguntas que deberíamos hacernos en el diseño y análisis de un ciclo dentro de un programa ¿Qué inicialización debe hacerse sobre la expresión necesaria para el ciclo? ¿Qué inicialización es necesaria para el proceso del ciclo? ¿Qué causa que el ciclo se detenga? ¿Qué acciones debería realizar el ciclo? ¿Qué acciones son necesarias para preparar la siguiente iteración del ciclo? ¿Qué condiciones son verdaderas y cuales con falsas cuando termina el ciclo? ¿Cuándo el ciclo termina, qué acciones son necesarias para que el programa se continúe ejecutando?
Haydeé MéndezProgramación 2 13 for vs. while Un ejemplo de cuando un ciclo for puede ser traducido a un ciclo while int count; for ( count = 0; count < 10; count++ ) { System.out.println (count); } Se puede traducir a: int count; count = 0; while (count < 10) { System.out.println (count); count++; }
Haydeé MéndezProgramación 2 14 for vs. while Un ejemplo de cuando un ciclo for no puede ser traducido a un ciclo while for ( int count = 0; count < 10; count++ ) { System.out.println (count); } Se puede casí traducir a: int count = 0; while (count < 10) { System.out.println (count); count++; } La única diferencia Aquí la variable count no esta definida Aquí la variable count esta definida
Haydeé MéndezProgramación 2 15 while vs. do-while Un ciclo do-while puede ser traducido a un ciclo while de la siguiente forma do { Action; } while ( WhileExpression ); Puede traducirse a: boolean flag = true; while ( WhileExpression || flag ) { flag = false; Action; }
Haydeé MéndezProgramación 2 16 La palabra reservada continue La palabra reservada continue la utilizamos para inmediatamente iniciar la siguiente iteración del ciclo Las demás instrucciones no son ejecutadas Pero la parte de actualización del for si se realiza si es un ciclo for for ( int a = 0; a <= 10; a++ ) { if ( a % 2 == 0 ) { continue; } System.out.println (a + " es menor que 5"); } La salida será: 1 es menor que 5 3 es menor que 5 5 es menor que 5 7 es menor que 5 9 es menor que 5
Haydeé MéndezProgramación 2 17 La palabra reservada break La palabra reservada break la utilizamos para inmediatamente detener el ciclo El programa seguirá luego del final del ciclo for ( int a = 0; a <= 10; a++ ) { if ( a == 5 ) { break; } System.out.println (a + " is less than five"); } La salida será: 0 es menor que 5 1 es menor que 5 2 es menor que 5 3 es menor que 5 4 es menor que 5
Haydeé MéndezProgramación 2 18 Ejercicio 1 Realice un programa que encuentre el factorial de un número. El número debe estar ingresado desde el teclado. El factorial de un número es el producto de todos los números desde uno hasta él mismo. Ejemplo: el factorial de 5! = 5 * 4 * 3 * 2 * 1 = 120 Ejemplo: el factorial de 5! = 1 * 2 * 3 * 4 * 5 = 120