2
respostas

Por que funcionou no IMC e não funciona no futebol?

Pessoal, mesmo tendo assistido à aula, ainda não consegui compreender porque o parseInt() não foi necessário no cálculo do IMC e nesse de futebol foi. Alguém poderia me ajudar?

2 respostas

Olá, espero poder ajudar com o que compreendi:

  • no código do imc tá assim
    function calculaImc(peso, altura) {

        return peso / (altura * altura); //mudar os simbolos aqui
    }

    var nome = prompt ("Informe o seu nome");    
    var pesoInformado = prompt (nome + ", informe seu peso");
    var alturaInformada = prompt(nome + ", informe sua altura");

    var imc = calculaImc(pesoInformado, alturaInformada);

    mostra(nome + ", o seu IMC calculado é " + imc); //+ aqui pra juntar as infos
  • No caso do cálculo do IMC é que ele recebe os números vindos dos Prompts e depois usa dentro da Função uma multiplicação e divisão: nesses dois casos o JavaScript(JS) vai entender como números mesmo - não precisando do parseInt();
  • se vc testar trocar o / por um + na função vai dar o mesmo erro que o prof mostrou no exemplo do futebol;
  • Já no caso da soma [que tem 2 usos no código: o de somar números e o de juntar/concatenar informações], o JS vai entender os números do Prompt como string mesmo e concatenar as informações - como a gente já viu em algumas aulas passadas
  • Para evitar a fadiga e facilitar nossa vida, se as infos que a gente espera do usuário forem números, a gente usa o parseInt() para o JS fazer as operações matemáticas direitinho.
  • É isso, espero ter ajudado :)

Fiz desse jeito colega

<meta charset="UTF-8">

<script>

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

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    var nomedoTime = prompt("Informe o nome do seu time!");
    var numerodeVitorias = +prompt(nomedoTime + ", informe o número de vitórias do seu time!");
    alert("A pontuação de vitórias é " + numerodeVitorias * 3);
    var numerodeEmpates = +prompt(nomedoTime + ", informe o número de empates do seu time!");
    alert("A pontuação de empates é " + numerodeEmpates * 1);

    var pontos = (numerodeVitorias * 3) + numerodeEmpates;
    let mensagem = pontos === 1 ? "ponto" : "pontos" | pontos === 0 ? ". Invista nos treinos" : "pontos";
    mostra(`${nomedoTime}, o total de pontos do seu time é ${pontos} ${mensagem}.`);

</script>