⬅ Voltar ao Dashboard Capítulo 5 — Repetições

➕ Acumuladores e break

Seção 5.2–5.3 — Acumulando valores e interrompendo repetições

📦 5.2 Acumuladores

Nem só de contadores precisamos. Em programas para calcular o total de uma soma, precisaremos de acumuladores. A diferença entre um contador e um acumulador é que nos contadores o valor adicionado é constante e, nos acumuladores, variável.

Vejamos um programa que calcula a soma de 10 números digitados pelo usuário. Nesse caso, soma é o acumulador e n é o contador:

Listagem 5.11 — Soma de 10 númerosn = 1 soma = 0 while n <= 10: x = int(input("Digite o %d número: " % n)) soma = soma + x n = n + 1 print("Soma: %d" % soma)

Diferentemente de n, que recebe 1 a cada passagem, a variável soma é adicionada do valor digitado pelo usuário. O incremento de soma não é constante — ela acumula os valores digitados a cada repetição.

Vejamos um programa que calcula a média de cinco números digitados:

Listagem 5.12 — Cálculo de média com acumuladorx = 1 soma = 0 while x <= 5: n = int(input("%d Digite o número: " % x)) soma = soma + n x = x + 1 print("Média: %5.2f" % (soma / 5))

A média aritmética é (n1 + n2 + n3 + n4 + n5) / 5. Em vez de usar cinco variáveis separadas, acumulamos os valores em soma conforme são lidos.

💡 Acumuladores são muito úteis quando não sabemos ou não conseguimos obter o total da soma pela simples multiplicação de dois números. No cálculo da média, o valor de n pode ser diferente a cada vez que o usuário digitar um valor.

⏹ 5.3 Interrompendo a repetição

Embora muito útil, a estrutura while só verifica sua condição de parada no início de cada repetição. Às vezes, é interessante poder terminar o while de dentro do bloco.

A instrução break é utilizada para interromper a execução do while independentemente do valor atual de sua condição. Vejamos um programa que lê valores e os soma até que o usuário digite 0:

Listagem 5.13 — Interrompendo a repetiçãos = 0 while True: v = int(input("Digite um número a somar ou 0 para sair: ")) if v == 0: break s = s + v print(s)

Substituímos a condição do while por True, tornando-o infinito. A instrução break só é ativada dentro do if, quando v vale zero. Enquanto v for diferente de zero, a repetição continua somando v a s.

💡 O break transfere imediatamente a execução para a primeira linha após o bloco do while. É especialmente útil quando a condição de parada só pode ser verificada dentro do laço, e não no início.

✏ Exercícios

Exercício 5.11

Escreva um programa que pergunte o depósito inicial e a taxa de juros de uma poupança. Exiba os valores mês a mês para os 24 primeiros meses. Escreva o total ganho com juros no período.

Exercício 5.12

Altere o programa anterior de forma a perguntar também o valor depositado mensalmente. Esse valor será depositado no início de cada mês, e você deve considerá-lo para o cálculo de juros do mês seguinte.

Exercício 5.13

Escreva um programa que pergunte o valor inicial de uma dívida e o juro mensal. Pergunte também o valor mensal que será pago. Imprima o número de meses para que a dívida seja paga, o total pago e o total de juros pago.

Exercício 5.14

Escreva um programa que leia números inteiros do teclado. O programa deve ler os números até que o usuário digite 0 (zero). No final da execução, exiba a quantidade de números digitados, assim como a soma e a média aritmética.