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

Simulando uma tela de login

Eu fiquei com uma curiosidade no exercício "Simulando uma tela de login". Na resolução, são criadas duas variáveis: uma para o número de tentativas atual e outra para o limite de tentativas. Pensei em resolver o exercício de uma maneira diferente. No meu código, criei a variável "tentativas", que começa em três. Ao errar, o código subtrai uma tentativa. Porém, quando testei, caso o usuário erre, a mensagem de senha inválida aparece três vezes seguidas e, ao chegar ao zero, não exibe mais nada, como deveria.

Como poderia fazer com que, ao errar, o usuário repetisse o processo de digitar login e senha desse modo?

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

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

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

    while(tentativas > 0){

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

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

        } else {

        alert("Login inválido. Você possui " + tentativas + " tentativas.");
        tentativas = tentativas - 1

        }
    }

    if(tentativas == 0) {

        alert("Você esgotou o número de tentativas.");
    }


</script>
2 respostas
solução!

Boa tarde amigo, é necessário colocar as variáveis de login e senha dentro do "while", assim, quando o loop restartar ele irá solicitar o login e senha novamente.

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

    while(tentativas > 0){

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

Também foi preciso inverter a ordem do "alerta de tentativa errada" com a subtração do valor da tentativa, pois fazendo somente a primeira alteração, quando você chegar na ultima tentativa aparecera o alerta "Você tem mais 1 tentativa" e logo em seguida já aparece automaticamente "Você esgotou o numero de tentativas". Alterando essa ordem ele começa subtraindo 1 tentativa, ficando o primeiro alerta de erro como "Você possui mais 2 tentativas", de forma que somente após o terceiro erro o alerta final aparece.

  } else {

    tentativas = tentativas - 1
        alert("Login inválido. Você possui " + tentativas + " tentativas.");
        }
...

O código completo com as alterações que mencionei ficou assim:

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

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

    while(tentativas > 0){

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

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

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

        } else {

    tentativas = tentativas - 1
        alert("Login inválido. Você possui " + tentativas + " tentativas.");

        }
    }

    if(tentativas == 0) {

        alert("Você esgotou o número de tentativas.");
    }


</script>

A solução era realmente simples. Deveria ter prestado mais atenção...

Obrigado, Diego!