Repetir até quando: while e a lógica de parar
Nem sempre você sabe, de antemão, quantas vezes repetir algo. Um jogo de adivinhação repete até o jogador acertar, e ninguém sabe em qual tentativa isso vai acontecer.
Estudar esta lição interativa →O for da lição passada é perfeito quando você sabe, de antemão, quantas vezes repetir. Mas muitos problemas reais não funcionam assim: um jogo de adivinhação repete até o jogador acertar, sem saber em qual tentativa isso vai acontecer; um sistema de login tenta de novo até a senha estar certa. Para esses casos, existe o while ("enquanto"): ele repete o bloco enquanto uma condição continuar verdadeira, não importa quantas voltas isso leve.
let tentativas = 0;
while (tentativas < 3) {
console.log("Tentativa " + (tentativas + 1));
tentativas++;
}
console.log("Parou sozinho depois de 3 tentativas.");Rode e observe o laço parar sozinho depois de 3 tentativas.
Repare que a estrutura lembra o if: uma condição entre parênteses, um bloco entre chaves. A diferença é que o while testa a condição de novo a cada volta: enquanto tentativas < 3 for verdade, o bloco roda outra vez. É essencial que alguma coisa dentro do bloco empurre a condição em direção a se tornar falsa, aqui, a linha tentativas++, que soma 1 a cada volta até a condição finalmente falhar.
Pense num while como alguém secando louça "enquanto ainda houver louça na pia", sem saber de antemão quantos pratos vai lavar naquele dia. Já um for é mais como "lave estes 8 pratos específicos", uma quantidade já conhecida antes de começar. A regra prática: se você sabe o número de repetições de antemão, use for; se depende de uma condição que só se resolve durante a execução, use while.
Antes de rodar qualquer while, vale se perguntar: "existe, dentro do bloco, alguma linha que empurra a condição em direção a ficar falsa?" Se a resposta for não, o laço nunca vai parar sozinho.
Se nada dentro do laço empurra a condição para falso, ele roda para sempre, um loop infinito. Nesta plataforma, um código assim é interrompido automaticamente, com um aviso na tela, mas num programa de verdade fora daqui, isso trava a página ou o programa inteiro até alguém encerrar à força. É um dos erros mais sérios da programação, e a causa quase sempre é a mesma: esqueceu de atualizar, dentro do laço, a variável que a condição depende.
let tentativas = 0;
while (tentativas < 3) {
console.log("Tentativa " + (tentativas + 1));
}Adicione tentativas++ dentro do bloco e rode.
valor reais guardados, e o dinheiro dobra a cada dia. Use um while para dobrar valor e somar 1 em dias, repetindo enquanto valor for menor que alvo (quando valor chegar a alvo ou passar dele, o laço para). No fim, dias conta quantas vezes o valor dobrou e valor guarda o total alcançado.let valor = 1;
let alvo = 1000;
let dias = 0;
// escreva aqui o while: enquanto valor for menor que alvo, dobre o valor e conte mais um dia
🧩 Este é um exercício com correção automática — abra no app para completá-lo e verificar.