Em laboratório, um engenheiro ambiental mede a massa de uma amostra de solo antes e depois da secagem para determinar o teor de umidade.
Crie um programa que receba a massa úmida e a massa seca e calcule o percentual de umidade da amostra.
Passo 1
O que o enunciado pede e o que é fornecido:
- Pedido: criar um programa que receba a massa úmida e a massa seca de uma amostra de solo e calcule o percentual de umidade da amostra.
- Entradas (fornecidas ao programa): a massa úmida e a massa seca (valores numéricos, em gramas ou quilogramas — a unidade é qualquer uma, desde que as duas massas usem a mesma unidade).
- Saída esperada: o percentual de umidade da amostra (um número em porcentagem, por exemplo
). - Observações importantes que o enunciado implica:
- A massa úmida deve ser maior ou igual à massa seca (
). - A massa seca não pode ser zero (
), caso contrário a definição que usaremos dá divisão por zero.
- A massa úmida deve ser maior ou igual à massa seca (
Passo 2
Definição e fórmula (explicação didática e escolha da convenção):
- Em ciência do solo existem duas formas comuns de expressar teor de umidade:
- base úmida (wet basis):
- base seca (gravimétrica, muito usada em solos):
- base úmida (wet basis):
- Explicando as variáveis:
-
é a massa da amostra antes da secagem (contém água + sólidos). -
é a massa da amostra depois da secagem (só sólidos). -
é a massa de água perdida na secagem.
-
- Escolha usada no programa: adotaremos a definição gravimétrica (base seca), por ser a convenção comum em laboratório de solos. Assim a fórmula que vamos implementar é
- Comentário prático: essa fórmula dá a massa de água por massa de sólidos secos, multiplicada por
para expressar em porcentagem.
Passo 3
Passos algorítmicos que o programa deve executar (versão “muito mastigada” para a prova):
- Ler do usuário o valor de
. - Ler do usuário o valor de
. - Verificar se os valores são válidos:
- Ambos devem ser números.
- Deve valer
. - Deve valer
.
Se alguma verificação falhar, o programa deve avisar o usuário e terminar (ou pedir outro valor).
- Calcular
. - Calcular o teor de umidade pela fórmula
. - Exibir o resultado com formatação adequada (por exemplo com duas casas decimais e o símbolo
).
Passo 4
Dicas de implementação e tratamento de casos comuns (para aplicar na prova e no código):
- Conversão de entrada: sempre transformar a entrada de texto em número de ponto flutuante (ex.: “120” →
). No código em Python usa-se float(...). - Validações simples que salvam da trapalhada na hora da prova:
- Se
avisa que a operação é inválida. - Se
avisa que os dados estão inconsistentes (não faz sentido físico).
- Se
- Formatação: para apresentar porcentagem com duas casas decimais usar algo como
format(valor, ".2f")ou f-strings em Python:f"{valor:.2f}%". - Exemplo numérico para treinar na prova:
- Suponha
e . - Então
. - Teor de umidade:
. - Se alguém usasse a outra convenção (wet basis) o resultado seria
; por isso é importante declarar qual definição está usando.
- Suponha
Passo 5
Programa em Python (passo a passo do que o código faz, linha a linha):
- O programa abaixo lê duas massas do teclado, verifica se são válidas e calcula o teor de umidade na base seca.
- Estrutura de tratamento de erro: se a conversão para número falhar ou as condições físicas não forem atendidas, o programa mostra uma mensagem amigável.
Resposta
#!/usr/bin/env python3
# Programa para calcular o teor de umidade (base seca) de uma amostra de solo.
# Fórmula usada:
# Teor (%) = (m_umida - m_seca) / m_seca * 100
def main():
try:
m_umida_str = input("Digite a massa úmida da amostra (mesma unidade para ambas): ").strip()
m_seca_str = input("Digite a massa seca da amostra (mesma unidade para ambas): ").strip()
m_umida = float(m_umida_str.replace(",", "."))
m_seca = float(m_seca_str.replace(",", "."))
except ValueError:
print("Erro: entradas inválidas. Digite números (use vírgula ou ponto decimal).")
return
if m_seca <= 0:
print("Erro: a massa seca deve ser maior que zero.")
return
if m_umida < m_seca:
print("Erro: a massa úmida deve ser maior ou igual à massa seca.")
return
m_agua = m_umida - m_seca
teor = (m_agua / m_seca) * 100.0
print(f"Teor de umidade (base seca): {teor:.2f}%")
if __name__ == "__main__":
main()