JavaRush /Blog Java /Random-ES /Para bucle en Java

Para bucle en Java

Publicado en el grupo Random-ES
Dicen que el mejor programador es un programador vago. En lugar de realizar el mismo tipo de acciones varias veces, ideará un algoritmo que hará el trabajo por él. Y lo hará bien para que no sea necesario rehacerlo. Cómo usar el bucle for en Java - 1Para evitar escribir el mismo código una y otra vez, se inventaron los bucles. Imaginemos que necesitamos mostrar en la consola números del 0 al 99. Código sin bucle:
System.out.println(0);
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
// Etcétera
¡Este código ocupará 100 líneas! Tantos. Y así es como se vería con un bucle:
for(int i = 0; i < 100; i++) {
   System.out.println(i);
}
¡Solo 3 líneas!

¿Qué son los bucles for?

Un bucle for es una estructura de control de código de programa que rompe la linealidad de ejecución del algoritmo y permite ejecutar el código especificado muchas veces. Por ejemplo, necesitas tomar 30 gotas de medicamento. El algoritmo será algo como esto:
  1. Prepara un vaso.
  2. Abre la tapa.
  3. Consigue 1 gota.
  4. Consigue 2 gotas.
  5. ...
  6. Consigue 30 gotas.
  7. Cierra el medicamento.
  8. Toma la porción recibida.
Este algoritmo se puede explicar mucho más rápidamente:
  1. Prepara un vaso.
  2. Abra la tapa de goteo.
  3. Consigue 30 gotas.
  4. Cierra el medicamento.
  5. Toma la porción recibida.
Usamos el bucle for casi todos los días en conversaciones con otras personas: “...20 pasos calle abajo...”, “...haz 10 repeticiones y otras 5 a 2 veces más lento...”, “.. .hacer 5 compras en varias categorías y obtener un premio…” Podría seguir por mucho tiempo, pero el significado es claro. En Java, el bucle for es necesario para mantener el código breve y conciso.

Cómo funciona el bucle for

El bucle for se utiliza así:
for(<начальная точка>; <condición выхода>; <операторы счетчика>) {
	// cuerpo del bucle
}
Пример перебора цифр от 0 до 5 и вывод каждой в консоль:
for(int i = 0; i < 5; i++) {
   System.out.println(i);
}
Conclusión:

0
1
2
3
4
Si traducimos esta entrada al lenguaje humano, obtenemos lo siguiente: “ Crea una variable i con un valor inicial de 0, hasta llegar a 5, súmale 1 y en cada paso escribe el valor de i en la consola ”. El bucle for en Java se basa en tres etapas, que se pueden representar mediante el siguiente diagrama: Cómo utilizar un bucle for en Java - 2La condición para salir del bucle es una expresión booleana. Si es falso, el ciclo finalizará. En el ejemplo anterior, la variable ise incrementa en 1. Si su valor es menor que 5, el ciclo continúa. Pero tan pronto como isea mayor o igual a 5, el ciclo se detendrá. El operador contador es una expresión que realiza una conversión en una variable contador. En el ejemplo anterior, la variable ise incrementó en 1. Es decir, el ciclo se ejecutará exactamente 5 veces. Si el operador del contador suma 2 a la variable i, el resultado será diferente:
for(int i = 0; i < 5; i = i + 2) {
   System.out.println(i);
}
Conclusión:

