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

Confesso que fiquei ainda com dúvidas sobre esse assunto!

function sorteia(n) {

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

    var numeroPensado = sorteia(10);

Não compreendi muito bem a questão do sorteia(n) que ao mesmo tempo tem o sorteia(10) sendo que já é n. Fiquei meio confuso. Alguém consegue desmitificar isso? Explicar mais claramente como é isso? Pois não entendi bem.

6 respostas

Oi Marcos! Tudo bem contigo?

Existem funções que precisam de algumas informações externas para conseguir realizar uma ação. No caso da função sorteia, essa precisa de um valor n para conseguir realizar seu objetivo que é o de gerar e retornar um número aleatório entre 0 e n.

Dessa forma, quando fazemos numeroPensado = sorteia(10) estamos chamando a função sorteia e passando o parâmetro 10 para ela. Ou seja, nesse caso, o n receberá o valor 10 e a função sorteia irá retornar um valor aleatório entre 0 e 10. Entretanto, poderia ser passado qualquer outro número como, por exemplo, sorteia(20), que nesse caso, ela iria retornar um valor aleatório entre 0 e 20.

Se ainda tiver ficado alguma dúvida me fala aqui que vamos conversando :)

Bons estudos!

oi! Tudo sim Millena! e você? Bom, eu fiz um teste de colocar assim a função:

function sorteia(n) {

return Math.round(Math.random() * 10)

    }

    var numeroPensado = sorteia(10);
    console.log(numeroPensado)

e me deu o resultado normal com 1 casa apenas nas respostas. Tipo eu troquei o n por 10 nesse caso.

E depois eu troquei o n por 100 assim:

function sorteia(n) {

return Math.round(Math.random() * 100)

    }

    var numeroPensado = sorteia(10);
    console.log(numeroPensado)

E me deu o resultado em 2 casas. e notei que não mexi no sorteia(10) abaixo. Eu pensava que ele era movido por esse sorteia e não o de cima. Mais o que eu não entendi ainda. Será que se eu colocar o número 30 no "prompt", ele vai mandar esse valor até o sorteia(n) ed eixar assim:

function sorteia(n) {

return Math.round(Math.random() * 30)

    }

    var numeroPensado = sorteia(10);
    console.log(numeroPensado)

Dando um resultado de 0 a 30? e com 2 casas nesse caso? Se for assim. Talvez agora eu entenda um pouco mais o que acontece aí.

Olá Marcos, tranquilo? Apenas 2 pontos de atenção: 1) Na função, você recebe um parametro (n no caso) e não usa ele. Seria uma boa prática você coloca-lo na chamada da função: sorteia(100);, pois o Javascriipt irá substituir para você.

2) Math.randon traz um valor entre 0 e 1 (tipo 0.1, 0.123, 0.9). Quando você coloca 100, ele vai gerar um valor entre 0 e 100, sendo muito dificil (mas possivel) ser 0 ou 100. Por isso, ele gerar com apenas 2 casas decimais. A mesma lógica entre 0 e 10 gerar um valor com apenas uma casa decimal. Ele vai fcar entre 1 e 9. Lembrando que o valor minino (zero) e o maximo (que seria o 'n' dentro da função sorteia) sempre são mais dificeis de sair.

Espero que tenha ajudado um pouco =) e bons estudos.

solução!

Oi Marcos!

Bora fazer uma analogia para entender melhor o funcionamento de uma função?

Imagine uma função como sendo uma receita.

receita_bolo (x ovos)
    com x ovos conseguimos fazer 2x bolos

Essa receita nos diz o seguinte: quando temos x ovos, podemos fazer 2x bolos. Sendo assim, se dermos 1 ovo, fazemos 2 bolos. Com 2 ovos fazemos 4 bolos e assim por diante. Então vamos seguir a receita e fazer alguns bolos:

 faz receita_bolo (5 ovos)

Fazendo dessa forma, iremos produzir 10 bolos, certo?

Agora, falando em termos de programação, uma função se comporta como uma receita. A função receita_bolo recebe um parâmetro x que é a quantidade de ovos. Esse valor é uma variável e você só irá utilizá-la quando for fazer um bolo.

Uma função pode receber vários parâmetros com diferentes nomes. No caso da função sorteia, o parâmetro que ela recebe é o n e esse parâmetro é um número que indica até que número máximo que poderá ser feito o sorteio.

No caso da receita, nós só fazemos o bolo quando chamamos a função por meio do faz receita_bolo(5 ovos). É nessa etapa onde você realmente envia os valores para a função e a função calcula os resultados que você deseja, no caso do exemplo da receita, é nesse momento que a quantidade de ovos deve ser enviada. O mesmo vale para a função sorteia, nela você vai sortear um número de 0 até n e atribuir esse valor a numeroPensado, e isso será feito nessa linha de código:

var numeroPensado = sorteia(10);

// sendo 10 o valor enviado para o parâmetro n da função sorteia

Sendo assim, podemos concluir que o intuito de utilizar uma função é justamente de não ter que mudar os valores manualmente conforme você fez nesses últimos exemplos. Mas, de enviar esses valores apenas quando formos chamar a função

Recomendo criar algumas funções e testar com valores diferentes. Pegue, por exemplo, uma função mais simples onde seja mais fácil prever o resultado do que vai acontecer:

function soma42 ( numero ) {
  document.write( numero + 42 );
}

Quando você chamar essa função da seguinte forma: soma42( 12 ) o que vai acontecer? Tenta repetir esse exercício com outras funções que você conseguir imaginar e esse conteúdo vai se fixar rapidinho!

Espero ter ajudado :)

Qualquer dúvida vamos nos falando por aqui, tá bom?

Bons estudos!

Tá bom! Vou fazer isso. Agora entendi melhor e com a prática vou entender ainda melhor. Muito obrigado pelas respostas! Millena Gená Pereira

muito obrigado Elton Veiga por responder! Bom trabalho!