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

Ambos jeitos deram certo. Existe algum mais prático/ lógico, na opinião de vocês?

No primeiro código, utilizei a própria função para atribuir valor, já que estava chamando o return.

No segundo código, criei a variável para receber o valor da função.

<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 chute = parseInt(prompt("Já pensei. Qual você acha que é?"));


    if(chute == sorteia(100)) {

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

        mostra("Você errou! Eu tinha pensado no " + sorteia(100));
        if(chute > sorteia(100)) {
            mostra("O número que você chutou é maior que o número pensado")
        }
        if(chute <sorteia(100)) {
            mostra("O número que você chutou é menor que o número pensado")

        }
    }


</script>
<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 chute = parseInt(prompt("Já pensei. Qual você acha que é?"));
    var numeroPensado = sorteia(100);

    if(chute == numeroPensado) {

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

        mostra("Você errou! Eu tinha pensado no " + numeroPensado);
        if(chute > numeroPensado) {
            mostra("O número que você chutou é maior que o número pensado")
        }
        if(chute <numeroPensado) {
            mostra("O número que você chutou é menor que o número pensado")

        }
    }


</script>
4 respostas

Boa tarde, Clara! Como vai?

Antes de mais nada, me permita apenas uma correção de termo utilizado. Vc disse:

No primeiro código, utilizei a própria função para atribuir valor, já que estava chamando o return.

Sendo que no seu código, vc fez:

if (chute == sorteia(100)) {
    ...
}

Sendo que o operador == faz uma comparação e não uma atribuição como vc disse.

Sobre a sua pergunta, eu tenho uma notícia inesperada para te dar! O único código que funciona corretamente é o segundo!

Desafio: Vc consegue descobrir o motivo? Tente descobrir e se não conseguir, responda aqui que eu te explico!

Oi Gabriel!!

Cara, eu num faço ideia do porquê. Poderia me explicar??

Valeu :)

Sobre a atribuição de valor, eu me referi ao uso do chamamento da própria função para atribuir o valor de seu return, ao invés de utilizar uma variável.

Abs.

solução!

Clara, sempre que vc faz sorteia(100) no seu código é sorteado um novo número. Ou seja, quando vc faz:

if (chute == sorteia(100)) {
     mostra("O número pensado foi: " + sorteia(100));
}

Pode ser que o número que aparece na tela seja diferente do que vc chutou. Por exemplo: vc pode chutar o número 3 e aparecer escrito "O número pensado foi: 10".

A mesma coisa acontece em todos os outros lugares onde vc chama a função sorteia.

Em outras palavras, para vc fazer o que deseja, somente o segundo código está correto. Vc obrigatoriamente vai precisar salvar o número sorteado numa variável para depois fazer as comparações que deseja.

Conseguiu entender?

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