1
resposta

[Projeto] Resolução Exercício [Dart][Calculadora IMC]

Saudações, realizei o projeto proposto na aula: https://cursos.alura.com.br/extra/alura-mais/usando-o-teclado-para-entrada-e-saida-de-dados-com-dart-c1404 Porém não consegui debuga-lo por erro no VS code, segue código:

/* Exercício proposto
https://cursos.alura.com.br/extra/alura-mais/usando-o-teclado-para-entrada-e-saida-de-dados-com-dart-c1404
Utilizar input para receber o nome, idade, peso e idade 
e apresenta as informações

Planejamento do código
primeira Funcionalidade, coleta as informações
segunda Funcionalidade, calcula o IMC
terceira Funcionalidade, Mostra a mensagem na tela

Fórmula IMC = Peso / idade ^ 2

Implementar Switch para dar nota ao IMC:
IMC (kg/m2)	Classificação
Menor que 16,9	Muito abaixo do peso
17 a 18,4	Abaixo do peso
18,5 a 24,9	Peso normal
25 a 29,9	Acima do peso
30 a 34,9	Obesidade grau 1
35 a 40	Obesidade grau 11
Maior que 40	Obesidade grau 11 1
 */

import 'dart:io';
void main() {

String? nome = funcNome();
double? altura = funcAltura();
double? peso = funcPeso();
double? IMC = funcCalculaIMC (altura!, peso!);
String? notaIMC = funcClassificaIMC (IMC!);
String? printNaTela = funcPrintNaTela(nome!, altura, peso, IMC, notaIMC!);
}
//Inicia as funções que coletam os dados
  double? funcAltura () {
    print('Qual é a sua Altura em Metros?');
    String? inputAltura = stdin.readLineSync();
    if (inputAltura != null) {
      double altura = double.parse(inputAltura);
    return altura;}
  }

  double? funcPeso () {
    print('Qual é o seu peso em Kilogramas ?');
    String? inputPeso = stdin.readLineSync();
    if (inputPeso != null) {
      double peso = double.parse(inputPeso);
    return peso;}
  }

  String? funcNome () {
    print('Qual o seu Nome?');
    String? inputNome = stdin.readLineSync();
    if (inputNome != null) {
      String nome = inputNome;
    return nome;}
  }
//Finaliza as funções que coletam os dados

//Calcula o IMC
  double? funcCalculaIMC (double altura, double peso) {
    double IMC = peso / (altura*altura);
    return IMC;

  } 

// Classifca o IMC
  String? funcClassificaIMC (double IMC){
    void main() {
      var grade = IMC;

      switch (grade) {
        case <= 16.9 :
          {
            print("Muito abaixo do peso");
          }
          break;

        case <= 18.4:
          {
            print("Abaixo do peso");
          }
          break;

        case <= 24.9:
          {
            print("Peso normal");
          }
          break;

        case <= 29.9:
          {
            print("Acima do peso");
          }
          break;
        case <= 34.9:
          {
            print("Obesidade grau I");
          }
          break;

        case <= 40:
          {
            print("Obesidade grau II");
          }
          break;

        case > 40.0:
          {
            print("Obesidade grau III");
          }
          break;

        default:
          {
            print("Erro no Cálculo");
          }
          break;
      }
    }

}
// Print na tela
  String? funcPrintNaTela (String nome, double altura, double peso, double IMC, String notaIMC) {
    print(' Olá $nome !, Você tem altura de $altura metros, pesa $peso quilogramas, seu IMC $IMC é de kg/m2, ou seja, você está: $notaIMC ');

  }

1 resposta

Olá Alison!

Pelo código que você compartilhou, identifiquei alguns erros que podem estar causando o problema no VS Code. Vou te ajudar a corrigi-los:

  1. Na função funcClassificaIMC, você está declarando novamente a função main(). Isso não é necessário, pois você já tem uma função main() no início do código. Portanto, você pode remover essa declaração extra.

  2. Na função funcClassificaIMC, você está utilizando a estrutura switch de forma incorreta. A estrutura switch não permite comparações como case <= 16.9. Para corrigir isso, você pode utilizar uma sequência de if e else if para realizar as comparações. Por exemplo:

if (grade <= 16.9) {
  print("Muito abaixo do peso");
} else if (grade <= 18.4) {
  print("Abaixo do peso");
} else if (grade <= 24.9) {
  print("Peso normal");
} else if (grade <= 29.9) {
  print("Acima do peso");
} else if (grade <= 34.9) {
  print("Obesidade grau I");
} else if (grade <= 40) {
  print("Obesidade grau II");
} else if (grade > 40.0) {
  print("Obesidade grau III");
} else {
  print("Erro no Cálculo");
}

Com essas correções, seu código deve funcionar corretamente no VS Code. Lembre-se de salvar as alterações e executar o código novamente.

Espero ter ajudado! Bons estudos!