Faça um programa em que o usuário digite um número qualquer (com ou sem casa decimal) e o programa retorne se o número é inteiro ou não; caso o número digitado seja inteiro, retorne se ele é par ou ímpar.
Passo 1
O que o programa deve fazer (em linguagem bem direta, para eu entender o pedido):
- Eu digito um número qualquer (pode ter casas decimais ou não).
- O programa deve dizer se o número digitado é inteiro ou não.
- Se o número for inteiro, o programa deve também dizer se ele é par ou ímpar.
Informações relevantes que o enunciado dá:
- Entrada: uma string que representa um número digitado pelo usuário.
- Saída: mensagem textual indicando “inteiro” ou “não inteiro”; se for inteiro, também indicar “par” ou “ímpar”.
Observação importante sobre a entrada: eu posso digitar o número usando vírgula (por ex.:
) ou ponto (por ex.:
), então é preciso tratar isso antes de converter para número.
Passo 2
Como interpretar “número inteiro” de forma prática:
- Um número real
é inteiro quando sua parte fracionária é zero. Em outras palavras, é inteiro se existir um inteiro tal que . - Em código, uma forma simples e direta de testar isso (em muitas linguagens) é verificar se a parte fracionária é zero. Em Python, por exemplo, um número em ponto flutuante
tem o método que retorna True quando a parte fracionária é zero. - Exemplos para fixar:
é inteiro; não é inteiro; é inteiro.
Passo 3
O que é “par” e “ímpar” (explicação simples e visual):
- Um inteiro
é par se ele for divisível por , isto é, se . - Caso contrário,
é ímpar (ou seja, para inteiros não-negativos; para negativos o resto em Python funciona igualmente: por ex. em sentido de paridade). - Exemplos:
é par porque . é ímpar porque .
Aqui explico o operador resto (módulo) de forma bem prática:
significa “o que sobra da divisão inteira de
por
”. Para testar paridade, só nos interessa
.
Passo 4
Decisões de implementação (por que escolhi essa abordagem que vou usar):
- Linguagem: vou usar Python porque é simples, muito usado em prova/programa introdutório e fácil de entender.
- Tratamento de vírgula/ponto: como eu posso digitar com vírgula, vou primeiro substituir vírgula por ponto antes de converter para número.
- Conversão: vou tentar converter a string para um número de ponto flutuante (tipo float). Se a conversão falhar, mostro uma mensagem de entrada inválida.
- Teste de inteiro: usar
é a maneira mais direta em Python para saber se a parte fracionária é zero. - Teste de paridade: uma vez que eu sei que
é inteiro, converto para inteiro com e uso o operador módulo: (em Python: ).
Por que isso funciona na prova:
- É simples, funciona para entradas como
, , , , (notação científica). - É legível e fácil de explicar durante a correção.
Passo 5
Passo a passo do algoritmo (pseudocódigo bem mastigado que eu posso escrever na prova):
- Ler a string digitada pelo usuário e guardar em, por exemplo,
. - Substituir vírgula por ponto:
com ‘,’ trocado por ‘.’. - Tentar converter
para número de ponto flutuante . Se der erro, imprimir “Entrada inválida” e terminar. - Se
, então: - Converter
. - Calcular
. - Se
, imprimir “O número é inteiro e par”. - Caso contrário, imprimir “O número é inteiro e ímpar”.
- Converter
- Caso
, imprimir “O número não é inteiro”.
Passo 6
Cuidados e detalhes que posso comentar na prova (coisas que avaliam atenção):
- Entradas com vírgula: preciso fazer a substituição para que a função de conversão aceite.
- Entradas inválidas: devo tratar exceção de conversão e avisar o usuário em vez de quebrar o programa.
- Conversão para inteiro: é seguro fazer
só depois de garantir que é inteiro (ou seja, que ), para evitar perda de precisão inesperada. - Paridade funciona para números negativos: por exemplo,
é par porque ; é ímpar.
Passo 7
Exemplos de execução (para eu testar mentalmente ou na prática):
- Se eu digitar
→ saída: “O número é inteiro e ímpar”. - Se eu digitar
→ saída: “O número é inteiro e par”. - Se eu digitar
→ saída: “O número não é inteiro”. - Se eu digitar
→ saída: “O número é inteiro e ímpar”. - Se eu digitar “abc” → saída: “Entrada inválida, digite um número válido.”
Passo 8
Agora que entendemos tudo, aqui está o programa em Python pronto para usar. Ele implementa exatamente o algoritmo explicado e trata vírgula/ponto e entradas inválidas. O código está na seção de resposta final conforme pedido.
Resposta
def main():
s = input("Digite um número: ").strip()
# aceita vírgula como separador decimal
s = s.replace(",", ".")
try:
x = float(s)
except ValueError:
print("Entrada inválida. Digite um número válido.")
return
if x.is_integer():
n = int(x)
if n % 2 == 0:
print("O número é inteiro e par.")
else:
print("O número é inteiro e ímpar.")
else:
print("O número não é inteiro.")
if __name__ == "__main__":
main()