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

    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.

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *