6
respostas

Boa noite, fiz o código de maneira diferente e ele funcionou se eu erro a senha, porém se acerto ele entra em loop. Onde está o problema ?

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

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

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

    var tentativas = 1
    var limite = 3

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

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

    }
    while (tentativas <= limite) {

        if(loginCadastrado != loginInformado && senhaCadastrada != senhaInformada){
          alert("Login inválido. Tente novamente");
          var loginInformado = prompt("Informe seu login");
          var senhaInformada = prompt("Informe sua senha");
          tentativas = tentativas + 1;
        }
    }
      if(tentativas > limite) {
        alert("Sua senha foi bloqueada")

      }
</script>
6 respostas

João, eu peguei seu código e fiz da seguinte forma e funcionou:

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

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

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

    var tentativas = 1
    var limite = 3

    while (tentativas <= limite) {

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

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

        }

        if(loginCadastrado != loginInformado && senhaCadastrada != senhaInformada){
          alert("Login inválido. Tente novamente");
          var loginInformado = prompt("Informe seu login");
          var senhaInformada = prompt("Informe sua senha");
          tentativas = tentativas + 1;
        }
    }
      if(tentativas > limite) {
        alert("Sua senha foi bloqueada")

      }
</script>

Basicamente joguei o if para dentro do while e adicionei um "break;", para encerrar o loop depois do popup de login permitido.

Me ajudou a resolver o problema, muito obrigado! Mas eu ainda não consegui entender o porque o navegador trava como se estivesse em loop. Se o if está fora de while pq isso aconteceria? Abraço!

Tava revendo aqui e acho que é o seguinte:

Ao ser rodado a primeira coisa que o seu código fará é o prompt do login e da senha, certo?

Em seguida ele faria a verificação contra a informação cadastrada, através do seu if que estava fora/antes do while, certo? Se o if retornasse true, o programa entraria no while, porém não haveria mais propmpt pra ele fazer, então ele ficava repetindo o while ad eternamente, já que a função não receberia a variável que já deu true antes de entrar no while.

Penso que seja isso.

João, acho que entendi o que quis dizer. Ele deve ficar procurando o que fazer em while, já que não dei nenhuma função específica caso fosse if desse true. Obrigado!

Tente revisar o código na parte em que você faz o seu primeiro if, e colocar um else já efetuando a função de algum erro e voltar algum passa antes

Desculpe Asafe, não entendi o que quis dizer.