3
respostas

Não entendi a parte final do código

<meta charset="UTF-8">

<script>

    var loginCadastrado = "alura";
    var senhaCadastrada = "alura321";

    var maximoTentativas = 3;
    var tentativaAtual = 1;

    while(tentativaAtual <= maximoTentativas) {

        var loginInformado = prompt("Informe seu login");
        var senhaInformada = prompt("Informe sua senha");

        if( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {

            alert("Bem-vindo ao sistema, " + loginInformado);

            tentativaAtual = maximoTentativas; // acertou, então faço o gasto de todas as tentativas para sair do loop. Lá embaixo vai incrementar + 1! 

        } else {

            if (tentativaAtual == 3) {
                alert("Número permitido de tentativas ultrapassado!");
            } else {
                alert("Login inválido. Tente novamente");
            }
        }

       // vai para a próxima tentativa
        tentativaAtual = tentativaAtual +1  
    }

</script>

Nessa parte depois das 3 tentativas inválidas, eu não entendi, achei bem complexo esse código kkkk.

// vai para a próxima tentativa
        tentativaAtual = tentativaAtual +1  

E por que não tem dois sinais de "="?

tentativaAtual = maximoTentativas

3 respostas

Vitória,

Veja que você está usando um loop condicional While ("Enquanto"). Será executado determinado bloco de código, enquanto a condição for cumprida.

Ou seja, o bloco de código dentro do While ("Enquanto");

        var loginInformado = prompt("Informe seu login");
        var senhaInformada = prompt("Informe sua senha");

        if( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {

            alert("Bem-vindo ao sistema, " + loginInformado);

            tentativaAtual = maximoTentativas; // acertou, então faço o gasto de todas as tentativas para sair do loop. Lá embaixo vai incrementar + 1! 

        } else {

            if (tentativaAtual == 3) {
                alert("Número permitido de tentativas ultrapassado!");
            } else {
                alert("Login inválido. Tente novamente");
            }
        }

       // vai para a próxima tentativa
        tentativaAtual = tentativaAtual +1  

será executado enquanto a sua condição

(tentativaAtual <= maximoTentativas)

for cumprida.

Observe, que a variável tentativaAtual é inicializada com 1 e o bloco de código será executado enquanto tentativaAtual for igual ou menor (<=) que maximoTentativas, que tem valor 3.

Quando o código é executado pela primeira vez, qual o valor de tentativaAtual e maximoTentativas ? 1 e 3, respectivamente. Correto?

Então o bloco é executado.

Como contabilizar a quantidade de tentativas? Incrementando a variável tentativaAtual

       // vai para a próxima tentativa
        tentativaAtual = tentativaAtual +1  

Na próxima vez que a condição (tentativaAtual <= maximoTentativas) for testada, quais serão os valores de cada variável? 2 e 3, respectivamente. Correto?

Dessa maneira, você contabiliza a quantidade de vezes da tentativa e evita que você fique em um loop infinito onde a variável tentativaAtual jamais seja maior que maximoTentativas.

Espero ter ajudado, bons estudos.

Oi, Adriano! Eu achei que tentativaAtual = maximoTentativas; acabava com o loop.

Vitória,

Na verdade

tentativaAtual = maximoTentativas;

é um mecanismo utilizado pra de fato colaborar pra a saída do loop neste seu código, pois ele atribui o valor 3 à variável tentativaAtual, mas não

depende apenas dessa linha.

Se fosse apenas isso o loop seria realizado novamente pois ainda atenderia à condição de entrada no While

(tentativaAtual <= maximoTentativas) ==> 3<=3

Mas ao fim do While existe a linha

 tentativaAtual = tentativaAtual +1  

tentativaAtual agora tem o valor 4.

Testando a regra de entrada no While

(tentativaAtual <= maximoTentativas) ==> 4<=3

ela é FALSA, portanto não executa o código de novo.

Um ponto importante para atentar é ao escopo do código de cada bloco (while, if) que são delimitados pelas chaves {}.

Segue algumas sugestões de materiais extras de extrema qualidade da W3Schools:

https://www.w3schools.com/js/js_if_else.asp

https://www.w3schools.com/js/js_loop_while.asp

Espero ter ajudado, bons estudos.