3
respostas

Qual a função do "[posicao]" no "segredos[posicao]" ?

Estava tentando rodar meu código, porém dava apenas a mensagem de "você errou" mesmo colocando os números que fazem parte da array. Depois fui verificar e estava faltando colocar o "[posicao]" junto ao "if (input.value == segredos)", porém não entendi qual a funcionalidade de adicionar a mesma no código, o porquê dela estar ali. Se alguém poder me auxiliar, por gentiliza, ficarei muito grata.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
</head>
<body>
    <input/>
    <button>Compare com o meu segredo</button>

    <script type="text/javascript">
        var segredos = [5,7,10,2,3]; //array
        var input = document.querySelector("input");
            input.focus();

        function verifica () {
            var achou = false;

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

                //nessa parte aqui que fica a minha dúvida
                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>

</body>
</html>
3 respostas

[posicao] é apenas um identificador para o índice do array. O nome dado, "posicao", é exatamente isso: a posição da vez na cadeia de valores do array. Poderia ser qualquer outro nome ou uma letra (geralmente usam a letra i).

Para que a estrutura de repetição for verifique corretamente todos os valores dentro da lista (array), é necessário atribuir um contador com incremento que irá verificar o valor desde a posição 1 (que no caso de arrays sempre começa em 0) até a última posição (que no caso de arrays é o tamanho total - 1).

Daí o propósito da variável "posicao" entre colchetes ao lado de "segredos": com o auxílio da estrutura de repetição, essa variável "posicao" vai buscar na caixa da lista o valor da vez e perguntar à condição if se o mesmo corresponde às suas condições; se o valor puxado da caixa pela variável "posicao" passar direto pelas condições if, o contador incrementa (soma + 1) e "posicao" que valia 0, passa a valer 1. A partir deste momento, "posicao" está verificando qual é o valor contido na segunda posição da lista.

Enfim, sem "posicao", ou "i" ou seja qual fosse o nome, seria impossível verificar as condições e terminar a execução de forma correta.

Um adendo: Imagine que tu busque um valor numa lista de forma manual, sem o auxílio da estrutura de repetição for. Tu teria que digitar o número correspondente à posição, certo? Exemplo: Olhando pro teu código, eu quero buscar o valor contido na posição 1 ( que é o número 7 - lembre que array sempre começa com 0), logo, eu vou digitar "console.log(segredos[1])" e o valor retornado no console do navegador será 7. O que a variável "posicao" dentro da estrutura for faz é exatamente buscar esse valor, mas de forma automática.

Abaixo tem um exemplo de lista com repetição de outro exercício, para te ajudar a refletir sobre a função dos mesmos:

<meta charset="UTF-8">
<html>

<script>

var letras = ['A', 'B', 'C', 'D'];

for( var i = 0; i < letras.length; i++ ) {
    alert(letras[i]);
}

</script>

</html>

Espero que tenha ajudado.

<meta charset="UTF-8">

<h1>Jogo de adivinha</h1>
<h3>Digite um número entre 0 e 10!</h3>
<input id="input" />
<button id="button">Compare com o meu segredo.</button><br>

<script>

    let segredos = [5, 6, 7];

    let input = document.querySelector('#input');
    input.focus();

    function verifica() {
        let achou = false;
        for (let posicao = 0; posicao < segredos.length; posicao++) {
            if (!input.value) {
                alert("O preenchimento do campo é obrigatório.");
                return;
            } else if (input.value == segredos[posicao]) {
                alert("Você ACERTOU!");
                achou = true;
                break;
            }
        }
        if (achou == false) {
            alert("Você ERROU!");
        }

        input.value = " ";
        input.focus();
    }
    let button = document.querySelector('#button');
    button.onclick = verifica;

</script>

Obrigada demais, gente!! Estou iniciando e com algumas dificuldades, vou ler com calma até entender :) Muito obrigada novamente!