0
2
4
También puedes multiplicar una variable, dividir, elevar a una potencia, en general, hacer lo que quieras. Lo principal es que la transformación da como resultado un número. El cuerpo del bucle es cualquier código que se pueda ejecutar. En el ejemplo anterior, el cuerpo del bucle enviaba el valor de la variable i a la consola, pero el contenido de este cuerpo está limitado por la tarea y la imaginación. Resumiendo todo el esquema, el principio de este bucle for es el siguiente: el código que está en el cuerpo del bucle se ejecutará tantas veces como el número de conversiones que realizará el operador del contador antes de que se alcance la condición de salida del bucle. Si configura la condición de salida del bucle como true:
for(int i = 0; true; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
Entonces el código después del bucle se marcará con un error unreachable statement, ya que nunca se ejecutará. Un desafío para el ingenio: como resultado de ejecutar el siguiente código, ¿se Loop endedenviará " " a la consola o el bucle se ejecutará sin cesar?
for(int i = 0; i > -1; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
Respuesta: lo habrá. La variable i tarde o temprano alcanzará su valor máximo, y un mayor aumento la convertirá en un valor máximo negativo, como resultado de lo cual se cumplirá la condición de salida (i < = -1).

para cada bucle

Cuando se trabaja con bucles, a veces es necesario iterar sobre matrices o colecciones. Normalmente puedes iterar a través de una matriz usando un bucle for:
public void printAllElements(String[] stringArray) {
   for(int i = 0; i < stringArray.length; i++) {
       System.out.println(stringArray[i]);
   }
}
Y es correcto. Sin embargo, para recorrer todos los elementos de la matriz uno por uno, se les ocurrió la construcción forEach. Su firma es la siguiente:
for(<Тип elemento> <Nombre переменной, куда будет записан очередной элемент> : <Название массива>) {
	// cuerpo del bucle
}
Puede iterar a través de una serie de cadenas e imprimir cada una en la consola de la siguiente manera:
public void printAllElements(String[] stringArray) {
   for(String s : stringArray) {
       System.out.println(s);
   }
}
También breve y conciso. Lo más importante es que no es necesario pensar en el contador ni en las condiciones de salida, todo ya está hecho por nosotros.

Cómo se utilizan los bucles for

Ahora veamos algunos ejemplos del uso del bucle for en Java para resolver varios problemas.

Ciclo inverso (de mayor a menor)

for(int i = 5; i > 0; i--) {
   System.out.println(i);
}
Conclusión:

5
4
3
2
1

Varias variables e incrementando el contador en el cuerpo del bucle.

Puede utilizar varias variables en un bucle for; por ejemplo, se pueden convertir en una declaración de contador:
int a = 0;
for(int i = 5; i > 0; i--, a++) {
   System.out.print("Paso: " + a + " Significado: ");
   System.out.println(i);
}
Conclusión:

Шаг: 0 Значение: 5
Шаг: 1 Значение: 4
Шаг: 2 Значение: 3
Шаг: 3 Значение: 2
Шаг: 4 Значение: 1
O declare dos variables y realice un bucle hasta que sean iguales entre sí:
for(int i = 5, j = 11; i != j; i++, j--) {
   System.out.println("i: " + i + " j: " + j);
}
Conclusión:

i: 5 j: 11
i: 6 j: 10
i: 7 j: 9
Es poco probable que esta acción tenga algún valor, pero es útil conocer esta posibilidad. También puedes crear bucles internos dentro de un bucle for. En este caso, se multiplicará el número de pasos del bucle:
for(int i = 0; i < 5; i++) {
   System.out.print(i + " | ");
   for(int j = 0; j < 5; j++) {
       System.out.print(j + " ");
   }
   System.out.print('\n');
}
Conclusión:

0 | 0 1 2 3 4 
1 | 0 1 2 3 4 
2 | 0 1 2 3 4 
3 | 0 1 2 3 4 
4 | 0 1 2 3 4
En un bucle de contador, jes posible acceder al contador del bucle exterior. Esto hace que los bucles anidados sean una forma ideal de atravesar matrices bidimensionales, tridimensionales y de otro tipo:
int[][] array = { {0, 1, 2, 3, 4 },
                       {1, 2, 3, 4, 5},
                       {2, 3, 4, 5, 6},
                       {3, 4, 5, 6, 7}};

for(int i = 0; i < array.length; i++) {
   for(int j = 0; j < array[i].length; j++) {
       System.out.print(array[i][j] + " ");
   }
   System.out.print('\n');
}
Conclusión:

0 1 2 3 4 
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 

Finalización anticipada del ciclo.

Si necesita interrumpir un bucle mientras lo procesa, utilice el operador break, que detiene el cuerpo actual del bucle. También se omiten todas las iteraciones posteriores:
public void getFirstPosition(String[] stringArray, String element) {
   for (int i = 0; i < stringArray.length; i++) {
       if(stringArray[i].equals(element)) {
           System.out.println(i);
           break;
       }
   }
}
El método imprimirá la posición del primer elemento buscado en la matriz:
String[] array = {"one", "two", "three", "Jeronimo"};
getFirstPosition(array, "two");
Conclusión:

1

ciclo sin fin

Otra forma de crear un bucle for infinito es dejar vacíos el área de declaración del contador, la condición de salida y la declaración del contador:
for (;;) {
}
Pero tenga en cuenta que en la mayoría de los casos un bucle infinito es evidencia de un error lógico. Un bucle de este tipo debe tener una condición de salida. Cómo utilizar un bucle for en Java - 3
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION