Trilha de aprendizado · Nível 2 · Tutorial 7

Construir contadores e acumuladores em laços

Contar ocorrências e somar valores durante uma repetição, verificando a evolução das variáveis por rastreamento manual.

  • Nível: Iniciante
  • Duração: 20 min
  • 7 passos
Construir contadores e acumuladores em laços

O que você vai percorrer

  1. Distinguir quantidade de ocorrências e soma de valores Reconheça quando usar um contador, um acumulador de soma ou os dois para responder a perguntas diferentes sobre os mesmos dados. 2 min
  2. Inicializar antes e atualizar dentro do laço Organize a inicialização, as atualizações e a saída para preservar a contagem e a soma entre as iterações. 3 min
  3. Contar e somar somente quando a condição for atendida Mantenha contagem e soma no mesmo bloco condicional e explique por que valores rejeitados preservam o resultado parcial. 3 min
  4. Rastrear as variáveis a cada iteração Registre o estado das variáveis antes e depois de cada passagem pelo laço e encontre o ponto em que um resultado começa a sair do esperado. 4 min
  5. Conferir nenhuma, uma e várias ocorrências Confira casos pequenos e descubra por que uma soma igual a zero não significa ausência de ocorrências. 2 min
  6. Calcular a média com uma contagem válida Calcule a média depois do laço e use a quantidade de ocorrências para decidir se há dados para dividir. 2 min
  7. Aplicar o padrão e conferir o programa completo Complete um programa no seu computador, teste três cenários e justifique os resultados com um rastreamento manual. 4 min

O que você vai aprender

  • Inicializar contadores e acumuladores antes do laço, sem reiniciá-los a cada iteração.
  • Distinguir a quantidade de ocorrências da soma dos valores processados.
  • Atualizar contagens e totais apenas quando uma condição for atendida.
  • Montar uma tabela de rastreamento com os valores das variáveis e as decisões de cada iteração.
  • Conferir os resultados para nenhuma, uma ou várias ocorrências e calcular uma média somente quando a contagem for maior que zero.

Antes de começar

  • Selecionar caminhos com if, elif e else
  • Repetir ações com while
  • Percorrer textos e intervalos com for e range
  • Controlar repetições com break e continue

Passo 1 de 7

Distinguir quantidade de ocorrências e soma de valores

Reconheça quando usar um contador, um acumulador de soma ou os dois para responder a perguntas diferentes sobre os mesmos dados.

Os mesmos dados, duas perguntas

Um laço pode processar vários valores, mas o resultado depende da pergunta.

Imagine três pacotes com 2, 5 e 2 peças:

  • Quantos pacotes são? Um contador registra a quantidade de ocorrências: cada pacote conta uma vez. Resultado: 3 pacotes.
  • Quantas peças há ao todo? Um acumulador de soma registra o total dos valores: cada pacote contribui com seu número de peças. Resultado: 9 peças.
Comparação dos mesmos três pacotes, com 2, 5 e 2 peças: contando um por pacote, temos 1 + 1 + 1 = 3; somando as peças, temos 2 + 5 + 2 = 9.

Contar dá o mesmo peso a cada ocorrência; somar considera o valor de cada uma.

Dica

Nomes que deixam o papel claro

Neste exemplo, quantidade pode nomear o contador de pacotes, e total pode nomear o acumulador de peças. Se o problema pedir as duas respostas, você precisará dos dois registros. Os pacotes com 2 peças contam separadamente, mesmo tendo valores iguais.

Qual registro responde à pergunta?

Uma pessoa registra a distância de cada caminhada. Associe cada pergunta ao registro necessário.

Toque em um item e depois no par correspondente.

Separe quantidade de total

Três entregas trouxeram 4, 4 e 7 caixas. Se quantidade registra o número de entregas e total registra a soma das caixas, quais são os resultados?

Passo 2 de 7

Inicializar antes e atualizar dentro do laço

Organize a inicialização, as atualizações e a saída para preservar a contagem e a soma entre as iterações.

Três posições, três funções

Comece com quantidade = 0 e total = 0 antes do laço. Dentro dele, acrescente 1 à quantidade e o valor atual ao total. Assim, cada passagem aproveita o resultado parcial da anterior. Deixe a apresentação do resultado final depois do laço, sem recuo.

Contar e somar os valores 2, 3 e 4

Ao terminar, o programa mostra quantidade 3 e total 9.

python
quantidade = 0
total = 0

for valor in range(2, 5):
    quantidade = quantidade + 1
    total = total + valor

print(f"Quantidade: {quantidade}")
print(f"Total: {total}")
Fluxo em três regiões: antes do laço, quantidade e total recebem zero; dentro do laço, quantidade aumenta em 1 e total aumenta pelo valor atual; depois do laço, os resultados são apresentados.

A seta de repetição passa pelas atualizações, mas não volta à inicialização.

Organize o programa

Coloque os blocos na ordem necessária para contar e somar todos os valores processados.

  1. Dentro do laço: acrescentar 1 a quantidade e valor a total.
  2. Depois do laço: apresentar quantidade e total.
  3. Antes do laço: atribuir zero a quantidade e total.

Escreva as atualizações com +=

Nos exemplos numéricos, += é uma forma abreviada de somar e guardar o resultado na mesma variável:

  • quantidade += 1 equivale a quantidade = quantidade + 1.
  • total += valor equivale a total = total + valor.

A forma abreviada também preserva o que já estava guardado.

Atualize o contador

Complete para contar uma ocorrência: quantidade += ___.

Atualize o acumulador

O número atual está em valor. Complete para somá-lo ao resultado parcial: total += ___.

Encontre a reinicialização indevida

Este código não preserva a soma

Observe a posição de total = 0.

python
quantidade = 0

for valor in range(2, 5):
    total = 0
    quantidade += 1
    total += valor

print(f"Quantidade: {quantidade}")
print(f"Total: {total}")

Sem executar, qual total esse programa apresenta? Explique por quê e diga qual linha deve mudar de lugar para que ele some 2, 3 e 4 corretamente.

Escreva pelo menos 15 caracteres (0/15).

Passo 3 de 7

Contar e somar somente quando a condição for atendida

Mantenha contagem e soma no mesmo bloco condicional e explique por que valores rejeitados preservam o resultado parcial.

Uma condição para as duas atualizações

Para contar e somar apenas valores maiores ou iguais a 2, coloque as duas atualizações dentro do mesmo if.

Se a condição for verdadeira, o valor participa da contagem e da soma. Se for falsa, nenhuma das duas atualizações acontece: quantidade e total mantêm o que já estava guardado.

Selecionar antes de atualizar

O laço faz 4 iterações, mas aceita apenas 3 valores: 2, 3 e 4. A saída é 3 9.

python
quantidade = 0
total = 0

for valor in range(1, 5):
    if valor >= 2:
        quantidade += 1
        total += valor

print(quantidade, total)

Aceitar ou preservar

Fluxo do teste valor >= 2. O caminho verdadeiro executa quantidade += 1 e total += valor no mesmo bloco. O caminho falso contorna as duas atualizações. Ambos seguem para a próxima iteração.

Uma iteração sempre processa um valor, mas só uma ocorrência aceita altera a contagem e a soma.

Qual bloco representa a mesma seleção?

Considere quantidade e total já inicializados com zero antes do laço. Qual trecho conta e soma somente os valores maiores ou iguais a 2?

Complete e explique o valor rejeitado

Agora, em ordem decrescente

O laço percorre 4, 3, 2 e 1, nessa ordem. As duas lacunas devem ser substituídas por instruções completas.

python
quantidade = 0
total = 0

for valor in range(4, 0, -1):
    if valor >= 2:
        ___
        ___

print(quantidade, total)

Atualizar ou manter?

Substitua as duas lacunas e escreva o bloco if completo, mantendo o recuo das atualizações.

Depois, explique: após aceitar 4, 3 e 2, quais são os valores de quantidade e total? O que acontece com eles quando o laço chega ao valor 1, e por quê?

Escreva pelo menos 50 caracteres (0/50).

Passo 4 de 7

Rastrear as variáveis a cada iteração

Registre o estado das variáveis antes e depois de cada passagem pelo laço e encontre o ponto em que um resultado começa a sair do esperado.

Uma linha para cada passagem

Registre o caminho, não apenas o resultado

Rastrear é acompanhar a execução no papel. Primeiro, anote o estado inicial: quantidade = 0 e total = 0.

Depois, faça uma linha por iteração com: valor atual, resultado da condição e valores de quantidade e total antes e depois das atualizações. Registre também as passagens em que a condição é falsa.

Conte e some os valores a partir de 2

Acompanhe as duas primeiras iterações na imagem.

python
quantidade = 0
total = 0

for valor in range(1, 5):
    if valor >= 2:
        quantidade += 1
        total += valor

print(quantidade, total)

O estado passa de uma linha para a próxima

Estado inicial: quantidade 0 e total 0. Tabela com colunas iteração, valor, valor >= 2, quantidade antes, quantidade depois, total antes e total depois. Iteração 1: valor 1, condição falsa, quantidade 0 para 0 e total 0 para 0. Iteração 2: valor 2, condição verdadeira, quantidade 0 para 1 e total 0 para 2. Setas ligam os valores depois de uma linha aos valores antes da linha seguinte.

Quando a condição é falsa, a linha existe, mas os valores não mudam. O “depois” de uma linha vira o “antes” da próxima.

Complete o rastreamento

Continue o mesmo laço

Na tabela, cada par mostra antes → depois. Complete A e B seguindo as atualizações do código anterior.

Estado inicial: quantidade = 0, total = 0.

| Iteração | Valor | valor >= 2 | Quantidade | Total |
|---|---|---|---|---|
| 1 | 1 | Falso | 0 → 0 | 0 → 0 |
| 2 | 2 | Verdadeiro | 0 → 1 | 0 → 2 |
| 3 | 3 | Verdadeiro | 1 → 2 | 2 → A |
| 4 | 4 | Verdadeiro | 2 → B | A → 9 |

Total depois da terceira iteração

Qual número substitui A?

Quantidade depois da quarta iteração

Qual número substitui B?

Encontre a primeira divergência

Compare linha por linha

O código abaixo deveria contar e somar apenas valores maiores ou iguais a 2, mas há uma atualização fora do lugar. Para localizar o erro, compare o estado esperado com o produzido pelo código, começando pela primeira iteração.

Código com erro de posicionamento

python
quantidade = 0
total = 0

for valor in range(1, 5):
    quantidade += 1
    if valor >= 2:
        total += valor

print(quantidade, total)

Exemplo

A primeira diferença já aparece com valor = 1

A condição é falsa. O esperado é manter quantidade = 0 e total = 0.

Mas o código executa quantidade += 1 antes do teste: a quantidade passa a 1, enquanto o total continua 0. Essa é a primeira divergência.

A correção é mover quantidade += 1 para dentro do if, junto da soma. Procurar a primeira linha diferente ajuda a identificar a instrução responsável, em vez de olhar apenas a saída final.

Monte seu próprio rastreamento

Um novo laço curto

Faça a previsão manual antes de qualquer execução.

python
quantidade = 0
total = 0

for valor in range(-1, 3):
    if valor > 0:
        quantidade += 1
        total += valor

print(quantidade, total)

Explique como o resultado foi construído

Registre o estado inicial e monte a tabela com uma linha por iteração. Use as colunas indicadas no campo de resposta. Depois, justifique uma linha sem atualização e escreva a saída final do programa.

Escreva pelo menos 60 caracteres (0/60).

Passo 5 de 7

Conferir nenhuma, uma e várias ocorrências

Confira casos pequenos e descubra por que uma soma igual a zero não significa ausência de ocorrências.

Dois caminhos para nenhuma ocorrência

Neste programa, apenas valores maiores ou iguais a zero entram na contagem e na soma.

Se o intervalo estiver vazio, o corpo do laço não executa. Se houver valores, mas todos forem rejeitados, o laço executa sem atualizar as variáveis. Nos dois casos, quantidade e total permanecem com o valor inicial: zero.

Programa para conferir

Altere apenas inicio e fim para experimentar os casos da próxima tela.

python
inicio = 1
fim = 1

quantidade = 0
total = 0

for valor in range(inicio, fim):
    if valor >= 0:
        quantidade += 1
        total += valor

print(f"Quantidade: {quantidade}")
print(f"Total: {total}")

Preveja e compare

Quatro casos pequenos

Preveja quantidade e total em cada caso, usando um rastreamento curto no papel:

A. inicio = 1, fim = 1
B. inicio = -3, fim = 0
C. inicio = -1, fim = 1
D. inicio = -1, fim = 3

Depois, copie o programa da tela anterior para seu editor e execute cada caso no seu computador, alterando apenas inicio e fim. Registre suas previsões e diga se as saídas coincidiram. Em qual caso o laço não executou e em qual executou sem aceitar valores?

Escreva pelo menos 20 caracteres (0/20).

Soma zero não significa ausência

No caso C, o valor zero foi aceito: quantidade terminou em 1 e total em 0.

Em outro problema cuja regra aceite -2 e 2, essas duas parcelas se anulam: quantidade seria 2 e total seria 0. Para saber se houve ocorrências aceitas, confira a quantidade, não a soma.

Mesmo total, contagens positivas

Comparação de dois conjuntos de ocorrências aceitas. À esquerda, apenas o valor zero: quantidade 1 e total 0. À direita, os valores -2 e 2: quantidade 2 e total 0.

Somar zero ou somar parcelas que se anulam pode manter total em zero, mesmo com ocorrências aceitas.

Dica

O que cada caso ajuda a conferir

Nenhuma ocorrência: os valores iniciais são preservados. Uma ocorrência: as atualizações usam o incremento correto. Várias ocorrências: os resultados parciais são mantidos, sem reinicialização dentro do laço.

Qual variável responde?

Em um programa que conta e soma corretamente os valores aceitos, total == 0 é suficiente para concluir que nenhuma ocorrência foi aceita.

Passo 6 de 7

Calcular a média com uma contagem válida

Calcule a média depois do laço e use a quantidade de ocorrências para decidir se há dados para dividir.

Primeiro termine o laço, depois divida

A média dos valores aceitos é total / quantidade. Os dois registros precisam representar as mesmas ocorrências.

Calcule a média depois do laço, quando a contagem e a soma estiverem completas. Antes de dividir, teste quantidade > 0. Se a quantidade for zero, mostre uma mensagem de ausência de dados — não apresente zero como se fosse uma média calculada.

Do resultado final à média

Fluxo: depois do fim do laço, testar quantidade > 0. Se sim, calcular media = total / quantidade. Se não, mostrar Sem dados para calcular a média.

É a quantidade que autoriza a divisão, não o valor do total.

Proteja a divisão

Depois do laço, complete a lacuna com o nome da variável que deve ser testada:

if ___ > 0:
    media = total / quantidade
    print(f"Média: {media}")
else:
    print("Sem dados para calcular a média.")

Média zero não é ausência de dados

Neste exemplo, todos os valores percorridos são aceitos: −1, 0 e 1. A soma é zero, mas existem três ocorrências. Portanto, a média pode ser calculada.

Cálculo fora do laço

O if que protege a divisão está alinhado com o for: ele só é executado depois que o laço termina.

python
quantidade = 0
total = 0

for valor in range(-1, 2):
    quantidade += 1
    total += valor

if quantidade > 0:
    media = total / quantidade
    print(f"Média: {media}")
else:
    print("Sem dados para calcular a média.")

Exemplo

Resultado

Ao terminar o laço, quantidade vale 3 e total vale 0. O teste 3 > 0 é verdadeiro, então a divisão 0 / 3 produz 0.0.

A saída é Média: 0.0. Isso é diferente de não ter dados: aqui há três valores para calcular a média.

Preveja a saída

Considere o mesmo bloco de cálculo e apresentação da tela anterior. Associe cada estado final do laço à saída correspondente.

Toque em um item e depois no par correspondente.

Passo 7 de 7

Aplicar o padrão e conferir o programa completo

Complete um programa no seu computador, teste três cenários e justifique os resultados com um rastreamento manual.

Complete o programa no seu editor

Do padrão ao programa completo

No seu editor, crie o arquivo contagem.py e copie o código abaixo. Substitua as cinco lacunas ___ antes de executar.

O programa deve ler inteiros, aceitar apenas os positivos e encerrar ao receber zero. Ao final, deve mostrar quantidade, total e média dos valores aceitos — ou uma mensagem de ausência de dados. Use somente entradas inteiras válidas nesta prática.

Código-base para completar

Complete as inicializações, os incrementos e a condição que protege a divisão. As lacunas ainda não formam um programa pronto para execução.

python
quantidade = ___
total = ___

