CodeGym /Cursos /JAVA 25 SELF /Bucle while: introducción y matices de uso

Bucle while: introducción y matices de uso

JAVA 25 SELF
Nivel 4 , Lección 1
Disponible

1. Introducción

En programación a menudo hay que realizar las mismas acciones muchas veces seguidas. Por ejemplo:

  • Recorrer todos los elementos de una lista.
  • Leer valores del teclado hasta que el usuario introduzca el adecuado.
  • Calcular la suma de todos los números del 1 al 100.
  • Pedir al usuario la contraseña hasta que sea la correcta.

Si intentas implementar todo esto sin bucles, quedará largo, aburrido y nada escalable. Imagina que escribes una calculadora y decides sumar los números del 1 al 10 a mano:

int sum = 0;
sum = sum + 1;
sum = sum + 2;
sum = sum + 3;
// ... y así 10 veces. Vaya.
Repetir a mano sin bucle — ¡incómodo!

Te aburrirás antes de terminar. La solución — los bucles. Permiten describir la repetición de acciones de forma concisa y clara. Hoy conoceremos el bucle más básico, pero tremendamente útil — while.

2. Conociendo el bucle while

Sintaxis y esquema básico

El bucle while es un «loro» en el mundo de la programación: repite el mismo fragmento de código mientras se cumpla cierta condición. En cuanto la condición deja de ser verdadera, el loro se calla (el bucle termina).

Sintaxis:

while (uslovie)
{
    // Cuerpo del bucle
}
Sintaxis del bucle while con un bloque de instrucciones

Diagrama

Aquí tienes un diagrama de flujo sencillo para entender cómo funciona el bucle while:

uml-while

3. Ejemplos: el bucle while en acción

Contador clásico

Hagamos un programa sencillo que cuenta del 1 al 5 e imprime los números:

int i = 1;
while (i <= 5)
{
    System.out.println("Paso nº " + i);
    i++; // ¡No olvides incrementar el contador!
}
// Imprimirá:
// Paso nº 1
// Paso nº 2
// Paso nº 3
// Paso nº 4
// Paso nº 5

Atención: si te olvidas de incrementar la variable i, el bucle nunca terminará (nuestro loro se volverá inmortal y un repetidor eterno). A esto se le llama bucle infinito — algo que asusta.

Entrada por teclado hasta el valor deseado

A menudo se usa un bucle para «empujar» al usuario hasta la respuesta correcta:

String password = "";
while (!password.equals("qwerty"))
{
    System.out.print("Introduce la contraseña: ");
    password = console.nextLine();
}
System.out.println("¡Bienvenido!");

Aquí el programa pide introducir la contraseña hasta que escribas la mágica "qwerty". No lo olvides: si eliminas la línea password = console.nextLine();, el bucle volverá a ser infinito (preguntará la contraseña, pero no leerá la entrada — se quedará colgado para siempre, como un robot estropeado).

4. Tipos y escenarios de uso del bucle while

Bucle while normal

Este bucle, como vimos arriba, comprueba la condición antes de la primera iteración. Si la condición es falsa desde el principio — el cuerpo del bucle no se ejecutará ni una sola vez.

Ejemplo: la condición no se cumple desde el principio

int i = 10;
while (i < 5)
{
    System.out.println(i); // ¡Nunca se ejecutará!
}

Lo cual, dicho sea de paso, es lógico. Exactamente como está escrito aquí.

Bucles while anidados

A veces necesitas un bucle dentro de otro. Por ejemplo, recorrer todas las líneas y, en cada una, comprobar todos los caracteres. En esta etapa es más bien una aventura, pero aquí va un ejemplo sencillo:

int i = 1;
while (i <= 3)
{
    int j = 1;
    while (j <= 2)
    {
        System.out.println("i = " + i + ", j = " + j);
        j++;
    }
    i++;
}

// i = 1, j = 1
// i = 1, j = 2
// i = 2, j = 1
// i = 2, j = 2
// i = 3, j = 1
// i = 3, j = 2

Veremos los bucles anidados con más detalle dentro de un par de lecciones; solo quería asustarte un poco :)

Bucle infinito

A veces los bucles terminan y, otras — viven para siempre.

while (true)
{
    System.out.println("¡Soy eterno!");
}

Se usa pocas veces, normalmente para procesos en segundo plano (por ejemplo, el funcionamiento de un servidor), pero también tiene aplicaciones prácticas.

5. Cómo no meter la pata: errores frecuentes con while

En programación, un bucle es como la electricidad: mola, pero hay que conocer las normas de seguridad.

Problema 1: bucle infinito por despiste

Muy a menudo los principiantes se olvidan de actualizar la variable de la que depende la condición. Como resultado, el bucle funciona «infinitamente», y hay que detener el programa a la fuerza (por ejemplo, con la combinación Ctrl + C).

int i = 1;
while (i <= 5)
{
    System.out.println(i);
    // i++;  // ¡UPS! Olvidaste incrementar i
}

Problema 2: condición mal definida

A veces el propio desarrollador se cava su propia tumba: la condición, al contrario, nunca es verdadera. Como resultado, el bucle no se ejecuta en absoluto.

int i = 10;
while (i < 5)
{
    System.out.println(i); // Este código nunca se ejecutará.
    i++;
}

Problema 3: error con los tipos de datos

En la condición del bucle siempre debe haber una expresión booleana — es decir, el resultado de la evaluación debe ser true o false.

int number = 5;
while (number) // ¡Error! Se esperaba boolean, no int.
{
    number--;
}
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION