27
Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008

Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008

Embed Size (px)

Citation preview

Page 1: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008

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

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

3

Estructuras de repetición

• while• do-while• for

Page 4: Control de flujo: Bucles Fundamentos de programación/ Programación I 2007-2008

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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