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

Não compreendi quase nada da Aula 9

<meta charset="utf-8">

    <input/>
    <button>Compare com o meu segredo</button>

<script>

    function sorteia(){

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

    //************* AQUI COMEÇA O QUE EU NÃO CONSEGUI ENTENDER*****
    function sorteiaNumeros(quantidade){
        var segredos = [];

        var numero = 1;

        while(numero <= quantidade){

            var numeroAleatorio = sorteia();

            if(numeroAleatorio !== 0){

            var achou = false;

                for(var posicao = 0; posicao < segredos.length; posicao++){

                    if(segredos[posicao] == numeroAleatorio){
                        achou = true;
                        break;

                    }

                        if (achou == false){
                                segredos.push(numeroAleatorio);
                                numero++;
                        }    

                }
            }
                return segredos;
        }
    }
    //********** NÃO CONSEGUI ENTENDER ATÉ AQUI****************

    var segredos = sorteiaNumeros(5);

    console.log(segredos);

    var input = document.querySelector("input");
    input.focus();

    function verifica(){
        var achou = false;

        for(var posicao = 0; posicao < segredos.length; posicao++){
            if(input.value == segredos[posicao]){

                alert("Você ACERTOU");
                achou = true;
                break;
            }
        } 

        if(achou == false){
            alert("Você ERROU");
        }

        input.value = "";
        input.focus();
    }

    var button = document.querySelector("button");
    button.onclick = verifica;

</script>

Bom, eu não estou conseguindo compreender o funcionamento do trecho que está entre os dois comentários do código, acho que um pouco pelo fato de existirem duas variáveis com nome segredos. Por favor, alguém poderia me explicar bloco a bloco, como serio o funcionamento desse código.

8 respostas

Oi Hugo, tudo bem? Vejamos, você tem uma função que é a sorteia que gera um número aleatório e devolve esse número certo? O que a função sorteiaNumero faz então?

Ela primeiramente recebe uma quantidade de números que você deseja gerar aleatoriamente. Dentro dela você executa várias vezes a função que gera um número aleatório, mas como saber se um número já foi sorteado ou não, você cria um array e verifica: se o número sorteado/gerado aleatoriamente já estiver no array, você não faz nada, mas caso não exista, você o insere no array.

Isso é um resumo descritivo do que o código que você marcou faz, isso é suficiente ou você quer que eu explore passo a passo cada trecho?

Olá Wanderson, tudo ótimo e contigo? Então, eu olhei o código diversas vezes e fui fazendo ele devagar de novo e começo a entender a lógica. Com sua explicação ajudou ainda mais, mas se possível explique trecho por trecho. Outra dúvida minha é quanto ao "return segredos", de qual das duas variáveis ele está se referindo? Como identificá-la? Desde já agradeço a ajuda =D

solução!

Coloquei algumas explicações...!

function sorteiaNumeros(quantidade){ //uma array de tamanho não definido var segredos = [];

//variavel número inicializa-se com 1 var numero = 1;

//enquanto a variável número for menor ou iqual a variável quantidade continue e executando o loop while(numero <= quantidade){

//variavel numeroAleatorio recebe um valor da função sorteia var numeroAleatorio = sorteia();

//verifica se os valores não são iguais e não são do mesmo tipo e //e não faz a conversão. if(numeroAleatorio !== 0){

//variavel achou inicializa-se com false var achou = false;

//realizar o procedimento até o valor da variável posição for menor que a quantidade //do array segredos for(var posicao = 0; posicao < segredos.length; posicao++){

//se a posição do array segredos for igual ao valor do numeroAleatorio if(segredos[posicao] == numeroAleatorio){ achou = true; break;

}

if (achou == false){ segredos.push(numeroAleatorio); numero++; }

} } return segredos;

Max muito obrigado, me ajudou muito. Mas minha dúvida quanto ao "return segredos" permanece. Temos o array segredos lá no inicio da função porém temos uma variável segredos que recebe a function sorteiaNumeros passando a quantidade 5. Eu quero saber sobre qual segredos esse return se refere. Desde já, muito obrigado :D

A variável segredos, está se refereciando a variável numeroAleatoriao que recebe o valor da função sorteia.

O Array segredos que está dentro da função é local, ou seja .. a variável "segredos" que recebe a function sorteiaNumeros poderia se chamar qualquer outra coisa ... Por exemplo:

 var secreto= sorteiaNumeros(5);

Assim, o return da função está retornando os números secretos gerados pela aplicação.

Queria agradecer a ajuda de todos que responderam o tópico. Muito obrigado mesmo :D

Eita, preciso ser mais rápido na próxima! Boa gente, é bom ver os alunos se movimentando e participando para ajudar os colegas.

Bons estudos para todos vocês! ;)