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

Não compreendi achou = true ou false

Ola a todos!

Eu entendi o raciocionio da aula, mas no final ele inseriu uma variável chamada "achou", e colocou em alguns lugares true e false, gostaria de saber ,de um modo simples o que ela exerceu na função.

<meta charset="UTF-8">

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

<script>

    var segredos = [5,7,10,2,3];

    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>

Obrigado a todos!

3 respostas
solução!

Essa variavel serve para controlar se o valor do input foi localizado dentro do array de segredos

Perceba que a variavel é criada fora da estrutura de repetição FOR com o valor padrão false. Ela somente ganha o valor true se, durante o loop no array, for localizado, em alguma posição, o mesmo número informado no input.

Desta forma, ao terminar o FOR, você já sabe se o segredo foi localizado ou não.

Apesar de não ser o caso deste código postado, o valor da variável poderia ser o resultado de retorno da função. Por exemplo:

function verifica(numero, segredos) {
    var achou = false;

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

        if(numero == segredos[posicao]) {
            achou = true;
        } 
    }
    return achou;
}


var segredos = [5,7,10,2,3];
var meu_numero = 5;

if (verifica(meu_numero, segredos)){
    alert("Você ACERTOU!");
} else {
     alert("você errou");
}

No exemplo acima, a função recebe dois parâmetros (o número e um array a ser pesquisado), e retorna true ou false de acordo com o resultado. Perceba que de acordo com o retorno da função as mensagens de alerta são exibidas.

Bom é muito simples. O próprio nome da variável já diz. Ela é uma variável de controle que indica para o seu script se O valor inserido em:

Pertence ao seu segredo que no no caso é esse array: var segredos = [5,7,10,2,3];

Então no for ele vai percorrer cada elemento da lista e comparando com o valor inserido. Se o valor for encontrado ele torna a variável "achou" verdadeira e deixa o loop.

achou = true; break

Ele faz isso para quando chegar na parte do código abaixo :

if(achou == false) { alert("você errou"); }

Ele não entre nesse if e diga que você errou! Se você de fato não acertou o segredo ele não irá entrar no primeiro if e portando a variável "achou" vai continuar sendo falsa assim como setada no início da função verifica: var achou = false; Dessa maneira entrará no segundo if e irá dizer que você errou!

Agora entendi!

Obrigado Daniel e Lucas!