JavaRush /Blogue Java /Random-PT /Loop For em Java

Loop For em Java

Publicado no grupo Random-PT
Dizem que o melhor programador é um programador preguiçoso. Em vez de realizar o mesmo tipo de ação várias vezes, ele criará um algoritmo que fará o trabalho por ele. E ele fará bem para que não haja necessidade de refazer. Como usar o loop for em Java - 1Para evitar escrever o mesmo código repetidamente, foram inventados loops. Vamos imaginar que precisamos exibir no console números de 0 a 99. Código sem loop:
System.out.println(0);
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
// And so on
Este código levará 100 linhas! Muitos. E aqui está como seria com um loop:
for(int i = 0; i < 100; i++) {
   System.out.println(i);
}
Apenas 3 linhas!

O que são loops for?

Um loop for é uma estrutura de controle do código do programa que quebra a linearidade da execução do algoritmo e permite executar o código especificado muitas vezes. Por exemplo, você precisa tomar 30 gotas de remédio. O algoritmo será mais ou menos assim:
  1. Prepare um copo.
  2. Abra a tampa.
  3. Obtenha 1 gota.
  4. Obtenha 2 gotas.
  5. ...
  6. Obtenha 30 gotas.
  7. Feche o remédio.
  8. Pegue a porção recebida.
Este algoritmo pode ser explicado muito mais rapidamente:
  1. Prepare um copo.
  2. Abra a tampa anti-gotejamento.
  3. Obtenha 30 gotas.
  4. Feche o remédio.
  5. Pegue a porção recebida.
Usamos o loop for quase todos os dias em conversas com outras pessoas: “...20 passos rua abaixo...”, “...faça 10 repetições e outras 5 2 vezes mais devagar...”, “.. .faça 5 compras em diversas categorias e ganhe um prêmio…” Eu poderia continuar por muito tempo, mas o significado é claro. Em Java, o loop for é essencial para manter seu código curto e conciso.

Como funciona o loop for

Um loop for é usado assim:
for(<начальная точка>; <condition выхода>; <операторы счетчика>) {
	// Loop body
}
Пример перебора цифр от 0 до 5 и вывод каждой в консоль:
for(int i = 0; i < 5; i++) {
   System.out.println(i);
}
Conclusão:

0
1
2
3
4
Se traduzirmos esta entrada para a linguagem humana, obteremos o seguinte: “ Crie uma variável i com valor inicial de 0, até chegar a 5, adicione 1 a ela e a cada passo escreva o valor de i no console .” O loop for em Java é baseado em três estágios, que podem ser representados pelo seguinte diagrama: Como usar um loop for em Java - 2A condição para sair do loop é uma expressão booleana. Se for falso, o loop terminará. No exemplo acima, a variável ié incrementada em 1. Se seu valor for menor que 5, o loop continua. Mas assim que ifor maior ou igual a 5, o ciclo irá parar. O operador contador é uma expressão que realiza uma conversão em uma variável contadora. No exemplo acima, a variável ifoi aumentada em 1. Ou seja, o loop será executado exatamente 5 vezes. Se o operador contador adicionar 2 à variável i, o resultado será diferente:
for(int i = 0; i < 5; i = i + 2) {
   System.out.println(i);
}
Conclusão:

0
2
4
Você também pode multiplicar uma variável, dividir, elevar a uma potência, em geral, fazer o que quiser. O principal é que a transformação resulte em um número. O corpo do loop é qualquer código que possa ser executado. No exemplo acima, o corpo do loop estava emitindo o valor da variável i para o console, mas o conteúdo desse corpo é limitado pela tarefa e pela imaginação. Resumindo todo o esquema, o princípio deste loop for é o seguinte: o código que está no corpo do loop será executado tantas vezes quanto o número de conversões que o operador contador realizará antes que a condição de saída do loop seja atingida. Se você definir a condição de saída do loop como true:
for(int i = 0; true; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
Então o código após o loop será marcado com um erro unreachable statement, pois nunca será executado. Um desafio para a engenhosidade: como resultado da execução do código abaixo, “ Loop ended” será enviado para o console ou o loop será executado indefinidamente?
for(int i = 0; i > -1; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
Resposta: haverá. A variável i, mais cedo ou mais tarde, atingirá seu valor máximo, e um aumento adicional o transformará em um valor máximo negativo, como resultado a condição de saída será satisfeita (i < = -1).

forEach loop

Ao trabalhar com loops, às vezes você precisa iterar em arrays ou coleções. Normalmente você pode iterar através de um array usando um loop for:
public void printAllElements(String[] stringArray) {
   for(int i = 0; i < stringArray.length; i++) {
       System.out.println(stringArray[i]);
   }
}
E está certo. No entanto, para iterar todos os elementos do array, um por um, eles criaram a construção forEach. Sua assinatura é a seguinte:
for(<Тип element> <Name переменной, куда будет записан очередной элемент> : <Название массива>) {
	// Loop body
}
Você pode percorrer uma matriz de strings e imprimir cada uma delas no console da seguinte maneira:
public void printAllElements(String[] stringArray) {
   for(String s : stringArray) {
       System.out.println(s);
   }
}
Também curto e conciso. O mais importante é que não há necessidade de pensar no contador e nas condições de saída, tudo já está feito para nós.

Como os loops for são usados

Agora vamos ver alguns exemplos de uso do loop for em Java para resolver vários problemas.

Ciclo reverso (do maior para o menor)

for(int i = 5; i > 0; i--) {
   System.out.println(i);
}
Conclusão:

5
4
3
2
1

Diversas variáveis ​​e incrementando o contador no corpo do loop

Você pode usar múltiplas variáveis ​​em um loop for, por exemplo, elas podem ser convertidas em uma instrução counter:
int a = 0;
for(int i = 5; i > 0; i--, a++) {
   System.out.print("Step: " + a + " Meaning: ");
   System.out.println(i);
}
Conclusão:

Шаг: 0 Значение: 5
Шаг: 1 Значение: 4
Шаг: 2 Значение: 3
Шаг: 3 Значение: 2
Шаг: 4 Значение: 1
Ou declare duas variáveis ​​e faça um loop até que sejam iguais:
for(int i = 5, j = 11; i != j; i++, j--) {
   System.out.println("i: " + i + " j: " + j);
}
Conclusão:

i: 5 j: 11
i: 6 j: 10
i: 7 j: 9
É improvável que esta ação tenha algum valor, mas é útil conhecer esta possibilidade. Você também pode criar loops internos dentro de um loop for. Neste caso, o número de etapas do loop será multiplicado:
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');
}
Conclusão:

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
Num loop contador, jé possível acessar o contador do loop externo. Isso torna os loops aninhados uma maneira ideal de percorrer matrizes bidimensionais, tridimensionais e outras:
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');
}
Conclusão:

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

Conclusão antecipada do ciclo

Se você precisar interromper um loop durante o processamento de um loop, use o operador break, que interrompe o corpo atual do loop. Todas as iterações subsequentes também são ignoradas:
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;
       }
   }
}
O método imprimirá a posição do primeiro elemento pesquisado no array:
String[] array = {"one", "two", "three", "Jeronimo"};
getFirstPosition(array, "two");
Conclusão:

1

Ciclo sem fim

Outra maneira de criar um loop for infinito é deixar a área de declaração do contador, a condição de saída e a instrução do contador vazias:
for (;;) {
}
Mas tenha em mente que na maioria dos casos um loop infinito é evidência de um erro lógico. Esse loop deve ter uma condição de saída. Como usar um loop for em Java - 3
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION