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

Dúvida no Ex. 2 da Aula 6 - Arrays: trabalhe com muitos dados

Olá pessoal, travei em uma parte aqui da aula, vamos lá vou tentar explicar bem minha dúvida, o código está assim:

<input type="text" id="numero" />

<input type="submit" id="advinhar" value="Compare meu segredo" />

var segredos = [16, 34, 37, 42, 50, 58];
var caixaNumero = document.getElementById("numero");

var achou = false;

var botaoClicado = function(){
    for(var i = 0; i < segredos.length; i++){
        if(segredos[i] == caixaNumero.value){
        achou = true;
        }
  }  
    if(achou == true) {
        alert("Parabéns você acertou!");
    } else {
        alert("Infelizmente você errou");
        }
};

var botaoAdvinhar = document.getElementById("advinhar");
botaoAdvinhar.onclick = botaoClicado;

Na função botaoClicado temos o for que vai varrer o nosso array, eu queria entender melhor como funciona esse processo de varrer o array, por exemplo o usuário digitou 50 que é o nº4 no array, no momento a variável i é igual a 0 portanto menor que 6 que é o tamanho do array, então ele vai executar nosso if (segredos[i] == caixaNumero.value) i é igual a 0 e caixaNumero é igual a 4 então ele não vai para achou === true, ele volta para o incremento e i agora vale 2, assim sucessivamente até i valer 4, assim ele vai para achou == true e depois para o if achou == true e exibir a msg que o usuário acertou, é isso mesmo dessa forma que acontece estou com dúvidas se é ou não me ajudem. Agora na parte quando o usuário erra:

Se ele digita um nº que não tem no array, a função vai ser executada normalmento porque i é igual a 0 vai varrer todo o array até nº6 que é o tamanho dele e depois ir direto para else exibindo a msg que o usuário errou, é assim mesmo que acontece está tudo certo, estou na dúvida que seja de outra forma, se for me expliquem como é que funciona por gentileza. Muito obrigado!!!

3 respostas

Desculpe por não ter aparecido o código normal, não consegui formatar, coloquei entre ''' mas saiu todo estranho, peço desculpas por isso :)

solução!

Samuel , Bom dia !

para formatar o código é necessário colocar entre crase (```) . ok

em relação a sua dúvida , é isso que você falou mesmo tá , vou explicar como está funcionando seu for .

seu i representa o valor da posição do array .

o array sempre começa na posição 0 , então ao digitar o numero 50 , ele fará o seguinte .

segredos na posição 0 (16) é igual a 50 ? não , incrementa 1 na variavel i que passa valer 1

vai para o proximo , segredos na posição 1 (34) é igual a 50 ? não , incrementa 1 e a variavel i passa valer 2 ;

vai para o proximo , segredos na posição 2 (37) é igual a 50 ? não incrementa e a variavel i passa a valer 3.

quando chega na posição 4 , onde i está valendo 4 , ele irá perguntar novamente , segredos na posição 4 (50) é igual a 50 ? Sim , ele faz a linha de comando que atribui verdadeiro a variavel achou , e incrementa o proximo até terminar .

observação: você poderia utilizar o comando break , para quando encontrar o número ja sair do for e continuar o restante do código , deste jeito mesmo encontrando ele termina de percorrer o loop

como a variavel achou está true , ele entra no bloco e imprime parabens você acertou !

se digitar um número que não tem , ele ira percorrer toda o array e entrará no else , imprimindo que você não achou a variável .

Conseguiu entender , não sei se fui claro na explicação .

Espero ter Ajudado

Obrigado demais Celso por ter me avisado do break, e pela explicação, ajudou muito mesmo.