Módulo 11 - Listas, muitas caixas juntas

Somar tudo e achar o maior: os dois clássicos da lista

9 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 02/07/2026

O que você vai aprender

  • Somar todos os valores de uma lista com um acumulador.
  • Calcular a média dividindo a soma pelo tamanho da lista.
  • Achar o maior valor comparando caixa por caixa.
  • Entender por que o maior começa valendo lista[0], e não 0.

A soma e a média: o acumulador encontra a lista

No módulo 9 você conheceu o acumulador com o cofrinho: uma variável que começa em 0 e engorda a cada volta do laço. Na época, os valores vinham um a um pelo leia. Agora eles já estão enfileirados na lista, e o percurso da aula 3 entrega um por volta: lista[i]. Juntar as duas peças produz a soma em quatro linhas. E da soma para a média é um passo: divida pelo tamanho da lista. É literalmente a conta que o professor faz no fim do bimestre, escrita para a máquina executar.

notas <- [7, 9, 6, 8]
soma <- 0
para i de 0 até tamanho(notas) - 1 faça
  soma <- soma + notas[i]
fim
media <- soma / tamanho(notas)
escreva("Soma: " + soma)     // Soma: 30
escreva("Média: " + media)   // Média: 7.5

O acumulador soma caixa por caixa; a média é a soma dividida pelo tamanho.

Acompanhe a soma volta a volta, como num teste de mesa informal: antes do laço, soma vale 0. Na volta do índice 0, recebe 0 + 7 e vale 7. Na do índice 1, vale 7 + 9 = 16. Na do índice 2, 16 + 6 = 22. Na do índice 3, 22 + 8 = 30. O laço acaba (i passou do último índice) e a média sai de 30 dividido por 4: 7,5. Esse hábito de rodar o algoritmo na cabeça, linha a linha, é o coração do módulo 13; comece a praticá-lo agora, com algoritmos pequenos.

Caçando o maior valor: o campeão provisório

Achar o maior valor de uma lista imita um torneio. Você elege um campeão provisório (o primeiro valor, lista[0]) e faz cada caixa seguinte desafiá-lo: se a desafiante for maior, ela toma o cinturão. Quando o percurso acaba, quem estiver com o cinturão é o maior da lista inteira. O detalhe que separa o algoritmo certo do bugado está na largada: o campeão inicial deve ser um valor DA LISTA, não um número inventado como 0. Se as temperaturas do inverno forem todas negativas, o 0 venceria um torneio do qual nem participa.

temperaturas <- [-2, -7, -1, -5]
maior <- temperaturas[0]     // campeão provisório: -2
para i de 1 até tamanho(temperaturas) - 1 faça
  se temperaturas[i] > maior então
    maior <- temperaturas[i]
  fim
fim
escreva(maior)   // -1 (com maior <- 0, sairia 0: um valor que NÃO está na lista)

O campeão inicial vem da própria lista; por isso o percurso pode começar do índice 1.

🎮 Jogo da aula

A soma que esquece a primeira nota

Este algoritmo deveria somar as 4 notas e mostrar 30, mas mostra 23. Toque na linha com o bug.

O bug do jogo é o erro de uma unidade da aula 2 vestindo roupa nova: em vez de estourar a lista pela ponta de cima, ele abandona a caixa da ponta de baixo. Repare como ele é silencioso: o programa roda, mostra um número, e o número está errado. Nenhuma mensagem de erro aparece. É por isso que a aula 2 insistiu tanto na contagem do zero e por que o módulo 13 vai lhe dar ferramentas para flagrar esse tipo de traição olhando as pontas do laço primeiro.

Variações dos clássicos: menor, contagem e combinações

Dominados os dois clássicos, uma família inteira de problemas se abre com ajustes mínimos. O MENOR valor usa o mesmo torneio trocando o sinal da comparação: se lista[i] < menor. CONTAR quantas notas ficaram acima da média combina o percurso com um contador do módulo 9: se notas[i] >= media, então aprovados <- aprovados + 1. Somar só os valores pares filtra com o resto da divisão do módulo 5. Percurso, acumulador, contador e SE: quatro peças suas, infinitas combinações.

ProblemaVariável de apoioDentro do laço
Somar tudosoma <- 0soma <- soma + lista[i]
Achar o maiormaior <- lista[0]se lista[i] > maior então maior <- lista[i]
Achar o menormenor <- lista[0]se lista[i] < menor então menor <- lista[i]
Contar aprovadoscont <- 0se lista[i] >= 7 então cont <- cont + 1

A mesma moldura de percurso resolve a família inteira; só o miolo muda.

Teste rápido

Por que iniciar maior <- lista[0] é mais seguro do que iniciar maior <- 0?

Perguntas frequentes

Por que o laço do maior pode começar do índice 1?
Porque o valor do índice 0 já entrou como campeão provisório na linha maior <- lista[0]; compará-lo consigo mesmo seria volta perdida. Começar do 0 também funciona e não muda o resultado. O importante é que TODA caixa seja considerada, seja na largada, seja no percurso.
E se a lista estiver vazia? O maior de nada é o quê?
É um caso sem resposta: não existe maior valor de um conjunto vazio. O algoritmo deve verificar antes: se tamanho(lista) = 0, avise “lista vazia” e não calcule. Tentar ler lista[0] de uma lista vazia estoura o programa. Esse tipo de situação limite é o tema dos casos de borda no módulo 13.
E se dois valores empatarem como maior?
O algoritmo devolve o valor, e o valor é um só: numa lista [8, 9, 9, 5], o maior é 9, não importa que apareça duas vezes. Se a pergunta for OUTRA (quantas vezes o maior aparece, ou em quais posições), aí você combina o torneio com um contador ou com a busca da próxima aula.
A média calculada assim é a mesma média da escola?
Sim, é a média aritmética simples: soma de tudo dividida pela quantidade. Escolas que usam pesos diferentes por prova exigem a média ponderada, em que cada nota multiplica seu peso antes da soma. A moldura do algoritmo é a mesma; muda a linha de acumulação.
As linguagens não têm isso pronto? Por que aprender na mão?
Têm: o Python oferece sum(lista) e max(lista) prontos. Você aprende na mão pelo mesmo motivo que aprende a conta de dividir antes de usar calculadora: para entender o que a ferramenta faz, prever o custo dela e resolver os casos em que o pronto não serve, como “o maior, mas só entre os aprovados”.
Somar uma lista de 1 milhão de valores demora?
Para o computador, quase nada: são 1 milhão de somas simples, coisa de milésimos de segundo numa máquina comum. O ponto importante é que o TEMPO cresce junto com a lista: o dobro de caixas, o dobro de voltas. Perceber essa relação entre tamanho e trabalho é o primeiro passo de um assunto grande da computação, a eficiência de algoritmos.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.