Referente ao video Entendendo Input e Output no Dart que está postado no Formação Dart, apanhei muito para conseguir fazer funcionar, gostaria que fosse apontador erros ou onde tenho que buscar melhoras.
/// Exercicio proposto no video https://www.youtube.com/watch?v=LLmBWjF6F8M
/// Calcular o IMC(Índice de Massa Corporal)
/// É um cálculo simples que permite medir se alguém está ou não com o peso ideal.
/// basta dividir o peso pela altura ao quadrado
///
/// Menor que 16 - Magreza grave
// 16 a menor que 17 - Magreza moderada
// 17 a menor que 18,5 - Magreza leve
// 18,5 a menor que 25 - Saudável
// 25 a menor que 30 - Sobrepeso
// 30 a menor que 35 - Obesidade Grau I
// 35 a menor que 40 - Obesidade Grau II (considerada severa)
// Maior que 40 - Obesidade Grau III (considerada mórbida)
///
/// Program deve receber:
/// Nome
/// idade
/// Altura
/// peso
import 'dart:io';
//converter para formatado double mesmo numeros informados com separador decimal com virgula
double paraDoubleComPonto({String NumeroEmTexto = "0"}) {
//Converte o separador deciman "," em ".", se caso for digitado assim
if (NumeroEmTexto.indexOf(',') > -1) {
NumeroEmTexto = NumeroEmTexto.replaceFirst(',', '.');
}
double? NumeroConvertido = double.tryParse(NumeroEmTexto.toString());
return (NumeroConvertido!);
}
void main(List<String> args) {
double altura = 0;
double peso = 0;
//Pegando os dados com o usuário
print("Insira seu nome");
String? nome = stdin.readLineSync();
print("Insira sua idade");
String? idade = stdin.readLineSync();
print("Insira insira sua altura");
String? entrada = stdin.readLineSync();
if (entrada != null)
altura = paraDoubleComPonto(NumeroEmTexto: entrada.toString());
print("Insira seu peso em kg");
entrada = stdin.readLineSync();
if (entrada != null)
peso = paraDoubleComPonto(NumeroEmTexto: entrada.toString());
double imc = peso / (altura * altura);
String repostaSobreIMC = "podemos afirmar que ";
/// Menor que 16 - Magreza grave
if (imc < 16)
repostaSobreIMC += "você está gavemento abaixo do seu peso ideal.";
// 16 a menor que 17 - Magreza moderada
if (imc >= 16 && imc < 17)
repostaSobreIMC += "você está muito abaixo do seu peso ideal.";
// 17 a menor que 18,5 - Magreza leve
if (imc >= 17 && imc < 18.5)
repostaSobreIMC += "você está abaixo do seu peso ideal.";
// 18,5 a menor que 25 - Saudável
if (imc >= 18.5 && imc < 25)
repostaSobreIMC += "você está com o peso ideal, parabéns!";
// 25 a menor que 30 - Sobrepeso
if (imc >= 25 && imc < 30) repostaSobreIMC += "você está com sobrepeso.";
// 30 a menor que 35 - Obesidade Grau I
if (imc >= 30 && imc < 35)
repostaSobreIMC += "você está com obesidade Grau I.";
// 35 a menor que 40 - Obesidade Grau II (considerada severa)
if (imc >= 35 && imc < 40)
repostaSobreIMC += "você está com obesidade Grau II.";
// Maior que 40 - Obesidade Grau III (considerada mórbida)
if (imc >= 40) repostaSobreIMC += "você está com obesidade Grau III.";
double pesoMax = 24 * (altura * altura);
double pesoMin = 18.5 * (altura * altura);
repostaSobreIMC +=
"\n\tO peso ideal para sua altura está entre ${pesoMin.toStringAsFixed(2)} e ${pesoMax.toStringAsFixed(2)}";
String msgIMC = "Olá $nome!\n\tConforme esses dados inforamdos:\n"
'\t\tIdade:\t$idade anos\n'
'\t\tAltura:\t$altura\n'
'\t\tPeso:\t$peso'
'Kg\n\n'
'\tSeu imc é ${imc.toStringAsFixed(2)} com isso $repostaSobreIMC';
/* print('');
print(msgIMC);
//print("$nome\n$idade\n$altura\n$peso");*/
}
Exemplos da saída