Control de flujo de Java: declaraciones while y do-while

C

Introducción

Las declaraciones condicionales y los bucles son una herramienta muy importante en la programación. No hay muchas cosas que podamos hacer con código que solo se pueda ejecutar línea por línea.

Eso es lo que significa “control de flujo”: guiar la ejecución de nuestro programa, en lugar de dejar que se ejecute línea por línea independientemente de cualquier factor interno o externo. Cada lenguaje de programación admite alguna forma de control de flujo, si no explícitamente a través de ifsy fors o declaraciones similares, entonces implícitamente nos da las herramientas para crear tales construcciones, es decir, los lenguajes de programación de bajo nivel generalmente logran ese efecto con una gran cantidad de go-to comandos.

Los bucles eran un concepto que se usaba mucho antes de que la programación de computadoras existiera, pero la primera persona en usar un bucle de software fue Ada Lovelace, comúnmente conocida por su apellido de soltera, Byron, mientras calculaba Números de Bernoulli, allá por el siglo XIX.

En Java, hay varias formas de controlar el flujo del código:

  • declaraciones if y if-else
  • cambiar declaraciones
  • while y do-while declaraciones
  • for y enhanced for declaraciones
  • break y continue declaraciones

mientras

Un bucle es un conjunto de instrucciones que se ejecutan repetidamente hasta que se cumple alguna condición, o alternativamente mientras se cumple una condición. true. los while El bucle en Java funciona según el último principio, repite un bloque de código siempre que la condición se evalúe como true:

while(condition) {
    // Block of code to be executed
}

Cuando Java encuentra un while bucle hace lo siguiente:

  • Es el condition ¿cierto?
    • Sí -> ejecutar el bloque de código. Verifique la condición nuevamente.
    • No -> no ejecute el bloque de código. No vuelva a comprobar la condición.

Esto significa que si tuviéramos una declaración como while(true), el bloque de código se ejecutaría indefinidamente (o al menos, lo intentaría). Esto se llama Bucle infinito y debe evitarse a menos que tengamos una forma de salir del bucle, generalmente con un break declaración.

los condition puede ser cualquier tipo de Boolean expresión, lo mismo que con if declaraciones.

Ya que while comprueba el condition antes de ejecutar cualquier código, es posible que el bloque de código dentro del ciclo while nunca se ejecute si el condition fue false al principio.

Esto es diferente de un for bucle, que normalmente se ejecuta un número determinado de veces. while Los bucles, por otro lado, se utilizan a menudo para ejecutar un número desconocido de veces.

He aquí un ejemplo de while bucle que suma todos los dígitos de un int.

int n = 123;
int sumOfDigits = 0;

while(n > 0) {
    int lastDigit = n % 10; // Retrieves the last digit of n via the modulus operator
    n = n / 10; // "Removes" the last digit from n via division

    sumOfDigits += lastDigit; // Adds the current digit to the sum
}

System.out.println(sumOfDigits);

La ejecución de este código funciona de la siguiente manera:

  • Se comprueba la condición while, n es 123 y sumOfDigits es 0. Es n > 0 igual a true? Sí -> ejecutar el código en el ciclo.
  • Se comprueba la condición while, n tiene 12 años y sumOfDigits es 3. Es n > 0 igual a true? Sí -> ejecutar el código en el ciclo.
  • Se comprueba la condición while, n es 1 y sumOfDigits es 5. Es n > 0 igual a true? Sí -> ejecutar el código en el ciclo.
  • Se comprueba la condición while, n es 0 y sumOfDigits es 6. Es n > 0 igual a true? No -> ejecuta la primera línea después del bucle, en nuestro caso imprime el resultado.

Después de ejecutar el ciclo while 3 veces, se imprime un valor de 6 en la consola.

El cuerpo del bucle while puede estar vacío y, a veces, a los desarrolladores les gusta escribir taquigrafía while bucles cuando sea posible. Además, la misma regla de acortar if y else declaraciones se aplica a while. Entonces una sola línea while El bucle se puede reescribir sin los corchetes, así:

// This...
while(i < j) {
    System.out.println("i " + i++ + "    j " + j--);
}

// ...becomes this:
while(i < j)
    System.out.println("i " + i++ + "    j " + j--);

También observe que las variables utilizadas en la condición marcada se pueden cambiar dentro de la while bloque de código de bucles o dentro de la condición marcada en sí:

while(++i < --j)
    System.out.println("i "  + i + "   j " + j);

Ambos dan como resultado el mismo resultado:

i 1   j 9
i 2   j 8
i 3   j 7
i 4   j 6

Sin embargo, pueden reducir la legibilidad y deben evitarse si lo hacen.

hacer mientras

Este bucle hace esencialmente lo mismo que while, pero garantiza que el bloque de código se ejecutará al menos una vez.

Esto se debe a que, a diferencia de while, el código se ejecuta antes de se comprueba la condición. Entonces, incluso si comenzamos con un false condición, ejecutará el código y luego verificará si debe hacerlo nuevamente:

int i = 0;

// This will print once
do {
    System.out.println(i);
    i--;
} while(i > 0);

La salida del código es:

0

Después de que el código llegue while(i > 0), detiene las iteraciones.

Por ejemplo, un caso de uso para do-while es preguntarle al usuario si quiere intentar hacer algo de nuevo en caso de que falle.

do {
    // Try to connect to a server, access a resource, etc...
    String status = connectToServer();

    // Ask user whether they want to try again
    String userInput = getUserInput("Connection status is " + status + ". Want to try again?");
} while(userInput == "yes");

Esto se puede hacer con un while loop, pero de esta manera es más legible e intuitivo.

Conclusión

El control de flujo en el código es esencial para absolutamente todas las aplicaciones. Las declaraciones que alteran el flujo del código son bloques de construcción fundamentales y cada desarrollador aspirante debe tener el control total / ser consciente de cómo funcionan.

while y do-while Los bucles son buenos para ejecutar un bloque de código un número desconocido de veces, donde se verifica una condición cada vez que se vuelve a ejecutar el bloque de código.

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad