Bucle while con constantes de tiempo de compilación

El ciclo while es una declaración de flujo de control que permite que el código se ejecute repetidamente en función de una condición booleana determinada. El ciclo while se puede considerar como una declaración if repetida. Se utiliza sobre todo en situaciones en las que el número exacto de iteraciones de antemano. A continuación se muestra la imagen para ilustrar el ciclo while:

While Loop

Sintaxis:

while(test_expression)
{
   // statements 
   update_expression;
}

Programa 1: A continuación se muestra el programa para implementar el bucle while básico:

Java

// Java program to illustrate the
// while loop
  
class GFG {
  
    // Driver Code
    public static void main(String args[])
    {
        // Initialization expression
        int i = 1;
  
        // Test expression
        while (i < 6) {
            System.out.println("Hello World");
  
            // Update the expression
            i++;
        }
    }
}
Producción:

Hello World
Hello World
Hello World
Hello World
Hello World

Mientras bucle con valor booleano

Programa 1: a continuación se muestra el ejemplo de otro ciclo while donde se usa una variable booleana en la parte test_expression:

Java

// Java program to demonstrate while loop
import java.io.*;
  
class GFG {
    // Driver Code
    public static void main(String[] args)
    {
        boolean flag = false;
  
        while (flag) {
            System.out.println(
                "While Loop Executed");
        }
  
        System.out.println("Done!");
    }
}
Producción:

Done!

Explicación: el código anterior funciona bien porque el indicador no es una constante de tiempo de compilación. El valor de la bandera es falso, por lo que el bucle while no se ejecuta. 

Programa 2: a continuación se muestra el ejemplo de un ciclo while donde se usa un valor booleano constante en la parte test_expression en lugar de usar una variable booleana como se hizo en el ejemplo anterior.

Java

// Java program to demonstrate the
// above statement
  
import java.io.*;
class GFG {
    // Driver Code
    public static void main(String[] args)
    {
        while (false) {
            System.out.println(
                "While Loop Executed");
        }
        System.out.println("Done!");
    }
}

Producción:

Explicación: el código anterior no se compila porque el código interno es inalcanzable.

Programa 3: a continuación se muestra el programa para demostrar el escenario cuando test_expression es «verdadero»:

Java

// Java program to demonstrate the
// above statement
import java.io.*;
  
class GFG {
  
    // Driver Code
    public static void main(String[] args)
    {
        while (true) {
            System.out.println(
                "While Loop Executed");
        }
        System.out.println("Done!");
    }
}

Producción:

Explicación: en el código anterior, el ciclo while se compilará con éxito, pero terminaría en un ciclo infinito y por eso el código después del ciclo while es inalcanzable. Por lo tanto, también terminaría en error de compilación. 

Programa 4: a continuación se muestra otra versión del programa anterior con una declaración de interrupción dentro del ciclo while:

Java

// Java program to demonstrate the
// above approach
import java.io.*;
  
class GFG {
  
    // Driver Code
    public static void main(String[] args)
    {
        while (true) {
            System.out.println(
                "Inside Loop");
            break;
        }
        System.out.println("Done!");
    }
}
Producción:

Inside Loop
Done!

Explicación: en el programa anterior, si el bucle while contenía una declaración de interrupción, la compilación no fallará porque habría algunos casos en los que se podría acceder al código después del bucle. Aquí, estamos saliendo del bucle while y se ejecutará la declaración de impresión.

Constantes de tiempo de compilación:

Las constantes de tiempo de compilación son las constantes cuyos valores respectivos se conocen en tiempo de compilación. Las variables finales de strings y tipos de datos primitivos pueden ser constantes de tiempo de compilación. Deben inicializarse con su declaración. A continuación se muestra un ejemplo de constantes de tiempo de compilación:

final int i = 100;
final String str = "Hello";

Las siguientes no son constantes en tiempo de compilación:

final int j;
j = 10;
final Integer k = 20;

Programa 1: supongamos que se utiliza una variable final como variable de condición dentro del ciclo while. A continuación se muestra el programa para ilustrar lo mismo:

Java

// Java program to demonstrate the
// while loop with compile-time
// constant
import java.io.*;
  
class GFG {
  
    // Driver Code
    public static void main(String[] args)
    {
        final boolean flag = false;
  
        while (flag) {
            System.out.println(
                "Inside Loop");
        }
        System.out.println("Done!");
    }
}

Producción

Explicación: como la bandera es una variable final, es una constante de tiempo de compilación. Como el valor de la bandera no se puede cambiar, el código dentro del ciclo while es inalcanzable. Es por eso que esto no se compila.

Programa 2: si la variable final no se inicializa cuando se declara, entonces no es una constante de tiempo de compilación. A continuación se muestra el programa para ilustrar lo mismo:

Java

// Java program to demonstrate the
// above statement
import java.io.*;
  
class GFG {
  
    // Driver Code
    public static void main(String[] args)
    {
        final boolean flag;
        flag = false;
  
        while (flag) {
            System.out.println("Inside Loop");
        }
        System.out.println("Done!");
    }
}
Producción:

Done!

Explicación: En el programa anterior, no habría ningún error de compilación ya que el indicador no se inicializa cuando se declara. Se inicializa en una línea separada. Entonces, en este caso, flag no es una constante de tiempo de compilación y no habría ningún error de compilación. 

Nota : De manera similar, si el valor de la variable indicadora final es verdadero y se inicializa cuando se declara, entonces el código después del bloque while no podrá compilarse. Pero, si el valor de la bandera booleana final se inicializa en una línea separada con el valor ‘true’, entonces no habrá ningún error de compilación. Eso significa que, si la variable de condición utilizada dentro del ciclo while es una constante de tiempo de compilación, entonces el código puede o no compilarse según el contexto. La variable final que no se inicializa en la misma línea no es una constante de tiempo de compilación. Así que en ese caso no hay problema. 

Programa 3:

Java

// Java program to demonstrate the while
// loop with compiled time constant
import java.io.*;
  
class GFG {
  
    // Driver Code
    public static void main(String[] args)
    {
        boolean anotherFlag = false;
        final boolean flag = anotherFlag;
  
        // While loop
        while (flag) {
            System.out.println("Inside Loop");
        }
        System.out.println("Done!");
    }
}
Producción:

Done!

Explicación: en el código anterior, no habría ningún error de compilación, aunque la bandera es una variable final y se inicializa en la misma línea, ‘otra Bandera’ no es una variable final y es por eso que la bandera no es un tiempo de compilación constante y, por lo tanto, no hay problemas con la compilación.

Programa 4: si ‘otra bandera’ fuera una variable final, los resultados habrían sido diferentes. A continuación se muestra el programa para ilustrar lo mismo:

Java

// Java program to demonstrate the
// above statement
import java.io.*;
  
class GFG {
  
    // Driver Code
    public static void main(String[] args)
    {
        final boolean anotherFlag = false;
        final boolean flag = anotherFlag;
  
        while (flag) {
            System.out.println("Inside Loop");
        }
        System.out.println("Done!");
    }
}

Producción

Explicación: En el código anterior, el indicador es una constante de tiempo de compilación. Por lo tanto, el código dentro del ciclo while es inalcanzable, lo que genera un error de compilación.

Publicación traducida automáticamente

Artículo escrito por mukta8988 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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