Atividade - IMC

  • Escrever um programa que leia o peso e a altura de uma pessoa e calcule seu índice de massa corporal (IMC) de acordo com a fórmula:
\text { IMC }=\text { peso }(\text { em quilos }) \div \text { altura }^{2} \text { (em metros) }
  • O programa deve classificar uma pessoa de acordo com o IMC, nas seguintes faixas:
Menor que 18,5 - Abaixo do peso
Entre 18,5 e 25,0 - Peso normal
Entre 25,0 e 30,0 - Pré-obesidade
Entre 30,0 e 35,0 - Obesidade Grau 1
Entre 35,0 e 40,0 - Obesidade Grau 2
Acima de 40 - Obesidade Grau 3
  • As faixas de IMC indicadas previamente são para pessoas (mulheres e homens) acima de 20 anos
  • Para adolescentes (entre 10 e 20 anos) as faixas são diferentes para homens e mulheres
  • Para homens:
Idade Baixo Peso Adequado Sobrepeso
10 < 14,42 entre 14,42 e 19,60 >=19,60
11 < 14,83 entre 14,83 e 20,35 >= 20,35
12 < 15,24 entre 15,24 e 21,12 >= 21,12
13 < 15,73 entre 15,73 e 21,93 >= 21,93
14 <16,18 entre 16,18 e 22,77 >= 22,77
15 < 16,59 entre 16,59 e 23,63 >= 23,63
16 <17,01 entre 17,01 e 24,45 >=24,45
17 <17,31 entre 17,31 e 25,28 >=25,28
18 < 17,54 entre 17,54 e 25,95 >= 25,95
19 <17,80 entre 17,80 e 26,36 >=26,36
  • As faixas de IMC indicadas previamente são para pessoas (mulheres e homens) acima de 20 anos
  • Para adolescentes (entre 10 e 20 anos) as faixas são diferentes para homens e mulheres
  • Para mulheres:
Idade Baixo Peso Adequado Sobrepeso
10 <14,23 entre 14,23 e 20,19 >= 20,19
11 < 14,60 entre 14,60 e 21,18 >= 21,18
12 < 14,98 entre 14,98 e 22,17 >= 22,17
13 < 15,36 entre 15,36 e 23,08 >= 23,08
14 < 15,67 entre 15,67 e 23,88 >= 23,88
15 < 16,01 entre 16,01 e 24,29 >= 24,29
16 <16,37 entre 16,37 e 24,74 >= 24,74
17 < 16,59 entre 16,59 e 25,23 >= 25,23
18 < 16,71 entre 16,71 e 25,56 >= 25,56
19 <16,87 entre 16,87 e 25,85 >= 25,85

Passo 1

O enunciado pede um programa que leia peso, altura, idade e sexo de uma pessoa, calcule o índice de massa corporal (IMC) usando a fórmula e depois classifique essa pessoa em faixas diferentes conforme a idade (adulto ou adolescente) e, no caso de adolescente, conforme o sexo. Para resolver precisamos saber:
  • Como ler variáveis de entrada (peso, altura, idade, sexo).
  • Como calcular o IMC com a fórmula
\text{IMC} = \frac{\text{peso (kg)}}{\bigl(\text{altura (m)}\bigr)^2}
  • Como usar estruturas condicionais para comparar o IMC com os limiares, que variam segundo a idade e o sexo.

Passo 2

Calcular o IMC imediatamente após ler peso e altura:
\text{IMC} = \frac{\text{peso}}{\text{altura}^2}
Armazene esse valor numa variável, por exemplo, imc.

Passo 3

Verificar se a pessoa é adulta (idade acima de 20 anos). Se for, usar as faixas fixas:
  • \text{imc} < 18{,}5 → “Abaixo do peso”
  • 18{,}5 \le \text{imc} < 25{,}0 → “Peso normal”
  • 25{,}0 \le \text{imc} < 30{,}0 → “Pré-obesidade”
  • 30{,}0 \le \text{imc} < 35{,}0 → “Obesidade Grau 1”
  • 35{,}0 \le \text{imc} < 40{,}0 → “Obesidade Grau 2”
  • \text{imc} \ge 40{,}0 → “Obesidade Grau 3”

Passo 4

Se a pessoa tiver idade entre 10 e 20 anos, testar primeiro o sexo.
Para sexo masculino, use a tabela de limiares conforme a idade (10–19). Por exemplo, para idade =12:
  • \text{imc} < 15{,}24 → “Baixo peso”
  • 15{,}24 \le \text{imc} \le 21{,}12 → “Adequado”
  • \text{imc} > 21{,}12 → “Sobrepeso”
    E assim por diante para cada valor de idade de 10 a 19.

Passo 5

Para sexo feminino, usar a outra tabela de limiares. Por exemplo, para idade =14:
  • \text{imc} < 15{,}67 → “Baixo peso”
  • 15{,}67 \le \text{imc} \le 23{,}88 → “Adequado”
  • \text{imc} > 23{,}88 → “Sobrepeso”
    E seguir a tabela completa de 10 a 19 anos.

Passo 6

Implementar tudo em um programa. Abaixo está um exemplo em Python, mas pode ser adaptado a qualquer linguagem:
# Leitura dos dados
peso = float(input("Peso (kg): "))
altura = float(input("Altura (m): "))
idade = int(input("Idade (anos): "))
sexo = input("Sexo (M/F): ").strip().upper()

# Cálculo do IMC
imc = peso / (altura ** 2)

# Função auxiliar para tabelas de adolescentes
def \(classifica_adolescente\)(sexo, idade, imc):
 # Dicionários de tuplas (baixo, alto) para cada idade
 tabelas = {
 'M': {
 10: (14.42, 19.60), 11: (14.83, 20.35), 12: (15.24, 21.12),
 13: (15.73, 21.93), 14: (16.18, 22.77), 15: (16.59, 23.63),
 16: (17.01, 24.45), 17: (17.31, 25.28), 18: (17.54, 25.95),
 19: (17.80, 26.36)
 },
 'F': {
 10: (14.23, 20.19), 11: (14.60, 21.18), 12: (14.98, 22.17),
 13: (15.36, 23.08), 14: (15.67, 23.88), 15: (16.01, 24.29),
 16: (16.37, 24.74), 17: (16.59, 25.23), 18: (16.71, 25.56),
 19: (16.87, 25.85)
 }
 }
 if idade not in tabelas[sexo]:
 return None
 baixo, alto = tabelas[sexo][idade]
 if imc < baixo:
 return "Baixo peso"
 if imc <= alto:
 return "Adequado"
 return "Sobrepeso"

# Classificação final
if idade > 20:
 if imc < 18.5:
 classificacao = "Abaixo do peso"
 elif imc < 25.0:
 classificacao = "Peso normal"
 elif imc < 30.0:
 classificacao = "Pré-obesidade"
 elif imc < 35.0:
 classificacao = "Obesidade Grau 1"
 elif imc < 40.0:
 classificacao = "Obesidade Grau 2"
 else:
 classificacao = "Obesidade Grau 3"
elif 10 <= idade <\(=20\):
 classificacao = \(classifica_adolescente\)(sexo, idade, imc)
 if classificacao is None:
 classificacao = "Idade inválida para tabela de adolescente"
else:
 classificacao = "Idade abaixo de 10 anos não suportada"

print(f"IMC = {imc:.2f}{classificacao}")

Resposta

O código acima implementa todos os requisitos: lê peso, altura, idade e sexo; calcula o IMC; e faz a classificação para adultos e adolescentes segundo as tabelas fornecidas.

Exercícios relacionados