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. while
loop
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.for
for-each
do-while
Um while
loop é 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 while
loop se parece com isso:
while (condition)
statement;
while (condition)
{
block of statements
}
É 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 |
---|---|
|
5 linhas serão exibidas na tela:
|
Código | Explicação |
---|---|
|
10 linhas serão exibidas na tela:
|
Código | Explicação |
---|---|
|
O programa lê os números do teclado, desde que os números sejam inseridos. |
Código | Explicação |
---|---|
|
O programa imprimirá infinitamente a carta C na tela. |
Código | Explicação |
---|---|
|
O programa lerá as linhas do teclado
até que |
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 if
instrução dentro de uma if
instruçã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
}
}
Vejamos três tarefas.
Tarefa 1 . Digamos que queremos escrever um programa que exiba a palavra Mom
na tela 4 vezes. Um loop é exatamente o que precisamos. E nosso código ficará mais ou menos assim:
Código | Explicação |
---|---|
|
4 linhas serão exibidas na tela:
|
Tarefa 2 . Queremos escrever um programa que exiba 5 letras A
s em uma única linha. Para fazer isso, precisamos de um loop novamente. É assim que o código ficará:
Código | Explicação |
---|---|
|
Em vez de println() , usaremos print() . Caso contrário, cada letra A terminaria em uma linha separada. A saída da tela será:
|
Tarefa 3 . Queremos exibir um retângulo composto pela letra A
s. 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 |
---|---|
|
O loop externo é roxo. Ele usa a n variável para contar o número de iterações do loop. O loop interno é verde. Ele usa a m variá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á:
|
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 A
s 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 while
loops escritos em Pascal e Java. Se você não conhece Pascal, pule esta parte.
Pascal | Java |
---|---|
|
|
|
|
|
|
|
|
|
|
GO TO FULL VERSION