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 if
sy for
s 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:
Te puede interesar:Control de flujo de Java: declaraciones if y if-else- declaraciones if y if-else
- cambiar declaraciones
while
ydo-while
declaracionesfor
yenhanced for
declaracionesbreak
ycontinue
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:
Te puede interesar:Control de flujo de Java: romper y continuar declaraciones- Se comprueba la condición while,
n
es 123 ysumOfDigits
es 0. Esn > 0
igual atrue
? Sí -> ejecutar el código en el ciclo. - Se comprueba la condición while,
n
tiene 12 años ysumOfDigits
es 3. Esn > 0
igual atrue
? Sí -> ejecutar el código en el ciclo. - Se comprueba la condición while,
n
es 1 ysumOfDigits
es 5. Esn > 0
igual atrue
? Sí -> ejecutar el código en el ciclo. - Se comprueba la condición while,
n
es 0 ysumOfDigits
es 6. Esn > 0
igual atrue
? 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:
Te puede interesar:Java: lista de archivos en un directorioi 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:
Te puede interesar:Gráficos en Java0
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.
Te puede interesar:Trabajar con PostgreSQL en Javawhile
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.