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

Função sorteia

Function sorteia(n){
return Math.round(Math.random() * n)
}

Olá pessoal, desculpem pela dúvida simples. Sou iniciante, estou progredindo razoavelmente bem até o momento, e no exercício do jogo de adivinhação, a lógica foi perfeita, consegui fazer conforme a solução. Entretanto, pequei ao não colocar "return" dentro da função. Gostaria de saber o porquê de essa função necessitar de return e a "mostra", por exemplo, não precisar. Agradeço!

6 respostas

Bom dia Eduardo,

Beleza?

function sorteia(n){ return Math.round(Math.random() * n) };

Esta função necessita de um return, pois toda vez que você usa-la ela irá RETORNAR um valor, a função mostra ela não retorna nada de fato, ela apenas faz algo.

A função sorteia você pode usar o resultado dela para alimentar uma variavel, por exemplo:

function sorteia(n){ return Math.round(Math.random() * n) };
var numero = sorteia(100);

E poderá usar a variável em qualquer outro lugar.

Espero ter ajudado.

Oi Eduardo existem funções com e sem retorno quando a função apenas processa um valor e depois imprime dentro da função ela não retorna nada.

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

Já quando a função é chamada para sortear um número e repassar para quem a chamou precisa ter a palavra chave return.

function sorteia(n){
 return Math.round(Math.random() * n)
 };

Após a execução da função o resultado ou seja o numero aleatório sorteado vai para

var numero = sorteia(100);

Espero ter ajudado. Vou ficar monitorando qualquer dúvida.

E aí Eduardo, tudo tranquilo?

Acredito que esteja no programa do jogo de adivinhar correto?

Então vou usar do exemplo do código pra explicar. Como o Maison falou, existem funções que retornam algo e funções que não. No início também me bati para entender o porquê.

Mas é bem simples, vejamos a função:

function sorteia(n){
        return Math.round(Math.random() * n);
    }

Sua execução depende de uma chamada, que fizemos assim:

var numero = sorteia(100);

Ok, sabemos que vai sortear um número entre 0 e 100. Porém, precisamos do retorno dessa função para executarmos as validações para frente, se precisamos fazer uma validação (if ) precisamos de um valor para isso.

if(chute == numero) {
        mostra("Você acertou.");
    } else if(chute > numero){
        mostra("Você errou, seu chute é maior do que o número pensado.");
    } else {
        mostra("Você errou, seu chute é menor do que o número pensado.");
    }

Se eu não tivesse um retorno, não teria como eu comparar chute == numero, logo que não haveria número nenhum para comparar.

Então o que acontece é algo assim:

var numero = sorteia (30);
A variável numero receberá o resultado do sorteio, que está passando o valor 30 (isso dará um número entre 0 e 30)

Tendo numero com um valor, é possível fazer a comparação chute == numero

Bom, por fim, no mesmo programa temos a função de pular linha:

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

Essa é uma função que não precisa de nenhum parâmetro, a chamada dela é feita da seguinte forma (está dentro da função mostra):

pulaLinha();

Como só precisamos que o computador pule uma linha, não precisamos passar nenhum valor, e também não precisamos receber nenhum retorno para gravar em uma variável.

Me estendi mas acho que deu pra entender né?

Esses meus alunos são os melhores ! Excelente pessoal! Ficou mais claro agora Eduardo?

solução!

Galera, obrigado de coração!!!! Obrigado pela benevolência, tudo mais claro!! Prof Flavio, tudo certo!!!!!

Oi Eduardo que bom que "clareou" sendo assim se você não tiver mais nenhuma dúvida a respeito você pode marcar uma resposta como solução, finalizando assim esse tópico.Espero ter ajudado. Bons estudos.