1
resposta

Eu acho que deveria ter colocado mais exercícios para pratica as funcoes e o for junto if e while.

Até a parte que ele faz os números aleatórios beleza, depois que ele vai explicar sobre como tirar as repetições dos números ai fica bem confuso, não sinto que a explicação foi da melhor forma já estou vendo o mesmo vídeo varias vezes e ainda não entendo.

depois do minuto 10 eu não entendo mais nada dos fundamentos o de como usar as funções eu sei o while, o if e for, porem sinto que falta explicar de uma forma melhor as conexões de cada parte.

Não sei se fui claro.

1 resposta

Oiê Phelipe, tudo bem?

Agradeço por esperar um retorno nosso!

Compreendo, o seu feedback sobre a aula é muito importante para melhorarmos as aulas para vocês.

Com relação a aula, o professor declarou o console.log (segredos) para sabermos se está gerando números/segredos repetidos. E vimos que está.

var segredos = sorteiaNumeros (3);
console.log (segredos);

No while declaramos a função para resolver o problema é referente a apenas 1 dos números/segredos da lista completa.

Entendido isso, construiremos o código para resolver a questão da repetição, informaremos dentro do while que se a var achou = false; , ou seja, não achou um número específico da lista repetido/duplicado, o programa seguirá para o próximo número da lista. E declaramos essa função conforme explicado no vídeo:

while(numero <= quantidade) {
var numeroAleatorio = sorteia();
var achou = false;

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

    }
}

Em seguida, verificamos se um dos números/segredos gerados é repetido utilizando o for para conferir se um dos números/segredos já inseridos na lista juntamente com o anterior é repetido.

while(numero <= quantidade) {

    var numeroAleatorio = sorteia();
    var achou = false;

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

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

Para completar o código, caso tenha um número/segredo repetido o while vai parar de ser executado para recomeçar o processo de inserir um número/segredo na lista até que este não seja repetido com os números anteriores. Para que o while pare de procurar um novo número/segredo que não seja repetido se utiliza o break após declararmos var achou = true; . Quando ele recomeçar o processo de inserir um número/segredo ele vai passar novamente pela verificação que construímos até que o número gerado não seja repetido.

while(numero <= quantidade) {
var numeroAleatorio = sorteia();
var achou = false;

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

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

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

    }
}

Estamos pedindo para o while gerar 3 números/segredos aleatórios. Ele gera o primeiro corretamente, mas o segundo número/segredo veio repetido (igual ao primeiro número/segredo), o while não pode adicionar o próximo número/segredo da lista, tem que gerar novamente um número/segredo ainda na posição. E o numero++ vai gerar o próximo número/segredo aleatório até que não seja repetido. Declaramos número++ como o professor ensinou na aula.

while(numero <= quantidade) {
var numeroAleatorio = sorteia();
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++;
    }
}

E para finalizar, a lista está gerando um número/segredo 0, para que isso não aconteça, declaramos com o if (numeroAletorio !== 0){} e dentro dele copiamos e colamos o código que criamos para evitar os números/segredos repetidos. Assim ele não gera nenhum número/segredo repetido e nem o número/segredo 0.

while(numero <= quantidade) {
var numeroAleatorio = sorteia();
var achou = false;

if (numeroAleatorio !== 0) {

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

if(segredos[posicao] == numeroAleatorio){
achou = true;
break;
    }
}
if (achou == false) {
segredos.push(numeroAleatorio);
numero++;
        }
    }
}
return segredos;

Assim ficou o código que resolverá o problema de repetição dos segredos e do número 0 gerado.

Aproveitando, gostaria de indicar alguns materiais que vão lhe ajudar a entender melhor as conexões entre as funções.

Sinta-se à vontade também para responder pontuando exatamente as suas dúvidas, estarei à disposição para ajudá-lo no que for preciso.

Bons estudos e a gente se vê!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!