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

Dúvida sobre o if

Esse é o código certo.

<meta charset="UTF-8">
<script>

    function pulaLinha() {

        document.write("<br>");
    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
    }

    function sorteia(n) {

        return Math.round(Math.random() * n);
    }    

    var numeroPensado = sorteia(10);


     var chute = parseInt(prompt("Já pensei. Qual você acha que é?"));

    if(chute == numeroPensado) {

        mostra("Uau! Você acertou, pois eu pensei no " + numeroPensado);
    } else {

        if(chute > numeroPensado) {

            mostra("Você errou! Seu chute é maior que o número pensado!");

        } else {

            mostra("Você errou! Seu chute é menor que o número pensado!");
        }

    }
</script>

Mas por que quando coloco um if embaixo do outro não funciona?

<meta charset="UTF-8">
<script>

    function pulaLinha() {

        document.write("<br>");
    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
    }

    function sorteia(n) {

         return Math.round(Math.random() * n);
    }

    var numeroPensado = sorteia(10);

    var chute = parseInt(prompt("Já pensei. Qual você acha que é?"));

    if(chute > numeroPensado) {

        mostra("O número pensado é menor do que seu chute");
    } 
    if (chute < numeroPensado) {

        mostra("O número pensado é maior do que seu chute");
    } else {

        mostra("Você acertou o número pensado é " + numeroPensado);
    }

</script>
2 respostas
solução!

Boa noite Vitória, O programa não funcionou porque você "separou" as condições em blocos distintos.

No primeiro código, existe um IF (Vamos chamar de Condição 1) com um ELSE (Vamos chamar de Negativa da Condição 1). E dentro deste ELSE (Negativa da Condição 1), existe outro IF(Vamos chamar de Condição 2) com ELSE(Vamos chamar de Negativa da condição 2). Quando o programa é executado e a Condição 1 é positiva, ele exibe a mensagem "Uau! Você acertou, pois eu pensei no " e não passa na Negativa da condição 1. Se a Condição 1 for negativa, ai sim é verificada a Condição 2. Caso a condição 2 seja positiva, é exibida a mensagem "Você errou! Seu chute é maior que o número pensado!" e não passa na Negativa da condição 2. Se a condição 2 for negativa, ai sim é exibida a mensagem "Você errou! Seu chute é menor que o número pensado!"

Já no programa 2, existem 2 blocos distintos de condições. No primeiro, ele testa se "chute > numeroPensado" e se for positivo exibe a mensagem "O número pensado é menor do que seu chute". Mas, independente de ser positivo ou negativo, a segunda condição será testada. Se a segunda condição for verdadeira, é exibida e mensagem "O número pensado é maior do que seu chute" e caso negativo, será exibida a mensagem "Você acertou o número pensado é X"

Como a segunda condição é sempre testada(Independente do resultado da primeira), podemos ter uma repetição de mensagem com o primeiro if.

Exemplo: chute = 7 numeroPensado = 5

Quando testarmos, a primeira condição (7 > 5) será verdadeira, e exibiremos a mensagem "O número pensado é menor do que seu chute". O programa seguira o fluxo e vai testar a segunda condição (7 < 5). Como o resultado é falso, o programa cai no else e exibe a mensagem "Você acertou o número pensado é X "

Espero ter ajudado.

Oii, Samuel, obrigada pela explicação!