Skip to content
Variáveis, Tipos e OperadoresModo de leitura focado
DifícilFase 2

Exercício Difícil — Calculadora de IMC com Classificação

Junta tudo: variáveis, tipos, aritmética e comparações, num só programa com sentido real.

FerramentasVS CodeTerminalNode.js

Este exercício combina tudo o que viste nesta fase num problema com utilidade real: calcular o Índice de Massa Corporal (IMC) e preparar (sem ainda escreveres if/else, que é tema da Fase 3) as condições booleanas que vão decidir a classificação.

Passos a realizar

  1. Cria imc.js na pasta fase2.
  2. Declara const pesoKg e const alturaMetros.
  3. Calcula o IMC com a fórmula peso a dividir por altura ao quadrado, e guarda o resultado numa variável imc.
  4. Cria quatro variáveis booleanas, uma para cada faixa da classificação da OMS, usando comparações e operadores lógicos:
    • abaixoDoPeso — imc menor que 18.5.
    • pesoNormal — imc maior ou igual a 18.5 e menor que 25.
    • sobrepeso — imc maior ou igual a 25 e menor que 30.
    • obesidade — imc maior ou igual a 30.
  5. Imprime o valor do IMC arredondado a uma casa decimal e o valor das quatro variáveis booleanas.
  6. Confirma, para um peso e altura que dão IMC próximo de 22, que só pesoNormal fica verdadeiro e as outras três ficam falsas.

Código de exemplo

imc.js
const pesoKg = 70;
const alturaMetros = 1.75;

const imc = pesoKg / (alturaMetros * alturaMetros);

const abaixoDoPeso = imc < 18.5;
const pesoNormal = imc >= 18.5 && imc < 25;
const sobrepeso = imc >= 25 && imc < 30;
const obesidade = imc >= 30;

console.log("IMC:", Math.round(imc * 10) / 10);
console.log({ abaixoDoPeso, pesoNormal, sobrepeso, obesidade });
Ponto de partida

Dicas

  • Só uma das quatro variáveis booleanas deve ficar verdadeira de cada vez — se duas ficarem verdadeiras ao mesmo tempo, há um erro nos limites das comparações.
  • Para arredondar a uma casa decimal, multiplica por 10, arredonda ao inteiro mais próximo, e divide por 10 outra vez.

Erros comuns

  • Esquecer os parênteses à volta de "altura vezes altura" dentro da divisão, alterando a ordem das operações.
  • Definir os limites das faixas com maior em vez de maior-ou-igual (ou o contrário), criando um "buraco" onde nenhuma variável fica verdadeira para certos valores de IMC.

As minhas dúvidas

Voltar à vista da fase