1
resposta

Simulando uma tela de login - Utilizando do...while

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

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


    var tentativa = 0;
    var maxTentativas = 3;

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

        if( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {
            tentativa = maxTentativas;
        alert("Bem-vindo ao sistema " + loginInformado);
        } else {

            if(tentativa == 2){
                alert("Número de tentativas ultrapassado");
            }else{
                alert("Login inválido. Tente novamente");
            }
        }

        tentativa++;
    }while(tentativa != maxTentativas);


</script>
1 resposta

Olá, Matteus, tudo bem?

Adorei seu código! Fazia bastante tempo que não vi a utilização da estrutura do... while, achei bem interessante.

Só há um problema no código: quando conseguimos fazer o login com sucesso, o programa continua nos perguntando pelo login e pela senha!

Vamos analisar a parte do código que é executada quando conseguimos realizar login:

        if( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {
            tentativa = maxTentativas;
        alert("Bem-vindo ao sistema " + loginInformado);
        }

Aqui, a variável tentativa recebe o valor de maxTentativas, que é 3. Mas depois desse bloco if, o código executa o comando tentativa++;, e a variável tentativa fica com valor 4! Assim, a condição tentativa != maxTentativas do while continua tendo valor true e o código entra em um loop infinito.

Para corrigir o problema, basta que dentro do if acima, você escreva tentativa = 2; em vez de tentativa = maxTentativas;. Outra solução é alterar a condição do while para tentativa < maxTentativas, assim, mesmo que tentativa fique com valor 4 em vez de 3, essa condição será avaliada como false e o bloco while irá parar de executar.

Espero ter ajudado! Se tiver qualquer dúvida ou dificuldade, ficaremos felizes em te ajudar. Abraços e bons estudos!

Caso esta resposta tenha resolvido sua dúvida, por favor, marque como solucionada ✓. Bons Estudos!