📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Guia de Linguagens de Programação. Recomendado revisar antes de começar.

⚖️ Calculadora de IMC Multilinguagem (38 Tecnologias)

v1.0 — Lógica de Programação, Estruturas Condicionais e Sintaxe Comparada

Trilha de Especialização Pedagógica — Projeto 1 de 4

🎓 Nível Profissional Simulado: Estagiário / Desenvolvedor Trainee. Um desenvolvedor versátil não fica preso a uma única linguagem: ele domina os conceitos universais de lógica (tipagem, I/O, condicionais encadeadas, ponto flutuante) e consegue transitar rapidamente entre qualquer ecossistema tecnológico.

—`

🎯 Objetivo & Escopo do Projeto

Implementar a Calculadora de Índice de Massa Corporal (IMC) seguindo as tabelas oficiais da Organização Mundial da Saúde (OMS) em 38 linguagens de programação diferentes, garantindo paridade total de regras de negócio, formatação de saída e tratamento de entradas.

—`

🧑‍💼 Fase 1 — Levantamento de Requisitos

O Briefing do Cliente (Clínica Médica de Saúde Preventiva)

“Precisamos de um utilitário de terminal para nossos nutricionistas calcularem o IMC dos pacientes. O programa deve receber o peso em quilos e a altura em metros, calcular $IMC = \frac{peso}{altura^2}$, exibir o valor com 2 casas decimais e categorizar nas faixas: Abaixo do peso (< 18.5), Peso normal (18.5 a 24.9), Sobrepeso (25.0 a 29.9) e Obesidade (>= 30.0).”

Requisitos Funcionais (RF) e Não-Funcionais (RNF)

ID Tipo Descrição Origem no Briefing
RF01 Funcional Receber peso ($kg$) e altura ($m$) como números de ponto flutuante. “receber o peso e altura”
RF02 Funcional Calcular $IMC = peso / (altura * altura)$ com precisão decimal. “calcular IMC”
RF03 Funcional Classificar o resultado nas 4 faixas oficiais da OMS. “categorizar nas faixas”
RNF01 Não-Funcional Implementação em 38 linguagens mantendo exatamente o mesmo algoritmo. Matriz Multilinguagem
RNF02 Não-Funcional Saída padronizada no console CLI. Usabilidade CLI

—`

📋 Fase 2 — Backlog & User Stories

ID User Story Prioridade
US01 Como nutricionista, quero digitar peso e altura e ver o IMC calculado com classificação. Alta
US02 Como estudante, quero comparar a sintaxe em C, Java, Go, Rust e Python lado a lado. Alta

—`

🌿 Fase 3 — Engenharia em Equipe (Git Flow & Execução)

# Executar a versão em Python
python python/imc.py

# Compilar e executar a versão em C
gcc c/imc.c -o imc && ./imc

# Executar a versão em Rust
rustc rust/imc.rs && ./imc

—`

🛠️ Fase 4 — Implementação Guiada (Exemplo Python & C)

# python/imc.py
def calcular_imc(peso: float, altura: float) -> tuple[float, str]:
    imc = peso / (altura ** 2)
    if imc < 18.5:
        classificacao = "Abaixo do peso"
    elif imc < 25.0:
        classificacao = "Peso normal"
    elif imc < 30.0:
        classificacao = "Sobrepeso"
    else:
        classificacao = "Obesidade"
    return imc, classificacao

—`

🚀 Como Executar no Laboratório

1. Abra o terminal na pasta deste projeto

No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:

cd multilang_imc_38

2. Execute a aplicação ou testes

# Executar comandos específicos da tecnologia:
python main.py # ou npm run dev / ./gradlew build

[!TIP] Dica para execução a partir da raiz do repositório: Se você abriu o repositório completo no VS Code, basta navegar até a pasta antes de executar: cd proj_aplicacoes_full_stack/projetos/multilang_imc_38`

🧭 Decisões de Arquitetura (ADRs)

—`

🧪 Testes de Validação & Troubleshooting

Entrada: Peso = 70.0 kg, Altura = 1.75 m
Saída Esperada: IMC = 22.86 (Peso normal)

—`

✅ Checkpoint Final

  1. O cálculo de IMC está matematicamente correto em todas as 38 tecnologias.
  2. Classificação condicional cobre todos os casos de borda.

⬅️ Ver Todos os Projetos no Super-Hub 🏠 Página Inicial do Portal