1. Laços em nossa vida

Muitas vezes, nossas vidas exigem que executemos as mesmas ações várias vezes. Por exemplo, suponha que eu precise digitalizar um documento com várias páginas. Que repetimos o mesmo procedimento várias vezes:

  • Coloque a primeira página no scanner
  • Pressione o botão de digitalização
  • Coloque a próxima página no scanner

Isso é difícil de fazer manualmente. Seria bom se esse processo pudesse ser de alguma forma automatizado.

Ou considere outro exemplo: digamos que eu queira marcar todos os e-mails não lidos na minha caixa de entrada como spam. Antigamente, eu tinha que selecionar um e-mail de cada vez e marcá-lo como spam.

Mas os programadores são preguiçosos, então eles automatizaram esse processo há muito tempo: agora você simplesmente seleciona qualquer lista de letras e clica em "marcar como spam" e, em seguida, seu cliente de e-mail percorre a lista e move cada e-mail para a pasta de spam.

O que podemos dizer aqui? É super conveniente quando um computador ou programa pode executar centenas ou milhares de operações monótonas com um clique. E agora você aprenderá como fazer isso também.


2. whileloop

A instrução if-else expandiu significativamente nossos recursos de programação, tornando possível escrever programas que executam diferentes ações em diferentes situações. Mas há mais uma coisa que tornará nossos programas muito mais poderosos — loops .

Java tem 4 tipos de loops : while, e . Agora vamos nos aprofundar no primeiro deles.forfor-eachdo-while

Um whileloop é muito simples. Consiste em apenas duas partes: uma condição e um corpo de loop . O corpo do loop é executado continuamente enquanto a condição for true. Em geral, um whileloop se parece com isso:

while (condition)
   statement;
Notação para um whileloop com uma única instrução
while (condition)
{
   block of statements
}
Notação para um whileloop com um bloco de instruções

É muito simples. A instrução ou bloco de instruções é executado continuamente, desde que a condição do loop seja igual a true.

É assim que funciona: primeiro, a condição é verificada. Se for verdadeiro, o corpo do loop é executado (a instrução ou bloco de instruções ). Em seguida, a condição é verificada novamente e o corpo do loop é executado novamente. E assim por diante até que a condição se torne falsa.

Se a condição for sempre verdadeira , o programa nunca parará de ser executado. Ele ficará permanentemente preso no loop.

Se a condição for falsa na primeira vez em que for verificada , o corpo do loop não será executado nem uma vez.


3. Exemplos de loops

Aqui estão alguns exemplos práticos de loops em ação.

Código Explicação
int n = 5;
while (n > 0)
{
   System.out.println(n);
   n--;
}
5 linhas serão exibidas na tela:
5
4
3
2
1
Código Explicação
int  n = 0;
while (n < 10)
{
   System.out.println(n);
   n++;
}
10 linhas serão exibidas na tela:
0
1
...
8
9
Código Explicação
Scanner console = new Scanner(System.in);
while(console.hasNextInt())
{
   int x = console.nextInt();
} 
O programa lê os números do teclado, desde que os números sejam inseridos.
Código Explicação
while (true)
   System.out.println("C");
O programa imprimirá infinitamente a carta Cna tela.
Código Explicação
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
O programa lerá as linhas do teclado

até que exitseja inserido.

No exemplo anterior, o equals()método é usado para comparar strings. Se as strings forem iguais, a função retornará true. Se as strings não forem iguais, ele retornará false.



4. Loop dentro de um loop

Ao aprender sobre instruções condicionais, você viu que pode usá-las para implementar lógica complexa combinando várias instruções condicionais. Em outras palavras, usando uma ifinstrução dentro de uma ifinstrução.

Você pode fazer a mesma coisa com loops. Para escrever um loop dentro de um loop, você precisa escrever o segundo loop dentro do corpo do primeiro loop. Vai parecer algo assim:

while (condition for outer loop)
{
   while (condition for inner loop)
   {
     block of statements
   }
}
whileloop (com um bloco de instruções ) dentro de outro whileloop

Vejamos três tarefas.

Tarefa 1 . Digamos que queremos escrever um programa que exiba a palavra Momna tela 4 vezes. Um loop é exatamente o que precisamos. E nosso código ficará mais ou menos assim:

Código Explicação
int  n = 0;
while (n < 4)
{
   System.out.println("Mom");
   n++;
}
4 linhas serão exibidas na tela:
Mom
Mom
Mom
Mom

Tarefa 2 . Queremos escrever um programa que exiba 5 letras As em uma única linha. Para fazer isso, precisamos de um loop novamente. É assim que o código ficará:

Código Explicação
int n = 0;
while (n < 5)
{
   System.out.print("A");
   n++;
}
Em vez de println(), usaremos print(). Caso contrário, cada letra A terminaria em uma linha separada.

A saída da tela será:
AAAAA

Tarefa 3 . Queremos exibir um retângulo composto pela letra As. O retângulo deve consistir em 4 linhas por 5 colunas. Para fazer isso, agora precisamos de um loop aninhado. Simplesmente pegaremos nosso primeiro exemplo (aquele em que exibimos 4 linhas) e substituiremos o código de saída de uma linha pelo código do segundo exemplo.

Código Explicação
int n = 0;

while (n < 4) { int m = 0;
while (m < 5) { System.out.print("A"); m++; }
System.out.println(); n++; }
 
O loop externo é roxo. Ele usa a nvariável para contar o número de iterações do loop.

O loop interno é verde. Ele usa a mvariável para contar o número de iterações do loop.

Temos que mover explicitamente o cursor para a próxima linha após a conclusão do loop interno. Caso contrário, todas as letras que o programa imprime terminarão em uma linha.

A saída da tela será:
AAAAA
AAAAA
AAAAA
AAAAA

Os loops externos e internos devem usar variáveis ​​diferentes para contar o número de iterações do loop. Também tivemos que adicionar o System.out.println()comando após o loop interno, pois esse loop exibe a letra As na mesma linha. Depois que as letras em uma linha são exibidas, alguém precisa mover o cursor para uma nova linha.



5. Comparando loops Java vs Pascal

Muitos de vocês estudaram Pascal no ensino médio. Para facilitar a compreensão do material aqui, dê uma olhada nesta comparação de whileloops escritos em Pascal e Java. Se você não conhece Pascal, pule 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;
}