Desenvolva um programa que recebe números inteiros digitados pelo usuário e seja impresso na tela se o número é par ou ímpar. Seu programa deverá ir lendo os números e dizendo se o número é par ou ímpar até que um número negativo seja digitado pelo usuário. (Considere o número zero como sendo par)
Passo 1
O enunciado pede um programa que leia números inteiros fornecidos pelo usuário e, para cada número lido, imprima se ele é par ou ímpar. O programa deve continuar lendo números até que seja digitado um número negativo, momento em que o programa para. O enunciado também nos dá explicitamente que o número
deve ser considerado par.\n
Informações dadas:
Informações dadas:
- Entradas: números inteiros fornecidos pelo usuário, um por vez.
- Condição de parada: quando for digitado um número
tal que . - Para cada número não-negativo lido (incluindo
) devemos imprimir se ele é “par” ou “ímpar”. - Não imprimir classificação para o número negativo que provoca a parada (ou seja, ao ler um negativo paramos imediatamente).
Passo 2
O que significa “par” e “ímpar” (vamos entender a definição formal, que facilita na implementação):\n
- Um inteiro
é par se existir um inteiro tal que \n - Um inteiro
é ímpar se existir um inteiro tal que \n
Note que, pela definição,
é par porque
.
Passo 3
Como testar isso na prática (em um programa)? Usamos a operação resto da divisão inteira por
, chamada de “módulo”. Em notação matemática usamos
. Os fatos importantes são:\n
- Se
então é par.\n - Se
então é ímpar.\n
Exemplos numéricos para fixar:
\n
Em muitas linguagens de programação (Python, C, Java, etc.) o operador que implementa isso é o símbolo
. Então, na prática, testamos se
para saber se é par.
Passo 4
Algoritmo passo a passo que vamos implementar (descrição em linguagem natural para você seguir na prova):\n
- Ler um inteiro
do usuário.\n - Se
, então terminar o programa (não imprimir nada para esse ).\n - Caso contrário, calcular
.\n - Se
, imprimir “par”. Senão, imprimir “ímpar”.\n - Repetir desde o passo 1.\n
Essa estrutura é um laço de repetição infinito que é interrompido pela condição.
Passo 5
Pseudocódigo (curto e direto) para fixar a sintaxe mental antes do código real:\n
Ler \n
Enquanto verdadeiro:\n
\quad Se então sair do laço\n
\quad Se então imprimir “par” senão imprimir “ímpar”\n
\quad Ler \n
Isso corresponde exatamente ao algoritmo do passo anterior; a cada iteração você lê um novo inteiro e decide o que imprimir.
Ler
Enquanto verdadeiro:\n
\quad Se
\quad Se
\quad Ler
Isso corresponde exatamente ao algoritmo do passo anterior; a cada iteração você lê um novo inteiro e decide o que imprimir.
Passo 6
Exemplo prático (simulação) para ver o fluxo e não ficar com medo:\n
Suponha que o usuário digite a sequência: \n
Suponha que o usuário digite a sequência:
- Lê
. Como , imprime “par”.\n - Lê
. Como , imprime “ímpar”.\n - Lê
. Como , imprime “par”.\n - Lê
. Como , o programa para imediatamente e não imprime nada para .\n
Resultado impresso (linha a linha):\n
par\n
ímpar\n
par
Passo 7
Observações práticas e cuidados (dicas de prova):\n
- O enunciado garante que serão inteiros, então na prova você pode assumir entrada inteira. Em um programa real é legal verificar exceções (valor inválido), mas aqui não é necessário.\n
- Não classifique o número negativo que interrompe o laço; pare antes de imprimir.\n
- Lembre-se de que
é par — se esquecer disso, vai dar erro em casos com .\n - Em linguagens onde o operador módulo com números negativos tem comportamento diferente, reforço: você nem precisa aplicar o teste a números negativos porqueparamos quando
. Logo esse problema não aparece aqui.
Passo 8
Agora, o programa final em Python (uma implementação simples, adequada para a maioria dos avaliadores):\n
- Ele lê inteiros do stdin, um por linha.\n
- Para cada inteiro não-negativo imprime “par” ou “ímpar”.\n
- Ao ler um inteiro negativo, encerra sem imprimir para ele.\n
O código que segue é o que você pode colar e usar.
Resposta
def main():
while True:
try:
n = int(input())
except EOFError:
break
except ValueError:
# Se quiser, avise e continue; na prova geralmente assumimos inteiros válidos
print("Entrada inválida: digite um inteiro.")
continue
if n < 0:
break
if n % 2 == 0:
print("par")
else:
print("ímpar")
if __name__ == "__main__":
main()