while True:
    valor = int(input("Digite um inteiro (0 encerra): "))

    if valor == 0:
        break

    if valor > 0:
        quantidade += ___
        total += ___

print(f"Quantidade: {quantidade}")
print(f"Total: {total}")

if ___:
    media = total / quantidade
    print(f"Média: {media:.2f}")
else:
    print("Sem dados para calcular a média.")

O caminho de cada entrada

Fluxo: ler um inteiro e verificar primeiro se ele é zero. Se for zero, sair do laço e apresentar os resultados. Caso contrário, verificar se é positivo: positivos atualizam quantidade e total; negativos voltam à leitura sem atualizar.

O zero encerra antes das atualizações. Só os positivos chegam às duas atualizações.

Preveja e execute três cenários

Uma execução nova para cada caso

Antes de executar, anote a quantidade, o total e a média esperados, ou a mensagem de ausência de dados. Depois, execute contagem.py no seu computador e digite cada valor quando ele for solicitado.

| Cenário | Entradas, nesta ordem |
|---|---|
| Encerramento imediato | 0 |
| Uma ocorrência aceita | 8, depois 0 |
| Caso misto | 4, depois -2, depois 6, depois -1, depois 2, depois 0 |

Reinicie o programa para cada cenário. Compare a saída com sua previsão; se houver diferença, procure a primeira atualização que não corresponde ao esperado.

Exemplo

Rastreamento do caso misto

No papel ou em um arquivo de texto, registre primeiro o estado inicial: quantidade = 0 e total = 0. Complete uma linha por passagem pelo corpo do laço.

| Passagem | valor | valor > 0? | quantidade antes | total antes | quantidade depois | total depois |
|---|---|---|---|---|---|---|
| 1 | 4 | … | … | … | … | … |
| 2 | -2 | … | … | … | … | … |
| 3 | 6 | … | … | … | … | … |
| 4 | -1 | … | … | … | … | … |
| 5 | 2 | … | … | … | … | … |
| 6 | 0 | Não avaliada: break | … | … | … | … |

Leve os valores finais de cada linha para o início da seguinte. Na linha do zero, registre os valores preservados até a saída: o break impede que o teste valor > 0 seja executado.

Explique o que você verificou

Previsão, rastreamento e saída

Relate a previsão e a saída observada em cada um dos três cenários. Inclua seu rastreamento do caso misto e explique por que os negativos e o zero não alteram os resultados.

Se você corrigiu o programa, indique a primeira divergência encontrada e o ajuste feito. Se não pôde executar localmente, informe isso e apresente sua previsão manual.

Escreva pelo menos 100 caracteres (0/100).

Confira e leve o padrão com você

Exemplo

Conferência das cinco lacunas

Na ordem do código, as lacunas são: 0, 0, 1, valor e quantidade > 0.

Assim, cada positivo acrescenta uma ocorrência à quantidade e seu próprio valor ao total. A divisão acontece somente depois do laço e quando existe pelo menos uma ocorrência aceita.

Resumo

Revisão final

  • Inicialize uma vez, antes do laço, para preservar os resultados parciais.
  • Conte ocorrências com +1 e some valores com +valor.
  • Mantenha as duas atualizações na mesma condição quando elas representam o mesmo conjunto de ocorrências.
  • Rastreie também os valores rejeitados e confira casos com nenhuma, uma e várias ocorrências aceitas.
  • Calcule a média depois do laço e somente se quantidade > 0; total igual a zero não prova ausência de dados.

Tutorial concluído

Parabéns! Você concluiu: Construir contadores e acumuladores em laços

Você chegou ao final de Construir contadores e acumuladores em laços. Use o rastreamento para justificar cada atualização e conferir se quantidade, total e média representam exatamente os valores escolhidos.

Baixe o Aplicativo agora para ter acesso a + de 5000 cursos gratuitos, exercícios, certificado e muito conteúdo sem pagar nada!

  • Cursos online 100% gratuitos do início ao fim

    Milhares de cursos online em vídeo, ebooks e áudiobooks.

  • Mais de 60 mil exercícios gratuitos

    Para testar seus conhecimentos no decorrer dos cursos online

  • Certificado Digital gratuito válido em todo o Brasil

    Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail

Aplicativo Cursa na tela de ebook, na tela de curso em vídeo e na tela de exercícios do curso, mais o certificado de conclusão de curso