4
respostas

Necessidade da função sorteia

Alguém poderia me detalhar qual a necessidade de usar essa função sorteia?

escrevendo assim:

var numeroPensado = Math.round(Math.random() * 10);

teria o mesmo resultado que:

function sorteia(n) {

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

var numeroPensado = sorteia(10);

Sendo assim eu não entendi qual a necessidade de usar essa função.

4 respostas

Boa tarde Hugo,

Por necessidade e, sendo um código pequeno, realmente não precisaria, mas é apenas para que você treine a criação de funções. Caso fosse um código extenso e você quisesse alterar o valor multiplicado, em vez de ir de um em um trocando, você trocaria apenas o valor que ficaria no lugar de n. É mais para prática e poder pensar em diferentes formas de fazer algo.

Pense da seguinte maneira, um código com 1000 linhas, você precisar procurar todos os math.round com math.random fica cansativo e demorado, então você simplesmente vai na função criada e onde tem o valor fixo (no caso do n seria algo fixo) faça a alteração, dessa maneira, alterando o código por inteiro.

Boa tarde, Vamberto.

Então por exemplo, se houvesse a necessidade de alterar o valor de "n" eu deveria ir em cada chamada de função ex: ....sorteia(10); e alterar o nº dentro do parênteses , ou mudar diretamente na função: return Math.round(Math.random() * n); e trocar o n por um valor fixo, ai na declaração da função eu simplesmente colocaria sorteia(); ? Porque minha dúvida na confecção foi justamente não ter entendido a função do "n" já que iriamos atribuir o valor na chamada da função mais abaixo, não sei se me fiz entender bem, eu havia entendido que o n representaria uma aleatoriedade e não algo fixo definido abaixo, mas acho que entendi errado.

@William

"se houvesse a necessidade de alterar o valor de "n" eu deveria ir em cada chamada de função ex: ....sorteia(10); e alterar o nº dentro do parênteses"

Se entendi bem as aulas, a função é criada justamente para eliminar a necessidade de fazer essa correção em cada uma das ocorrências ao longo do código. Ou seja: ao invés de alterar o valor dentro de cada variável, você cria uma função e dentro dela, altera o valor; logo, todas as ocorrências da função terão o valor alterado automaticamente.

Com função = só altera uma vez; você sempre sabe onde ir (as funções ficam agrupadas no início do código).

Sem função = você precisará percorrer todo o código seja com uma mudança automática de todas as ocorrências (selecionar o trecho, apertar Ctrl + F2, renomear) ou procurar e alterar um por um.

Aí entendemos qual é o verdadeiro propósito das funções: ter um código mais limpo e com mitigação de erros.

Boa tarde William, talvez a descrição da função não tenha ficado clara.

Seria assim =>

function sorteia(n) {

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

então o valor que eu colocasse entre os parenteses após o sorteia, iria aparecer dentro da função pra multiplicar. No caso com 10

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

Ai seu chefe ou você mesmo "poxa a partir da linha 20 vai precisar ser 40 e não 10", você iria fazer apenas a mudança do número

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

OOOUUU como Carlos falou, você faria a função inicial e depois que escreveu o código inteiro, de inúmeras linhas, "errei, não era pra ser 10, era pra ser 100" você vai na declaração da função e apenas troca o número;

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

e ai todas seriam alteradas de uma vez só.

E como o próprio professor falou, é mais "fácil" lembrar de "sorteia" do que de todo esse caminho (pelo menos agora no inicio) para gerar o valor aleatório, concorda? sendo tanto pra dar uma facilitada para nós quanto para treinarmos as declarações de funções.