Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 31

Fundamentos de Java

6-2
Bucles while y do-while

Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados.
Objetivos
En esta lección se abordan los siguientes objetivos:
• Usar un bucle while en un programa Java (antes de la
prueba)
• Usar un bucle do-while en un programa Java
(después de la prueba)
• Comprender cuándo es más beneficioso un tipo de
bucle frente a otro

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 3
Bucles while y do-while
Temas
• Uso de bucles while
• Uso de bucles do-while
• ¿Qué bucle puedo utilizar?

Bucles while Sentencias


Bucle for break y
y do-while
continue

Sección 6

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 4
Bucles while y do-while
¿Cuántas veces se tiene que repetir?
• En algunas situaciones, no se sabe cuántas veces se
tiene que repetir algo.
• Es decir, puede que tenga que repetir algún código
hasta que se produzca una condición concreta.

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 5
Bucles while y do-while
¿Cuántas veces se tiene que repetir?
Observe un ejemplo:
• Imagine que tiene que escribir un programa para
introducir las calificaciones de los exámenes y averiguar
su media, pero puede que no sepa cuántos exámenes
se realizarán.
• En lugar de obligar a los usuarios a contarlos con
antelación, puede permitirles que introduzcan las
calificaciones de un en una y, a continuación, introducir
-1 para indicar la finalización de las entradas.

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 6
Bucles while y do-while
Bucle while
• En esos casos, deberá utilizar el bucle while más fácil.
• Funciona de la siguiente manera: El bucle while
ejecuta continuamente un bloque de sentencias
siempre que una condición concreta sea true.

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 7
Bucles while y do-while
Sintaxis del bucle while
while (<boolean expression>) {
<statement(s)> ;
}

• La sentencia while evalúa la boolean


expression.
• Las sentencias en los corchetes angulares se
ejecutan siempre que boolean expression
sea true.

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 8
Bucles while y do-while
Bucle previo a la prueba
• Un bucle previo a la prueba evalúa la condición antes de
que el bucle se ejecute.
• Si la condición es false, el bucle se para o puede que
nunca se ejecute.
• Los bucles for y while son previos a la prueba.

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 9
Bucles while y do-while
Escenario de la cuenta atrás
Vamos a escribir el escenario de la cuenta atrás tratado en la
lección anterior mediante el bucle while:
Lo que conocemos Nombre técnico Código
Cuando se inicia el Expresión de inicialización int i = 10;
bucle...
Continúe el bucle si... Expresión de condición i >= 0;
Después de cada Expresión de actualización i--;
bucle...
Código para repetir Sentencias de código System.out.println(i);

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 10
Bucles while y do-while
Escenario de la cuenta atrás:
Bucle while
public class CountDownWhile {

public static void main(String[] args) {

int i = 10;
System.out.println("Countdown to Launch!");

while (i >= 0) {
System.out.println(i);
i--;
}

System.out.println("Blast Off!");
}

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 11
Bucles while y do-while
Algunos bucles while nunca se ejecutan
• Es posible que el cuerpo del bucle nunca se ejecute.
• Si las condiciones son tales que la expresión booleana
ya era false.
• Por ejemplo:
public class WhileLoopExample {

public static void main(String args[]) {


int num = 0;
System.out.println("Let's count to 10!");
while (num > 10) {
num = num + 1;
System.out.println("Number: " + num);
}
System.out.println("We have counted to 10! Hurrah! ");
}
}

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 12
Bucles while y do-while
Quedar atascado en un bucle infinito
• Se quedará atascado en un bucle while si escribe una
condición booleana que nunca se evalúe como false.
• Esto se denomina un bucle infinito porque nunca deja
de ejecutarse.
• Si esto ocurre, el bucle se ejecutará para siempre o
hasta que se envíe un comando de interrupción.
• Debe evitar escribir bucles infinitos y comprobar
siempre la expresión booleana para asegurarse de que
los bucles terminan con normalidad.

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 13
Bucles while y do-while
Volvamos al escenario de la cuenta atrás
• ¿Qué sucede si accidentalmente habíamos escrito i++
en lugar de i-- en el bucle while?
public static void main(String[] args) {
int i = 10;
System.out.println("Countdown to Launch!");
while (i >= 0) {
System.out.println(i);
i++;
}
System.out.println("Blast Off!");
}

• Continúa agregando 1 a i, manteniendo su valor a más


de 10 para siempre.
• Se trata de un bucle infinito porque la condición
booleana es siempre true y este programa continúa
la ejecución.

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 14
Bucles while y do-while
Uso del bucle while y la clase scanner
Los bucles while a menudo se utilizan con entrada
mediante la clase Scanner.
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
int sum = 0;
System.out.println("Enter a number (-1 to quit): ");
int num = console.nextInt();
while (num != -1) {
sum = sum + num;
System.out.println("Enter a number (-1 to quit): ");
num = console.nextInt();
}
System.out.println("The sum is " + sum);
}

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 15
Bucles while y do-while
Uso del bucle while y la clase Scanner
Ejemplo: Un programa que solicita a los usuarios números
hasta que escriben -1 y, a continuación, genera la suma.

