Bucles (romper y regresar, continuar, etiquetas) - 1

"¡Hola, amigo!"

"Hoy les contaré algunas cosas que son convenientes cuando se trabaja con bucles".

"La primera es la palabra clave break . Si usa este comando en el cuerpo de un bucle, el bucle terminará inmediatamente cuando se ejecute el comando. Aquí hay un ejemplo:"

Ejemplo Producción:
for (int i = 0; i < 10; i++)
{
System.out.println(i);
if (i > 5)
break;
}
0
1
2
3
4
5

"¿Se puede usar break solo en un bucle?"

"Sí. La declaración de ruptura solo se puede usar en un ciclo. Cuando se ejecuta una declaración de ruptura, el ciclo termina inmediatamente".

"Ok lo tengo."

"Genial. Ahora lo segundo que quiero compartir es la palabra clave continuar. También solo se puede usar en un bucle. Cuando se ejecuta este comando, una nueva iteración del bucle comienza inmediatamente. En otras palabras, cualquier código restante en el el cuerpo del bucle simplemente se omite".

"Aquí hay un ejemplo:"

Ejemplo Producción:
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
continue;
System.out.println(i);
}
1
3
5
7
9

"Entonces, una vez que el programa alcanza un comando de continuación en un ciclo, ¿deja de ejecutar el código en el ciclo?"

"No. Mira, tenemos un bucle cuando ejecutamos el mismo código varias veces. En el ejemplo anterior, tenemos un bucle de 0 a 9, es decir, el cuerpo del bucle se ejecutará 10 veces. ¿Verdad?"

"Sí."

"Un paso por el cuerpo del bucle se denomina iteración. Nuestro bucle consta de 10 iteraciones: el cuerpo del bucle se ejecutará diez veces".

"Sí, eso está claro".

"El comando continuar finaliza la iteración actual de forma prematura, es decir, cualquier código restante dentro del bucle se omite y comienza una nueva iteración".

"Aquí hay otro ejemplo:"

Ejemplo
ArrayList list = new ArrayList();
for (Object o: list)
{
if (o == null) continue;
System.out.println(o.toString());
}

"En este ejemplo, mostramos una representación de cadena de todos los objetos en la lista. Pero omitimos cualquier objeto que sea nulo".

"Está bien, lo tengo. Puedo ver lo conveniente que es esto".

"Sí. También quiero contarte sobre las etiquetas. Raramente se usan en Java, porque a menudo violan la belleza de la lógica de un programa. Pero es posible que las encuentres en el código en algún momento. Así que prefiero hablarte sobre ellos que oír hablar de ellos en el patio de recreo".

"Érase una vez que estaba permitido saltar de cualquier línea a cualquier línea en el código. Hicimos esto usando etiquetas y la instrucción goto. Así es como se ve:"

Código horrible con etiquetas
System.out.println("Make cookies,");
label: System.out.println("not");
System.out.println("war");
goto label;

"En este ejemplo, después de ejecutar el comando goto label , el programa salta a la línea marcada label .

"Más tarde, todos se dieron cuenta y decidieron no usar la instrucción goto . Java no es compatible con goto, pero goto es una palabra reservada. No es gran cosa..."

"Entonces, ¿no hay goto ni etiquetas en Java?"

"No hay instrucción goto, ¡pero hay etiquetas!"

"¿Como puede ser?"

"En Java, las etiquetas se pueden usar con los comandos continuar y romper. Se usan cuando tienes muchos bucles anidados".

"Por ejemplo, suponga que tiene 5 bucles anidados y cuando se cumple alguna condición desea salir de tres de ellos, pero no de todos. Las etiquetas son una forma elegante de hacer esto:"

Ejemplo
label1: for (int i = 0; i < 10; i++)
 label2: for (int j = 0; j < 10; j++)
  label3: for (int k =0; k < 10; k++)
   if (i == j && j == k)
    break label2;

"En este ejemplo, cuando se ejecuta la instrucción break, no salimos del bucle con la variable k, sino del bucle etiquetado como etiqueta2, es decir, salimos inmediatamente de los dos bucles con k y j".

"¿Con qué frecuencia se usa eso?"

"Para ser honesto, no a menudo, pero nunca se sabe. Tal vez lo veas en algún momento. Estos son los fundamentos de la sintaxis, ¡necesitas saber todo esto!"

"Está bien. Gracias, Bilaabo".