control de flujo: bucles fundamentos de programación/ programación i 2007-2008
TRANSCRIPT
![Page 1: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/1.jpg)
Control de flujo: Bucles
Fundamentos de programación/ Programación I
2007-2008
![Page 2: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/2.jpg)
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)
![Page 3: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/3.jpg)
3
Estructuras de repetición
• while• do-while• for
![Page 4: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/4.jpg)
4
Bucle whileSintaxis: while (<expresión-boolean>) <bloque-o-instrucción>
expresión-boolean
bloque-o-instrucción
true false
![Page 5: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/5.jpg)
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
![Page 6: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/6.jpg)
6
Ejemplo 1
int contador = 1; // inicialización
while (contador < 6) { // condición
System.out.println(contador);
contador++; // actualización
}
![Page 7: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/7.jpg)
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
![Page 8: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/8.jpg)
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
![Page 9: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/9.jpg)
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
![Page 10: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/10.jpg)
10
Ejercicio
• Escribir ¡Hola Mundo! en la pantalla 10 veces
![Page 11: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/11.jpg)
11
Ejercicio
• Escribir todas las letras del abecedario en la pantalla
![Page 12: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/12.jpg)
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++;
}
![Page 13: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/13.jpg)
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!
![Page 14: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/14.jpg)
14
Bucle do-while
Sintaxis: do <bloque-o-instrucción>
while (<expresión-boolean>);
expresión-boolean
true
false
bloque-o-instrucción
![Page 15: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/15.jpg)
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
![Page 16: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/16.jpg)
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
![Page 17: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/17.jpg)
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
![Page 18: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/18.jpg)
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
![Page 19: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/19.jpg)
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!”);
![Page 20: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/20.jpg)
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();
}
![Page 21: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/21.jpg)
21
Ejercicio
• ¿Qué número entero entre 1 y 1000 tiene más divisores?
![Page 22: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/22.jpg)
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
![Page 23: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/23.jpg)
23
Ejemplo
int a = 5;
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0)
continue;
a = a + i;
if (a > 20)
break;
}
![Page 24: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/24.jpg)
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
![Page 25: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/25.jpg)
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()?
![Page 26: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/26.jpg)
26
Ejercicio
• Recorrer una cadena, y para cada carácter, determinar si es un dígito
![Page 27: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008](https://reader035.vdocuments.co/reader035/viewer/2022062322/5665b43c1a28abb57c904608/html5/thumbnails/27.jpg)
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