Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Cálculo do IMC com Operadores Lógicos

Nobres, ao final, optei por suprimir um "else". Gostaria de saber se é permitido isso. Também tenho um pouco de dúvida sobre a Indentação quando há estruturas com if e else e também sobre a posição de chaves e se isso é relevante.

Obs. : Neste código já defini as variáveis imcMax e imcMin.

Grato.

<meta charset="UTF-8">

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

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

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

    var nome = prompt("Informe seu nome.")
    var peso = prompt(nome + ", Informe o seu peso.");
    var altura = prompt(nome + ", Informe a sua altura.");
    var imcMin = 18.5;
    var imcMax = 35;

    var imc = calculaImc(peso, altura);

    mostra(nome + ", O imc calculado é: " + imc + ".");

    if((imc >= imcMin) && (imc <= imcMax)){
        mostra("Seu IMC está dentro do recomendado.");

    } 
        else {
            if(imc < imcMin){
                mostra("Seu IMC está abaixo do recomendado.");
            }
            if(imc > imcMax){
                mostra("Seu IMC está acima do recomendado.");
        }
    }
</script>
1 resposta
solução!

Olá, Marlos. Tudo bem?

Em se tratando da estrura do bloco if-else, o que recebe indentação diferente é o que será executado caso as condições sejam satisfeitas, por exemplo:

if(condicao) {
    mostra("");
} else {
    mostra("");
}

Repare que o else vem logo depois de fechar a chave do if. Você pode sim fazer um if sem else, mas se você abrir uma chave, você precisa fechar.

if (condicao) {
    mostra("");
}

// também é possível não usar as chaves para blocos com apenas uma linha, mas eu acho confuso
if (condicao)
    mostra("");

Então a parte do seu código que contém o if-else com indentação correta ficaria assim:

if((imc >= imcMin) && (imc <= imcMax)){
    mostra("Seu IMC está dentro do recomendado.");
} else {
    if(imc < imcMin){
        mostra("Seu IMC está abaixo do recomendado.");
    }
    if(imc > imcMax){
        mostra("Seu IMC está acima do recomendado.");
    }
}

Espero ter ajudado.