Ao terminar esta aula, você vai conseguir
- Declarar início, condição e avanço de um laço
- Diferenciar contador de acumulador
- Tratar lista vazia antes da divisão
Laço repete um trecho enquanto uma condição permite. Contador registra quantas voltas ocorreram; acumulador guarda um resultado parcial que precisa sobreviver entre elas. Nesta aula, você vai prever a repetição antes de executar e calcular a média de cinco notas.
Pense numa pessoa conferindo itens de uma fila. Ela começa no primeiro, pergunta se ainda há item, processa e avança. A analogia termina porque um laço pode percorrer dados sem fila física e pode alterar vários estados. Guarde somente as três perguntas: onde começa, até quando e de quanto em quanto.
Escreva as três respostas no pseudocódigo
Antes do JavaScript, declare estado e parada:
RECEBER lista de notas
SE lista estiver vazia
INFORMAR erro
SENÃO
SOMA recebe 0
CONTADOR recebe 0
PARA CADA NOTA da lista
SOMA recebe SOMA mais NOTA
CONTADOR recebe CONTADOR mais 1
FIM PARA
MÉDIA recebe SOMA dividido por CONTADOR
INFORMAR MÉDIA
FIM SEO acumulador começa em zero porque somar zero não altera a primeira nota. O contador também começa em zero porque nenhuma ocorrência foi processada. A divisão fica depois do laço, quando os dois valores estão completos.
Traduza e conte as voltas
const notas = [7, 8, 9, 6, 10];
let soma = 0;
let contador = 0;
for (const nota of notas) {
soma += nota;
contador += 1;
}
console.log({ soma, contador, media: soma / contador });No Node v26.3.0, a saída é { soma: 40, contador: 5, media: 8 }. A conta pode ser verificada sem código: quarenta dividido por cinco é oito.
for...of entrega cada valor. Quando a posição participa da regra, use um contador explícito ou um laço por índice. A escolha deve tornar o estado visível, não apenas encurtar sintaxe.
Reconheça dois erros diferentes
Se soma = 0 ficar dentro do corpo, cada volta apaga a anterior e o resultado final contém somente a última nota. Se o incremento de um while faltar, a condição recebe sempre o mesmo estado e o laço pode não terminar.
Não reproduza laço infinito sem proteção. Acrescente temporariamente um limite de diagnóstico, observe que o estado não se aproxima do fim e corrija a mudança real. O fusível ajuda a investigar; ele não substitui uma condição de parada bem formada.
Lista vazia produz divisão zero por zero e o JavaScript devolve NaN. Decida o contrato: nesta aula, lançamos RangeError. Outro produto poderia retornar null, mas a escolha precisa ser explícita e testada.
No laboratório, acompanhe soma e contador depois de cada nota. Depois mova a inicialização da soma para dentro do laço e observe o defeito. Desfaça a mudança e teste lista vazia. Aprender inclui reconhecer a assinatura do erro, não só manter a versão correta na tela.
Na missão, a tabuada deve produzir sete, quatorze e assim por diante até setenta. Antes de rodar, anote que começa em um, continua enquanto o contador não passou de dez e avança um. O critério é dez voltas, não onze. Na próxima aula, a repetição percorrerá vetores e cada parte ganhará uma função.
Laboratório ao vivo
Média rastreada volta por volta
Leia o pseudocódigo comentado, execute o rastreio e troque as notas. Mantenha soma e contador fora do laço e valide a lista vazia.
Pare e pense
Onde o acumulador da soma deve ser inicializado?
O acumulador é estado que atravessa as voltas. Reiniciá-lo dentro do corpo apaga todas as notas anteriores.
Faça sem copiar
Gere a tabuada do 7 de um a dez, preveja primeiro e último resultado e confirme que o contador executa exatamente dez voltas.
Fontes para consultar
Terminou a missão?
Marque apenas quando você conseguir explicar o conceito e concluir o desafio. O progresso fica salvo somente neste navegador.
Próxima: Organize listas e decomponha a solução em funções →