Problema: Faça um programa que leia uma sequência de números inteiros, diferentes de zero, e calcule a sua soma.
Se a sequência de entrada tivesse um tamanho fixo conhecido, digamos 4, a descrição do processo não seria complicada, bastando escrever:
| C | Python |
|---|---|
int n1, n2, n3, n4, soma; //cria as 5 variáveis
que serão utilizadas
scanf("%d %d %d %d", &n1, &n2, &n3, &n4);
//lê 4 inteiros
soma = n1+n2+n3+n4; //soma os 4 inteiros lidos
printf("%d", soma); //imprime o resultado da soma
|
n1 = input() //lê o primeiro inteiro
n2 = input() //lê o segundo inteiro
n3 = input() //lê o terceiro inteiro
n4 = input() //lê o quarto inteiro
soma = n1+n2+n3+n4 //soma os 4 inteiros
print(soma) //imprime o resultado da soma
|

.
.
.
| C | Python |
|---|---|
int num, soma; |
num = 0 soma = 0 |
Inicialmente, no código em C o valor das variáveis(quaisquer) está indefinido, já no código em Python está definido em 0 e portanto devemos cuidar das
"inicializações" antes do primeiro teste while (num !=0). Quanto deve valer a variável num neste momento inicial?
Uma solução possível é o tratamento do primeiro número da sequência como caso à parte, antes de entrarmos no comando de repetição. Deste modo, devemos ler
o primeiro número fora da repetição e já contabilizar na soma.
Exercício 1: Tente elaborar outra solução, que não faça uma primeira leitura de num dentro do laço
Após a repetição devemos imprimir o conteúdo da variável soma, que deverá conter a soma dos elementos da sequência de entrada.
Escrevendo o código temos:
| C | Python |
|---|---|
1 int num, soma;
2 scanf("%d", &num);
3 soma = num;
4 while (num != 0){
5 scanf(%d, &num);
6 soma = soma + num;
7 }
8 printf("%d",soma);
|
1 num = input();
2 soma = num;
3 while num != 0
4 num = input()
5 soma = soma + num
6 print(soma)
|

| num | soma | comando em execução | observações |
|---|---|---|---|
| ? | ? | no início do programa valores das variáveis são desconhecidos, elas apenas foram declaradas | |
| 10 | ? | scanf("%d", &num) | pega o 1º número de entrada e guarda em num |
| 10 | 10 | soma = num | Atribui o valor de num a soma |
| 10 | 10 | while (num != 0) | Como num é diferente de 0, executa os comandos dentro do bloco de repetição (linhas 5 e 6) |
| 3 | 10 | scanf("%d", num) | Recebe o 2º número de entrada e guarda em num |
| 3 | 13 | soma = soma + num | atribui a soma o valor da expressão soma + num |
| 3 | 13 | while(num!=0) | Como num é diferente de 0, o programa continuará a repetição |
| 4 | 13 | scanf("%d", num) | |
| 4 | 17 | soma = soma+ num | |
| 4 | 17 | while(num!=0) | |
| 0 | 17 | soma = soma + num | |
| 0 | 17 | while(num!=0) | Como soma é igual a 0, o programa pula para a linha 8 |
| 0 | 17 | printf("%d", soma) | Imprime o valor de soma: 17 |
| C | Python |
|---|---|
1 int num, soma;
2 scanf("%d", &num);
3 soma = 0;
4 while (num >= 0){
5 soma = soma + num;
6 scanf(%d, &num);
7 }
8 printf("%d",soma);
|
1 num = input(); 2 soma = 0; 3 while num >= 0: 4 soma = soma + num 5 num = input() 6 print(soma) |

| C | Python |
|---|---|
1 int num, soma;
2 scanf("%d", &num);
3 soma = 0;
4 while(num!=0){
5 scanf("%d", num);
6 soma = soma + num;
7 }
8 printf("%d", soma);
|
1 num = input(); 2 soma = 0 3 while num != 0: 4 num = input() 5 soma = soma+num 6 print(soma) |