Ao terminar esta aula, você vai conseguir
- Relacionar quantidade e índices válidos
- Percorrer e buscar valores numa lista
- Decompor uma solução por entrada e retorno
Vetor reúne valores numa sequência; função reúne passos sob um nome e um contrato. Nesta aula, você vai percorrer notas sem sair dos índices válidos e separar validação, cálculo e classificação para testar cada regra isoladamente.
Pense num armário com gavetas numeradas. O vetor é o conjunto, o índice localiza uma gaveta e o valor é o conteúdo. O primeiro índice é zero porque representa deslocamento zero a partir do começo. A analogia termina porque arrays JavaScript crescem, podem ter lacunas e podem misturar tipos.
Planeje lista e funções no papel
Antes da sintaxe, escreva estrutura e responsabilidades:
RECEBER lista de notas
VALIDAR se há notas e se cada uma está entre 0 e 10
SE validação falhar
INFORMAR erro
SENÃO
CALCULAR média percorrendo a lista
CLASSIFICAR a média
INFORMAR média e situação
FIM SEOs verbos VALIDAR, CALCULAR, CLASSIFICAR e INFORMAR sugerem fronteiras. Cada função precisa de uma entrada mínima e devolve um resultado; nenhuma depende de variável escondida.
Índice e quantidade não são o mesmo número
Para [8, 7, 9], a quantidade é três e os índices válidos são zero, um e dois. Um laço por índice continua enquanto indice for menor que notas.length. Quando chega a três, encerra antes de ler posição ausente.
const notas = [8, 7, 9];
for (let indice = 0; indice < notas.length; indice += 1) {
console.log(indice, notas[indice]);
}No Node v26.3.0, aparecem 0 8, 1 7 e 2 9. Trocar menor por menor ou igual cria uma quarta leitura undefined. O erro pode surgir depois, quando alguém chama um método num valor que não existe.
Quando a posição não importa, for...of reduz o risco de limite errado. Quando você busca e precisa devolver a posição, o índice é parte do resultado. Escolha pela informação necessária.
Dê um contrato a cada função
validar recebe notas e devolve booleano. calcularMedia recebe uma lista já válida e devolve número. classificar recebe média e devolve texto. A função externa coordena e apresenta.
Essa separação permite testar média com [8, 7, 9] sem executar apresentação. Permite testar classificação com 6,9, 7 e 10 sem montar lista. Quando um caso falha, a área de investigação é pequena.
Imprimir dentro de calcularMedia seria um erro de contrato: o terminal mostra oito, mas o chamador recebe undefined. Use return para entregar resultado e deixe console.log na borda.
No laboratório, altere a regra de aprovação para 7,5. Somente classificar deveria mudar. Depois passe lista vazia e confirme que a validação impede a divisão. Se você precisa mexer em cálculo para trocar a política de aprovação, as responsabilidades ainda estão misturadas.
Busque também o ausente
Toda busca tem ao menos três casos: primeiro item, último item e nenhum item. Em JavaScript, findIndex devolve zero para o primeiro e menos um para ausente. Não use if (indice), porque zero é falso e menos um é verdadeiro; compare com -1.
Na missão, uma função encontra o aluno e outra calcula média. O critério é produzir média para primeiro e último, e uma resposta explícita para ausente sem tentar acessar undefined. Na próxima aula, você reunirá as peças no projeto e documentará o teste de mesa.
Laboratório ao vivo
Boletim dividido em funções
Leia o pseudocódigo comentado, execute o boletim e altere uma função por vez. Rejeite lista vazia sem misturar validação e apresentação.
Pare e pense
Qual é o último índice válido de um vetor com três itens?
Índices válidos vão de zero até length menos um. Para três itens, são zero, um e dois.
Faça sem copiar
Crie funções para buscar um aluno e calcular sua média. Teste aluno no primeiro índice, no último e ausente, com resultados distintos.
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: Projeto final: resolva, rastreie e prove o algoritmo →