Faça um programa que leia números inteiros usando while. O programa deve continuar lendo valores até que o usuário digite 0 .
Ao final, mostre:
- a quantidade de números digitados, sem contar o zero;
- a soma dos números positivos;
- a quantidade de números negativos;
- a quantidade de números pares;
Ao final, mostre:
Passo 1
O enunciado pede um programa que leia números inteiros repetidamente até que o usuário digite
. Ao terminar a leitura (quando for digitado
), o programa deve mostrar quatro valores:
- a quantidade de números digitados, sem contar o
; - a soma dos números positivos;
- a quantidade de números negativos;
- a quantidade de números pares.
Informações relevantes dadas:
- A entrada é uma sequência de números inteiros lidos um a um.
- O laço deve parar quando for digitado o valor
. - O valor
não deve ser contado entre os números digitados para o total. - Os resultados solicitados são contadores e uma soma simples.
Passo 2
Ideia geral (visão de alto nível, sem codificar ainda):
- Manter variáveis que acumulem os resultados enquanto lemos cada número.
- Repetir a leitura usando um laço do tipo while até aparecer o
. - Para cada número lido (diferente de
): - aumentar o contador total de números;
- se for positivo, adicionar à soma dos positivos;
- se for negativo, aumentar o contador de negativos;
- se for par, aumentar o contador de pares.
- Ao sair do laço, exibir os quatro valores.
Passo 3
Quais variáveis vamos usar e como inicializá-las (explicando bem o papel de cada uma):
-
: contador da quantidade de números lidos (exceto o ). Inicializar com . -
: soma dos números positivos. Inicializar com . -
: contador de números negativos. Inicializar com . -
: contador de números pares. Inicializar com .
Por que inicializar com
? Porque nenhum número foi processado antes de começar a leitura, então os acumuladores e contadores começam em
.
Passo 4
Estratégia de leitura com while (duas opções e escolha):
- Opção A: ler o primeiro número antes do laço e usar
while numero != 0:(loop com condição testada no topo). Essa é simples e evita verificar dentro do laço se é o primeiro. - Opção B: usar
while True:ebreakquando o número for.
Vou usar a Opção A porque é direta para este problema e fácil de seguir na prova: lê-se uma vez antes do while e depois atualiza-se dentro do while ao final de cada iteração.
Passo 5
O que fazer a cada número lido (detalhando cada passo interno do laço):
Suponha que a variável que contém o número lido seja e que já verificamos que
. Então:
Suponha que a variável que contém o número lido seja
- Atualizar o contador total:
- Se
, somar em : - Se
, incrementar o contador de negativos: - Testar se
é par. Matemática do par: um inteiro é par quando Em muitas linguagens de programação (por exemplo Python), a operação de resto é feita com n % 2. Sefor par, faça:
Observação importante sobre o
: não processamos o
(não aumenta nenhum contador nem entra na soma), porque a leitura para quando
.
Passo 6
Exemplo passo a passo com uma sequência curta (para fixar a ideia):
Suponha a sequência de entradas: .
Suponha a sequência de entradas:
- Leitura
( ): -
-
-
-
então
-
- Leitura
( ): -
-
(não muda porque não é positivo) -
-
então
-
- Leitura
( ): -
-
-
-
então
-
- Leitura
( ): -
-
-
-
então
-
- Leitura
: interrompe o laço. Resultados finais: , , , .
Passo 7
Casos de borda que podem aparecer e observações:
- Se o primeiro número lido for
, o laço nunca entra e todos os resultados devem ser . - Números pares negativos (ex.:
) são pares e devem ser contados em . - O
em si não é contado como par nem positivo nem negativo, porque ele serve apenas para terminar a leitura. - Se precisar de formato específico de saída (por exemplo mensagens explicativas), ajustar as instruções
printconforme exigido pela prova/avaliador.
Passo 8
Resumo do algoritmo em pseudocódigo (claro e direto):
Passo 9
Dica final para a prova e para implementar: escreva o programa com variáveis de nomes claros (por exemplo
count, sum_pos, count_neg, count_even) e teste mentalmente ou com uma sequência curta como a do Passo 6 para garantir que a lógica está certa. Mantenha o laço while simples (condição numero != 0) para evitar confundir validação e leitura.Resposta
# Programa em Python que lê inteiros com while até o usuário digitar 0
# Ao final exibe:
# - quantidade de números digitados (sem contar o zero)
# - soma dos números positivos
# - quantidade de números negativos
# - quantidade de números pares
count = 0
sum_pos = 0
count_neg = 0
count_even = 0
n = int(input("Digite um número (0 para parar): "))
while n != 0:
count += 1
if n > 0:
sum_pos += n
elif n < 0:
count_neg += 1
if n % 2 == 0:
count_even += 1
n = int(input("Digite um número (0 para parar): "))
print(count)
print(sum_pos)
print(count_neg)
print(count_even)