1 Control de flujo: BuclesFundamentos de programación/ Programación I
2 Repetición A menudo queremos ejecutar una misma operación más que una vez Ejemplos: Escribir ¡Hola Mundo! en la pantalla 10 o 100 o 1000 veces Escribir todas las letras del abecedario en la pantalla Sumar los gastos anuales del Ayuntamiento de Barcelona En cada caso, podemos escribir las instrucciones individualmente en secuencia (muy ineficaz) En cambio podemos usar bucles (estructuras de repetición)
3 Estructuras de repeticiónwhile do-while for
4 Bucle while Sintaxis: while (
5 Condición de while La condición (expresión boolean) de un while sirve para determinar cuando el bucle se debe terminar ¡Si la condición siempre está true, el bucle while nunca termina! En consecuencia, algo en la condición tiene que cambiar Cada bucle necesita una variable de bucle que aparece en la condición y cuyo valor cambia Hay que inicializar el valor de la variable de bucle y actualizar su valor dentro del bucle
6 Ejemplo 1 int contador = 1; // inicializaciónwhile (contador < 6) { // condición System.out.println(contador); contador++; // actualización }
7 Ejemplo 2 int contador = 1; // inicializaciónwhile (contador < 0) { // condición System.out.println(contador); contador--; // actualización } El bucle nunca se ejecuta porque la condición está false desde el principio
8 Ejemplo 3 int contador = 1; // inicializaciónwhile (contador != 10) {// condición System.out.println(contador); contador += 2; // actualización } El bucle nunca termina porque la condición nunca llega a estar false
9 Ejemplo 4 int contador = 1; // inicializaciónwhile (contador < 6) // condición System.out.println(contador); contador++; // actualización El bucle nunca termina porque el valor de la variable de bucle no se actualiza dentro del bucle
10 Ejercicio Escribir ¡Hola Mundo! en la pantalla 10 veces
11 Ejercicio Escribir todas las letras del abecedario en la pantalla
12 Ejercicio ¿Cuál es el valor de la variable x después de ejecutar el siguiente bucle? int x = 1; int i = 1; while (i <= 4) { x = x + 2*i; i++; }
13 Ejercicio El factorial de un número entero n, que se escribe n!, es el producto de todos los enteros que preceden a n. Por ejemplo, 4! = 1*2*3*4 = 24. Calcular el valor de 30!
14 Bucle do-while Sintaxis: do
15 Bucle do-while La única diferencia entre un bucle while y un bucle do-while es que el bloque del do-while siempre se ejecuta por lo menos una vez La condición se prueba al final del bucle Siempre se puede convertir en un while, pero hay casos cuando el do-while es más compacto
16 Ejercicio Pedir al usuario un número entero entre 0 y 10Mientras que el número esté fuera del rango indicado, pedir un número de nuevo
17 Bucle for Sintaxis: inicialización condición false truefor (
18 Bucle for Siempre equivalente a un bucle whileComo en el caso de do-while, muchas veces un bucle for es más compacto que un while
19 Comparición entre while y forint i = 0; while (i < 10) { System.out.println(“¡Hola Mundo!”); i++; } for (int i = 0; i < 10; i++) System.out.println (“¡Hola Mundo!”);
20 Bucles encadenadas Ejemplo: escribir las letras del abecedario 10 veces for (int i = 0; i < 10; i++) { for (char c = 97; c <= 122; c++) System.out.print(c); System.out.println(); }
21 Ejercicio ¿Qué número entero entre 1 y 1000 tiene más divisores?
22 break y continue • Dos instrucciones para cambiar el control de flujo dentro de un bucle • break: terminar el bucle • continue: continuar el bucle sin ejecutar las demás instrucciones • Ambos se deben usar con cuidado
23 Ejemplo int a = 5; for (int i = 1; i <= 10; i++) { if (i % 2 == 0)continue; a = a + i; if (a > 20) break; }
24 Métodos de String A una variable de tipo String se puede aplicar varios métodos: String s = “¡Hola Mundo!”; int longitud = s.length(); // longitud 12 char c = s.charAt(1); // carácter H La longitud se puede usar para recorrer los caracteres de la cadena
25 Recorrer un String String s = “¡Hola Mundo!”; int i = 0;while (i < s.length()) { System.out.println(s.charAt(i)); i++; } ¿Qué pasa si inicializamos i = 1 y cambiamos la condición del bucle por i <= s.length()?
26 Ejercicio Recorrer una cadena, y para cada carácter, determinar si es un dígito
27 Palabras reservadas class inicio de programapublic, static, void método ‘main’ byte, short, int, long enteros float, double reales char caracteres boolean, true, false tipo Boolean if, else, switch estructura condicional case, default parte de switch while, do, for estructura de repetición break, continue cambiar control de flujo