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

dúvida função sorteiaNumeros(quantidade) e variavel achou

Se alguém puder me explicar um pouco mais detalhadamente a função sorteiaNumeros e o papel da variavel achou...fiquei perdida nessa parte.

Outra dúvida é sobre a iteração. O que teria dado errado caso ficasse no lugar anterior??

if (achou == false) {
    segredos.push(numeroAlatorio);
    numero++; //anteriormente estava em outro lugar no código...
}

Obrigada!

5 respostas
solução!

Vamos lá:

function sorteiaNumeros(quantidade) {
    //Aqui ele recria um lista provisória para ser retornada:
        var segredos = [];
    //Aqui ele cria um contador para auxiliar na criação da lista
        var numero = 1;
    //Aqui começa a repetição que, de fato, vai criar a lista
        while(numero <= quantidade) {

        //Aqui ele cria uma variável e lhe dá um número aleatório (através da função sorteia)
              var numeroAleatorio = sorteia();
        //Aqui ele cria uma variável booleana para verificar se o item já está na lista
              var achou = false;

        //Aqui ele usa a condição para que 0 não entre na lista
              if (numeroAleatorio !== 0) {
                    //Aqui começa a varredura da lista                    
                     for(var posicao = 0; posicao < segredos.length; posicao++) {
                //Aqui ele checa se o número já está na lista, se tiver ele encerra e vai pro próximo
                           if(segredos[posicao] == numeroAleatorio){
                                achou = true;
                                break;
                           }

                     }
            //Aqui ele adiciona o número a lista, se ele não já estiver
                     if (achou == false) {
                           segredos.push(numeroAleatorio);
                           numero++;
                     }
              }

        }
    //Aqui ele retorna a lista
        return segredos;

    }

Boa noite, Alexandra! Como vai?

O Daniel já destrinchou muitíssimo bem o código da função sorteiaNumeros() só ficou faltando responder a segunda pergunta:

Outra dúvida é sobre a iteração. O que teria dado errado caso ficasse no lugar anterior??

Bom, caso o numero++ não ficasse dentro do referido if toda iteração iria considerar que um novo número foi adicionado ao array! Sendo assim, como essa variável numero armazena a quantidade de números adicionados no tal array, ela só pode ser incrementada dentro do if onde se tem por garantido que o novo número não é repetido!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, minha aluna!

Eita, obrigado Gabriel, me foquei no código e acabei me esquecendo desse detalhe.

Gente, muito obrigada! Vocês são demais \o/

@Daniel, valeu! Estamos aqui para crescer juntos!

@Alexandra, por nada! Sempre que tiver qualquer dúvida é só mandar aqui no fórum da Alura!

Grande abraço e bons estudos, pessoal!

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