Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Segue o código que fiz

Boa noite ou dia amados! Meu código funcionou perfeitamente, porém fiz de outra forma e quero saber se está correto, segue o código:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/estilo.css">
<link href="https://fonts.googleapis.com/css?family=Jua"
    rel="stylesheet">

<title>IMC</title>
</head>
<body>

    <h1 class="titulo">Seja bem vindo ao IMC</h1>
    <script>
        function pulaLinha() {

            document.write("<br>");

        }

        function mostra(frase) {

            document.write("<big>" + frase + "</big>");
            pulaLinha();

        }

        function calculaImc(altura, peso) {

            return Math.round(peso / (altura * altura));

        }

        //mostra("O imc é: " + calculaImc());

        var totalImc = calculaImc(prompt("Qual o altura?"),
                prompt("Qual o peso?"))
                + calculaImc(prompt("Qual a altura2?"), prompt("Qual o peso2"));

        mostra("A soma dos dois imc's é: " + totalImc);
    </script>

</body>
</html>
5 respostas
solução!

Boa noite, Renato! Como vai?

Uma observação não-técnica e sim simplesmente sobre o problema que vc está resolvendo com seu código é que ao utilizar o Math.round() pra arredondar o resultado, embora tenha sido uma ideia legal, faz com que o resultado final do IMC possa acabar sendo algo incorreto! Veja só, se o valor do IMC for 24,5, com o arredondamento esse valor passará a ser 25. Mas, de acordo com a tabela do IMC (que pode ser vista a seguir), a pessoa estaria "acima do peso" quando na realidade, o resultado correto deveria indicar "peso normal". E esse problema acontece justamente por causa do arredondamento.

Resultado            Situação
Entre 18,5 e 24,99    Peso normal
Entre 25 e 29,99      Acima do peso
Entre 30 e 34,99      Obesidade I
Entre 35 e 39,99      Obesidade II (severa)

Outra observação, agora técnica, é que ao fazer isso:

var totalImc = calculaImc(prompt("Qual o altura?"),
                prompt("Qual o peso?"))
                + calculaImc(prompt("Qual a altura2?"), prompt("Qual o peso2"));

Vc acaba por perder legibilidade e semântica no seu código. Quem bate o olho nessa linha tem que parar uns instantes pra analisar e entender o que está sendo feito. Agora, veja só o mesmo código escrito dessa outra forma:

var altura1 = prompt("Qual o altura?");
var peso1 = prompt("Qual o peso?");
var imc1 = calculaImc(altura1, peso1);

var altura2 = prompt("Qual o altura?");
var peso2 = prompt("Qual o peso?");
var imc2 = calculaImc(altura2, peso2);

var totalImc = imc1 + imc2;

Bem mais legível e semântico! Dessa forma, vc ou outra pessoa qualquer bate o olho no código e entende o que cada coisa significa! E isso traz um outro ganho: manutenibilidade, que é uma importante característica inerente a um projeto de sistema ou produto, e se refere à facilidade, precisão, segurança e economia na execução de ações de manutenção nesse sistema ou produto. Dessa forma, fica aqui um...

Aprendizado para a vida: Nem sempre escrever um código com menos linhas é o melhor! A gente precisa saber dosar isso com a qualidade do código escrito! E quando digo qualidade, me refiro a legibilidade, semântica, manutenibilidade e diversos outros pontos. Afinal de contas, precisamos ter em mente que hj aquele código está sendo escrito por nós, mas dali algum tempo, outra pessoa (ou nós mesmos) teremos que mexer nele e essa tarefa tem que ser facilitada o máximo possível!

Grande abraço e bons estudos!

Obrigado pelas dicas Gabriel Leite, referente ao arredondamento do IMC, fiz seguindo as aulas do curso da alura. Já a semântica até concordo, mas para mim e outras pessoas ficou legível pois funcionou sem precisar converter nem nada...

Obrigado pela atenção!

Opa, Renato! Como vai?

Em relação a legibilidade, eu me referi ao seguinte: quanto tempo as pessoas precisaram gastar pra entender o código que vc escreveu? Claro que esse código é bem simples e dá pra entender rápido, então não haveria mto problema. Mas agora pensa num cenário mais complexo. A coisa vai complicar!

Eu só quis te mostrar um princípio a ser seguido utilizando esse seu cenário como exemplo.

Grande abraço e bons estudos!

Entendi! Valeu Gabriel pelas boas dicas!

Por nada, Renato! Sempre que tiver alguma dúvida ou precisar de alguma dica é só mandar aqui no fórum!

Grande abraço e bons estudos!

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