Pular para o conteúdo
Cursos

DevClub

LógicaFront-endBack-endMobile

IA Club

IA na prática
Estudar programaçãoEstudar IA

Aula 4 de 6

Repita com laços, contadores e acumuladores

Planeje início, condição e passo, conte voltas e calcule médias sem reiniciar o acumulador nem criar repetição infinita.

30 minutos · leitura + prática · nível iniciante

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:

text
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 SE

O 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

js
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.

Pronto para testar
Resultado

Pare e pense

Onde o acumulador da soma deve ser inicializado?

Escolha uma resposta
Missão da aula

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 →