edubun
Português

Laços: for e while

Somar à mão os números inteiros de 1 a 100 leva um tempo. Um laço for de três linhas faz isso na hora e mostra 5050.

Fazendo a mesma coisa muitas vezes

Mostrar os números de 1 a 5 com cinco linhas de console.log tudo bem. Mostrar de 1 a 1000 desse jeito, não. Um laço executa o mesmo bloco de código de novo e de novo, mudando um pouco a cada vez, até que uma condição mande parar. É nos laços que os computadores mostram para que servem: nunca se cansam e nunca perdem a conta.

O laço for

for (let i = 1; i <= 5; i++) {
  console.log(i);
}
// mostra 1, 2, 3, 4, 5 em linhas separadas

Os parênteses depois de for guardam três partes separadas por ponto e vírgula. A primeira, let i = 1, roda uma vez antes de o laço começar e cria uma variável contadora. A segunda, i <= 5, é a condição, conferida antes de cada volta; quando ela fica false, o laço termina. A terceira, i++, roda depois de cada volta e faz o contador avançar. Uma passada pelo bloco se chama iteração. Acompanhe: i é 1, a condição é true, 1 aparece, i vira 2, e assim por diante até i virar 6, a condição dar false e o programa continuar depois da chave de fechamento.

O contador costuma se chamar i, uma tradição da matemática, mas qualquer nome serve. Você também pode contar em outros passos: for (let i = 10; i >= 0; i -= 2) conta para trás 10, 8, 6, 4, 2, 0.

Acumulando um total

O padrão de laço mais comum é o acumulador. Crie uma variável antes do laço, atualize-a dentro e use-a depois. Aqui está a soma da abertura:

let sum = 0;
for (let i = 1; i <= 100; i++) {
  sum += i;
}
console.log(sum);   // mostra 5050

Repare onde cada linha fica. Se let sum = 0 estivesse dentro do laço, sum voltaria a zero a cada iteração. Se o console.log estivesse dentro, ele mostraria 100 totais parciais em vez de uma resposta. O antes e o depois do laço são tão importantes quanto o próprio laço.

O laço while

Um laço while tem só uma condição. Ele continua executando o bloco enquanto a condição for true. Use-o quando você não sabe de antemão quantas voltas vai precisar, como ao dobrar um número até ele passar de 1000.

let n = 1;
let steps = 0;
while (n <= 1000) {
  n *= 2;
  steps++;
}
console.log(n, steps);   // mostra 1024 10

Alguma coisa dentro de um laço while precisa, em algum momento, deixar a condição false. Se você esquecer a linha que muda n, a condição fica true para sempre. Isso é um laço infinito, e a página trava. Se acontecer numa caixa de prática, recarregue a página e corrija o código. No laço for, a atualização fica escrita no cabeçalho, o que torna esse erro mais raro.

break e continue

Duas palavras-chave mudam o fluxo dentro de um laço. break sai do laço na hora. continue pula o resto da iteração atual e vai para a próxima. Por exemplo, um laço de 1 a 10 com if (i % 3 === 0) continue; no começo mostra todos os números menos 3, 6 e 9.

Exemplo resolvido. Quantos números de 1 a 50 são múltiplos de 7? Comece com let count = 0, faça i ir de 1 a 50 e escreva dentro if (i % 7 === 0) count++;. Depois do laço, count vale 7: são 7, 14, 21, 28, 35, 42 e 49.

for (início; condição; atualização) { corpo } for (let i = 1; i <= 5; i++)

laçoCódigo que executa um bloco de novo e de novo
iteraçãoUma passada pelo corpo do laço
contadorA variável que conta as voltas, muitas vezes i
acumuladorUma variável que vai sendo construída dentro de um laço, como sum
whileRepete enquanto uma condição for true
laço infinitoUm laço cuja condição nunca fica false
breakSair do laço agora
continuePular para a próxima iteração
  1. Quantas linhas isto mostra?
    for (let i = 0; i < 4; i++) {
      console.log(i);
    }
  2. Qual é o último número mostrado?
    for (let i = 0; i < 4; i++) {
      console.log(i);
    }
  3. O que isto mostra?
    let total = 0;
    for (let i = 1; i <= 4; i++) {
      total += i;
    }
    console.log(total);
  4. O que isto mostra?
    let p = 1;
    for (let i = 1; i <= 5; i++) {
      p *= 2;
    }
    console.log(p);
  5. O que isto mostra?
    let n = 10;
    while (n > 3) {
      n -= 3;
    }
    console.log(n);
  6. Quantas linhas isto mostra?
    for (let i = 10; i >= 0; i -= 2) {
      console.log(i);
    }
  7. O que isto mostra?
    for (let i = 1; i <= 10; i++) {
      if (i === 4) break;
      console.log(i);
    }
    • 1 2 3 on separate lines
    • 1 to 10 except 4
    • 1 2 3 4 on separate lines
  8. Quantas linhas isto mostra?
    for (let i = 1; i <= 10; i++) {
      if (i % 2 === 0) continue;
      console.log(i);
    }
  9. O que há de errado com este laço?
    let i = 0;
    while (i < 5) {
      console.log(i);
    }
    • Nada
    • i nunca muda, então ele nunca para
    • Não mostra nada
  10. O que isto mostra?
    let count = 0;
    for (let i = 1; i <= 50; i++) {
      if (i % 7 === 0) count++;
    }
    console.log(count);
Pontos-chave
  • for (início; condição; atualização) { ... } repete enquanto a condição for true.
  • Crie os acumuladores antes do laço, atualize-os dentro e use-os depois.
  • while (condição) { ... } serve para laços com número de voltas desconhecido.
  • Algo precisa deixar a condição false, senão o laço nunca termina.
  • break sai do laço; continue pula para a próxima volta.
Fontes deste curso (2)
  • MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
  • Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)

Data de verificação: 2026-10-17