1
resposta

Usar o parseInt é tão errado assim? Ao invés de dar o retorno do cálculo do IMC meu programa da o retorno do peso... QUE???

Olá,

Estava praticando com o conhecimento que adquiri na aula de Lógica de Programação do professor Flávio e me deparei com a seguinte situação: Eu tentava imprimir no navegador o resultado do cálculo de IMC que programei, mas, ao invés de fazer isso ele simplesmente imprimia o valor do peso que eu informei no prompt. Não consegui achar aonde está o erro, alguém consegue me ajudar? Segue o meu código:

OBS: Um detalhe que eu percebi: No meu código eu coloquei parseInt quando chamei o comando prompt, mas o professor Flávio não fez isso na vídeo aula... Agora achei estranho, quando não colocamos o parseInt, o comando prompt nos devolve uma String, não é? Sei que para operações matemáticas de multiplicação e divisão o Javascript converte os números dentro de aspas para números de verdade, então a função calculaImc ainda consegue dar algum resultado. Mas, usar o parseInt nesse caso está tão errado assim?

<meta charset='UTF-8'>

<script>

    function pulaLinha(){

        document.write("<br>");
}
    function escreva(frase){

        document.write(frase);
        pulaLinha();
}
    function calculaImc (altura, peso){

        return peso / (altura * altura);
}
    var alturaInformada = parseInt(prompt("Informe a sua altura"));
    var pesoInformado = parseInt(prompt("Informe o seu peso"));
    var imc = calculaImc (alturaInformada, pesoInformado);

    escreva("Seu imc é: " + imc);

    if(imc > 35) {
        escreva("Você está acima do peso :(");
    }
    if(imc <18) {
        escreva("você está abaixo do peso :(");
    }
    if(imc >= 18 && imc <= 35){
        escreva("Seu imc está ótimo :)");
    }

</script>
1 resposta

Acontece que você está usando o parseInt() na altura e no peso, ou seja, em ambos isso vai retornar um número inteiro. Imagino que você tenha usado como altura 1.X, que é o mais comum, ou seja, alguém que tenha menos que dois metros de altura. De qualquer forma, se você usar 1.80, como há o parseInt(), vai retornar apenas 1. Então vamos para a conta: o peso vai ser dividido pela altura ao quadrado, pelo seu código a altura ao quadrado sempre vai ser 1, por isso só retorna o seu peso. Tente colocar a altura de 2m pra cima, você vai verificar a mudança no seu resultado. Em cálculo de IMC talvez não seja tão interessante utilizar o parseInt(), mas caso queira mesmo usar, coloque no resultado e não nos parâmetros.

Da uma olhada nesse site aqui, pode ajudar um pouco mais: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/parseInt