public static void main(String[] args) {


Scanner console = new Scanner(System.in);
int sum = 0;
System.out.println("Enter a number (-1 to quit): ");
int num = console.nextInt();
while (num != -1) {
sum = sum + num;
System.out.println("Enter a number (-1 to quit): ");
num = console.nextInt();
}
System.out.println("The sum is " + sum);
}

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 16
Bucles while y do-while
Ejercicio 1
• Importe y abra el proyecto WhileLoopEx.
• Modifique SquareRootWhile.java para utilizar un
bucle while para solicitar repetidamente a los
usuarios que escriban un número hasta que escriban un
número no negativo y, a continuación, se calcula la raíz
cuadrada.
Salida esperada:
Type a non-negative integer: -5
Invalid number, try again: -1
Invalid number, try again: 11
The square root of 11 is 3.166

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 17
Bucles while y do-while
Temas
• Uso de bucles while
• Uso de bucles do-while
• ¿Qué bucle puedo utilizar?

Bucles while Sentencias


Bucle for y break y
do-while continue

Sección 6

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 18
Bucles while y do-while
Bucle posterior a la prueba
• Un bucle posterior a la prueba evalúa su condición al
final del bucle, no al principio.
• El bucle do-while es posterior a la prueba.

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 19
Bucles while y do-while
Bucle do-while
• El bucle do-while es un bucle while modificado que
le permite ejecutar el bucle una vez, antes de
comprobar la condición booleana.
• Sintaxis:
do{
<statement(s)>
}while(<condition>);

El bucle do-while necesita un punto y coma después


de la condición al final del bucle.

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 20
Bucles while y do-while
Escenario de la cuenta atrás:
Bucle do-while

public static void main(String[] args) {

int i = 10;
System.out.println("Countdown to Launch!");

do {
System.out.println(i); Ejecutado una vez
i--; antes de evaluar la
}while (i >= 0); condición

System.out.println("Blast Off!");
}

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 21
Bucles while y do-while
Ejercicio 2
• Importe y abra el proyecto WhileLoopEx.
• Examine SumofNums.java, que suma una secuencia
de 10 números enteros que introduce el usuario.
• ¿Se puede implantar el mismo mediante un bucle
do-while?

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 22
Bucles while y do-while
Temas
• Uso de bucles while
• Uso de bucles do/while
• ¿Qué bucle puedo utilizar?

Bucles Sentencias
Bucle for while y break y
do-while continue

Sección 6

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 23
Bucles while y do-while
Bucle for estándar en comparación con el
bucle while
Diferencias entre estos dos bucles:
• En un bucle for:
– Las sentencias de inicialización, condición e incremento se
unen en una sola línea, lo que hace que el bucle sea más fácil
de entender e implantar.

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 24
Bucles while y do-while
Bucle for estándar en comparación con el
bucle while
Diferencias entre estos dos bucles:
• En un bucle while:
– La inicialización se realiza antes de iniciar el bucle.
– La sentencia condicional siempre se pone en el inicio del bucle.
– Las sentencias de incremento se pueden combinar con una
condición o embeber en el cuerpo del bucle.

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 25
Bucles while y do-while
Comparación del contador de inicialización
Bucle while
1. int i = 10;
2. while (i >= 0) {
3. System.out.println(i);
4. i--;
5. }
6. System.out.println("Blast Off!");

Inicializar
contador

Bucle for
for (int i = 10; i >= 0; i--) {
System.out.println(i);
}
System.out.println("Blast Off!");

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 26
Bucles while y do-while
Comparación de la expresión booleana
Bucle while
int i = 10;
while (i >= 0) {
System.out.println(i);
i--;
}
System.out.println("Blast Off!");

expresión
booleana
Bucle for
for (int i = 10; i >= 0; i--) {
System.out.println(i);
}
System.out.println("Blast Off!");

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 27
Bucles while y do-while
Comparación del contador de incremento
Bucle while
int i = 10;
while (i >= 0) {
System.out.println(i);
i--;
}
System.out.println("Blast Off!");
Incrementar
contador
Bucle for
for (int i = 10; i >= 0; i--) {
System.out.println(i);
}
System.out.println("Blast Off!");

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 28
Bucles while y do-while
¿Qué bucle puedo utilizar?
Tipo de bucle Definición ¿Cuándo utilizarlo?
Bucle previo a la prueba que Se debe utilizar cuando no está seguro
se repite hasta que una del número de veces que el bucle se
while condición especificada sea debe ejecutar o incluso si no debe en
false. absoluto.
Bucle posterior a la prueba Se debe utilizar cuando sepa que el
que ejecuta el bucle antes código se debe ejecutar al menos una
de comprobar la condición y, vez y, posiblemente, más veces en
do-while a continuación, se repite función de la condición.
hasta que la condición sea
false.
Bucle que contiene un Se utiliza cuando tenga que ejecutar un
contador inicializado y bucle un número determinado de veces,
aumenta el contador con o cuando lo tiene que incrementar a
for cada ejecución a través del través de un juego de datos. El contador
bucle. Se repite hasta que la también se puede utilizar como un
condición sea false. índice para acceder a los datos de uno
en uno.

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 29
Bucles while y do-while
Resumen
En esta lección, debe haber aprendido lo siguiente:
• Usar un bucle while en un programa Java (antes de la
prueba)
• Usar un bucle do-while en un programa Java
(después de la prueba)
• Comprender cuándo es más beneficioso un tipo de
bucle frente a otro

JFo 6-2
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 30
Bucles while y do-while

También podría gustarte