Date post: | 22-Jan-2016 |
Category: |
Documents |
Upload: | reyna-valeriano |
View: | 219 times |
Download: | 0 times |
Control de flujo: Bucles
Fundamentos de programación/ Programación I
2007-2008
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ón
• while• do-while• for
4
Bucle whileSintaxis: while (<expresión-boolean>) <bloque-o-instrucción>
expresión-boolean
bloque-o-instrucción
true false
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ón
while (contador < 6) { // condición
System.out.println(contador);
contador++; // actualización
}
7
Ejemplo 2
int contador = 1; // inicialización
while (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ón
while (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ón
while (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 <bloque-o-instrucción>
while (<expresión-boolean>);
expresión-boolean
true
false
bloque-o-instrucción
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 10• Mientras que el número esté fuera del rango
indicado, pedir un número de nuevo
17
Bucle for• Sintaxis:
for (<inicialización>;<condición>;<actualización>)<bloque-o-instrucción>
inicialización
condición
bloque-o-instrucción
actualización
truefalse
18
Bucle for
• Siempre equivalente a un bucle while• Como en el caso de do-while, muchas veces
un bucle for es más compacto que un while
19
Comparición entre while y for
int 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 enterosfloat, double realeschar caracteresboolean, true, false tipo Booleanif, else, switch estructura condicionalcase, default parte de switchwhile, do, for estructura de repeticiónbreak, continue cambiar control de
flujo