Mobile App Development · Dart/Flutter
Sua própria versão do calculador de IMC: leitura via stdin, validação de entradas e recomendação por faixa.
Desafio 1
O mesmo problema resolvido em imc_exercicio.dart — ler peso e altura via stdin, validar entradas inválidas, calcular o IMC com peso / (altura * altura), classificar nas quatro faixas padrão e exibir uma recomendação — mas com uma solução independente: validação embutida direto no laço de leitura (sem funções auxiliares separadas) e classificação/recomendação com switch expression e padrões relacionais (< 18.5, < 25.0...), um recurso do Dart 3.
// Desafio: mesmo problema do exercicio (calcular IMC e classificar), resolvido de forma
// independente — validacao inline no laco principal, sem funcoes auxiliares separadas.
import 'dart:io';
void main() {
double? peso;
while (peso == null) {
stdout.write('Digite seu peso (kg): ');
peso = double.tryParse(stdin.readLineSync() ?? '');
if (peso == null || peso <= 0) {
print('Peso invalido. Digite um numero maior que zero.');
peso = null;
}
}
double? altura;
while (altura == null) {
stdout.write('Digite sua altura (m): ');
altura = double.tryParse(stdin.readLineSync() ?? '');
if (altura == null || altura <= 0) {
print('Altura invalida. Digite um numero maior que zero.');
altura = null;
}
}
final double imc = peso / (altura * altura);
final String classificacao = switch (imc) {
< 18.5 => 'Abaixo do peso',
< 25.0 => 'Peso normal',
< 30.0 => 'Sobrepeso',
_ => 'Obesidade',
};
final String recomendacao = switch (classificacao) {
'Abaixo do peso' => 'Procure orientação profissional para ganho de peso saudável.',
'Peso normal' => 'Continue mantendo uma rotina saudável.',
'Sobrepeso' => 'Avalie ajustes na alimentação e prática de atividades físicas.',
_ => 'Busque acompanhamento médico para um plano individualizado.',
};
print('IMC: ${imc.toStringAsFixed(2)}');
print('Classificação: $classificacao');
print('Recomendação: $recomendacao');
}
Saída esperada
Ao digitar 90 para o peso e 1.80 para a altura:
Digite seu peso (kg): 90 Digite sua altura (m): 1.80 IMC: 27.78 Classificação: Sobrepeso Recomendação: Avalie ajustes na alimentação e prática de atividades físicas.
Como executar
Depois de implementado, o terminal vai pausar aguardando você digitar o peso e, em seguida, a altura.
dart run 14-DesafioIMC/03_Desafios/codigo_fonte/DesafioIMC.dart