2
respostas

[Bug] Exercício proposto no vídeo Entendendo Input e Output no Dart

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 Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

QUE PROJETO LINDO!!!!

CARACA Wellington você arrasou MUITO agora!

Projeto bem organizado, com detalhes que demonstram seu conhecimento e experiencia! Pode colocar no seu portifólio tranquilamente.

Eu tentei busca rmelhorias mas a unica coisa que eu achei ( que nem é uma grande melhoria) seria a de manter todas as variaveis no padrão de camelCase, no caso a variável NumeroEmTexto poderia ser numeroEmTexto.

Lembrando que a variavel é da função paraDoubleComPonto.

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!);
}

De resto ta tudo muito bom, para deixar mais profissional o maximo que você pode implementar é o conceito de Enum para os graus de obesidade, mas ai é um exageiro que não precisamos nesse projeto.

Continue o bom trabalho!

Muito obrigado!!

Vou estudar o que é Enum, tenho dificuldade no camelCase, no caso na mesma função NumeroConvertido também deveria ser numeroConvertido? isso se aplica em todas as variaveis, se não em quais casos não se aplicariam?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software