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

São semelhantes?

(imc >= 18.5 && imc <= 35)

(18.5 <= imc <= 35)

Executando das duas formas, aparentemente funcionou igual. Posso utilizar qualquer uma das duas?

4 respostas
solução!

Bom dia, Davi! Tudo bem? Acredito que não sejam semelhantes, pois testando seu código obtive os seguintes resultados:

Quando coloco um peso e uma altura que resultarão em um IMC abaixo de 18.5 ele mostra ainda assim mostra a mensagem do bloco do imc no valor recomendado. O correto seria mostrar apenas a mensagem de "Você está abaixo do recomendado".

Ex: Aqui usei a altura sendo 1.71 e o peso sendo 45.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

O mesmo acontece quando coloco um peso e uma altura que resultarão em um IMC acima de 35. O correto seria mostrar apenas a mensagem de "Você está acima do recomendado".

Ex: Aqui usei a altura sendo 1.53 e o peso sendo 100.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

O código que utilizei para testar os resultados foi o seguinte:

<meta charset = "UTF-8">
<script>
    function pulaLinha() {
        document.write("<br>");
    }

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

    function calculaImc(peso, altura) {
        return peso / (altura * altura);
    }

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

    var imc = calculaImc(pesoInformado, alturaInformada);

    mostra(nome + ", o seu IMC calculado é: " + imc);

    if(imc > 35) {
        mostra("Você está acima do recomendado");
    }   

    if(imc < 18.5) {
        mostra("Você está abaixo do recomendado");
    }

    if(18.5 <= imc <= 35) {
        mostra("Você está no recomendado");
    }
</script>

Verdade, percebi o erro... Obrigado, Guilherme!

Os códigos são diferentes, principalmente pelo fato da segunda operação utilizar apenas os sinais de <=.

Códigos que você encontrar por aí normalmente irão ter esta estrutura, um variável na esquerda sendo comparada com outra variável ou um valor a direita.

    (imc >= 18.5 && imc <= 35) 

Obrigado Guilherme, cometi o mesmo erro com:

if(18.5 <= imc <=35) {

mostra("Você esta com IMC dentro dos padrões da OMS")

}

Até agora acreditava que eram semelhantes

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