1. Bucles en nuestra vida

Muy a menudo, nuestras vidas requieren que realicemos las mismas acciones muchas veces. Por ejemplo, supongamos que necesito escanear un documento que consta de muchas páginas. Que repitamos el mismo procedimiento una y otra vez:

  • Poner la primera página en el escáner
  • Presiona el botón de escanear
  • Poner la página siguiente en el escáner

Esto es difícil de hacer manualmente. Sería bueno si este proceso pudiera automatizarse de alguna manera.

O considere otro ejemplo: digamos que quiero marcar todos los correos electrónicos no leídos en mi bandeja de entrada como spam. Érase una vez que tenía que seleccionar cada correo electrónico uno a la vez y marcarlo como spam.

Pero los programadores son perezosos, por lo que automatizaron este proceso hace mucho tiempo: ahora simplemente selecciona cualquier lista de letras y hace clic en "marcar como correo no deseado", y luego su cliente de correo electrónico revisa la lista y mueve cada correo electrónico a la carpeta de correo no deseado.

¿Qué podemos decir aquí? Es muy conveniente cuando una computadora o programa puede ejecutar cientos o miles de operaciones monótonas con un solo clic. Y ahora aprenderás a hacer esto también.


2. whilebucle

La declaración if-else amplió significativamente nuestras capacidades de programación, haciendo posible escribir programas que realizan diferentes acciones en diferentes situaciones. Pero hay una cosa más que hará que nuestros programas sean mucho más potentes: los bucles .

Java tiene 4 tipos de bucles : while, y . Ahora profundizaremos en el primero de ellos.forfor-eachdo-while

Un whilebucle es muy simple. Consta de solo dos partes: una condición y un cuerpo de bucle . El cuerpo del bucle se ejecuta una y otra vez mientras la condición sea true. En general, un whilebucle se ve así:

while (condition)
   statement;
Notación para un whileciclo con una sola instrucción
while (condition)
{
   block of statements
}
Notación para un whilebucle con un bloque de sentencias

Es muy sencillo. La sentencia o bloque de sentencias se ejecuta una y otra vez siempre que la condición del ciclo sea igual a true.

Así es como funciona: primero, se verifica la condición . Si es verdadero, entonces se ejecuta el cuerpo del ciclo (la sentencia o bloque de sentencias ). Luego, la condición se verifica nuevamente y el cuerpo del ciclo se ejecuta nuevamente. Y así sucesivamente hasta que la condición se vuelva falsa.

Si la condición es siempre verdadera , entonces el programa nunca dejará de ejecutarse. Estará permanentemente atascado en el bucle.

Si la condición es falsa la primera vez que se comprueba , el cuerpo del bucle no se ejecutará ni una sola vez.


3. Ejemplos de bucles

Estos son algunos ejemplos prácticos de bucles en acción.

Código Explicación
int n = 5;
while (n > 0)
{
   System.out.println(n);
   n--;
}
Se mostrarán 5 líneas en la pantalla:
5
4
3
2
1
Código Explicación
int  n = 0;
while (n < 10)
{
   System.out.println(n);
   n++;
}
Se mostrarán 10 líneas en la pantalla:
0
1
...
8
9
Código Explicación
Scanner console = new Scanner(System.in);
while(console.hasNextInt())
{
   int x = console.nextInt();
} 
El programa lee números del teclado siempre que se ingresen números.
Código Explicación
while (true)
   System.out.println("C");
El programa imprimirá infinitamente la letra Cen la pantalla.
Código Explicación
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
El programa leerá líneas del teclado.

hasta que exitse ingrese.

En el ejemplo anterior, el equals()método se usa para comparar cadenas. Si las cadenas son iguales, la función devolverá true. Si las cadenas no son iguales, devolverá false.



4. Bucle dentro de un bucle

A medida que aprendió sobre las declaraciones condicionales, vio que puede usarlas para implementar una lógica compleja combinando varias declaraciones condicionales. En otras palabras, mediante el uso de una ifdeclaración dentro de una ifdeclaración.

Puedes hacer lo mismo con los bucles. Para escribir un ciclo dentro de un ciclo, debe escribir el segundo ciclo dentro del cuerpo del primer ciclo. Se verá algo como esto:

while (condition for outer loop)
{
   while (condition for inner loop)
   {
     block of statements
   }
}
whilebucle (con un bloque de sentencias ) dentro de otro whilebucle

Veamos tres tareas.

Tarea 1 . Digamos que queremos escribir un programa que muestre la palabra Momen la pantalla 4 veces. Un bucle es exactamente lo que necesitamos. Y nuestro código se verá así:

Código Explicación
int  n = 0;
while (n < 4)
{
   System.out.println("Mom");
   n++;
}
Se mostrarán 4 líneas en la pantalla:
Mom
Mom
Mom
Mom

Tarea 2 . Queremos escribir un programa que muestre 5 letras Aen una sola línea. Para hacer esto, necesitamos un bucle una vez más. Así es como se verá el código:

Código Explicación
int n = 0;
while (n < 5)
{
   System.out.print("A");
   n++;
}
En lugar de println(), usaremos print(). De lo contrario, cada letra A terminaría en una línea separada.

La salida de pantalla será:
AAAAA

Tarea 3 . Queremos mostrar un rectángulo compuesto por la letra As. El rectángulo debe constar de 4 filas por 5 columnas. Para lograr esto, ahora necesitamos un bucle anidado. Simplemente tomaremos nuestro primer ejemplo (aquel en el que generamos 4 líneas) y reemplazaremos el código para generar una línea con el código del segundo ejemplo.

Código Explicación
int n = 0;

while (n < 4) { int m = 0;
while (m < 5) { System.out.print("A"); m++; }
System.out.println(); n++; }
 
El lazo exterior es morado. Utiliza la nvariable para contar el número de iteraciones del bucle.

El lazo interior es verde. Utiliza la mvariable para contar el número de iteraciones del bucle.

Tenemos que mover explícitamente el cursor a la siguiente línea después de que se complete el ciclo interno. De lo contrario, todas las letras que imprime el programa terminarán en una sola línea.

La salida de pantalla será:
AAAAA
AAAAA
AAAAA
AAAAA

Los bucles exterior e interior deben utilizar diferentes variables para contar el número de iteraciones del bucle. También tuvimos que agregar el System.out.println()comando después del ciclo interno, ya que ese ciclo muestra la letra As en la misma línea. Una vez que se muestran las letras en una línea, alguien tiene que mover el cursor a una nueva línea.



5. Comparación de bucles Java vs Pascal

Muchos de ustedes estudiaron Pascal en la escuela secundaria. Para facilitarle la comprensión del material aquí, eche un vistazo a esta comparación de whilebucles escritos en Pascal y Java. Si no conoces a Pascal, salta esta parte.

Pascal Java
i := 3;
While i >= 0 Do
   Begin
      WriteLn(i);
      i := i - 1;
   End;
int i = 3;
while (i >= 0)
{
   System.out.println(i);
   i--;
}
i := 0;
While i < 3 Do
   Begin
      WriteLn(i);
      i := i + 1;
   End;
int i = 0;
while (i < 3)
{
   System.out.println(i);
   i++;
}
IsExit := False;
While Not isExit Do
   Begin
      ReadLn(s);
      isExit :=  (s = 'exit');
   End;
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
While True Do
   WriteLn('C');
while (true)
   System.out.println("C");
While True Do
   Begin
     ReadLn(s);
     If s = 'exit' Then
       Break;
   End;
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}