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

Quantidade de tentativas

Eu tentei fazer a verificação das tentativas como proposto na atividade, mas a única forma que encontrei foi determinando contadorUser = "3"; contadorSenha = "3"; para que assim além de funcionar como contador para o sistema, funcionasse para mostrar ao usuário a quantidade de tentativas ele ainda tem, mas tem alguma forma de fazer isso sem ter que determinar dois contadores? Por exemplo, ao passar por uma while o valor do contador reiniciar ou algo assim?

Segue meu código completo:

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

    var usuario = "ryendel";
    var senha = "oi";
    var loginInformado = 1;
    var senhaInformada = 1;
    contadorUser = "3";
    contadorSenha = "3";

while(loginInformado != usuario && contadorUser > 0){
    loginInformado = prompt("Informe o usuário.");
    if(loginInformado != usuario){
        alert("Usuário incorreto, tente novamente. Você tem mais " + contadorUser + " tentativas.");
    }

    contadorUser = contadorUser - 1;

        if(contadorUser <= 0){

        alert("Suas tentativas acabaram, por favor recarregue a página e tente novamente.")
    }

}
while(senhaInformada != senha && contadorSenha >= 1 && contadorUser > 0){
    senhaInformada = prompt("Por favor, informe sua senha:");
    if(senhaInformada != senha){
        alert("Senha incorreta, tente novamente. Você tem mais " + contadorSenha + " tentativas.");
    } else if (senhaInformada == senha){
        alert("Seja bem vindo " + usuario + "!");
    }
    contadorSenha = contadorSenha - 1;

        if(contadorSenha < 1){

        alert("Suas tentativas acabaram, por favor recarregue a página e tente novamente.")
    }
}



</script>
4 respostas

Olá Ryendel, tudo bem? Espero que sim. Interessante o método que você pensou no sentido de o usuário ter a possibilidade de descobrir se seu erro foi no nome de usuário ou na senha, isso é algo obrigatório no seu senso ou você chegou somente nessa programação pro acaso? Enfim, minha resolução desse exercício foi utilizar a senha e o nome de usuário como um bloco único, ou seja, mesmo que o usuário erre somente o login ou a senha o resultado será: "Login inválido. Tente novamente.", de uma checada nos meus códigos e me resposta se isso soluciona suas dúvidas.

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

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

    while(contador < 3) {

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

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

               alert("Bem-vindo ao sistema, " + loginInformado + ".");
        }     else {

            alert("Login inválido. Tente novamente");

            contador = contador+1;

            }

       }



</script>

Estou ótimo e você? Bom eu tentei pensar o mais próximo possível de um sistema de login real. Em um sistema em que pede o usuário, depois a senha, você nunca tem a opção de digitar a senha se errou o usuário. Então quis fazer isso e ainda mostrar o contador de tentativas para que se usuário errar ele ter mais duas tentativas e se errar a terceira acaba por ali e tem que reiniciar para começar novamente e o mesmo para a senha. A única forma que encontrei de fazer isso foi separando os dois em duas while diferentes. Meu código mudou muito desde ontem. Agora está funcionando perfeitamente dê uma olhada:

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

    var usuario = "ryendel";
    var senha = "oi";
    var loginInformado = 1;
    var senhaInformada = 1;
    contadorUser = "3";
    contadorSenha = "3";

    while(loginInformado != usuario && contadorUser >= 1){
        loginInformado = prompt("Informe o usuário.");
        if(loginInformado != usuario && contadorUser > 1){
            alert("Usuário incorreto, tente novamente. Você tem mais " + (contadorUser - 1) + " tentativas.");
        }

        if(loginInformado != usuario && contadorUser > 0){
            contadorUser = contadorUser - 1;
        }

        if(loginInformado != usuario && contadorUser == 0){

            alert("Suas tentativas acabaram, por favor recarregue a página e tente novamente.")
        }

    }
    while(senhaInformada != senha && contadorSenha >= 1 && contadorUser >= 1){
        senhaInformada = prompt("Por favor, informe sua senha:");
        if(senhaInformada != senha && contadorSenha > 1){
            alert("Senha incorreta, tente novamente. Você tem mais " + (contadorSenha - 1) + " tentativas.");
        } else if (senhaInformada == senha){
            alert("Seja bem vindo " + usuario + "!");
        }
        contadorSenha = contadorSenha - 1;

        if(contadorSenha <= 0){

            alert("Suas tentativas acabaram, por favor recarregue a página e tente novamente.")
        }
    }
</script>

Corrigi o contador de tentativas e o cancelamento para caso o usuário erre demais, antes se acertasse o user na última tentativa aparecia a mensagem falando que as tentativas acabaram e depois passava para a senha. Agora tá funcionando ok.

Só queria descobrir se tinha como reiniciar o contador depois da while para reduzir código. Eu pensei em determinar um valor para ele de novo depois da `while, vou tentar fazer depois.

solução!

Olá Ryendel, bom se o objetivo é reutilizar o contador uma possível implementação seria essa:

            <meta charset="UTF-8">
            <script>
                var usuario = "ryendel";
                var senha = "oi";
                var loginInformado = 0;
                var senhaInformada;
                var contador = 1;

                while(contador <=3){
                    loginInformado = prompt("Informe o usuário.");
                    if(loginInformado != usuario && contador<=3 ){
                        alert("Usuário incorreto, tente novamente. Você tem mais " + (3 - contador) + " tentativas.");
                        contador++;
                    }
                    if(contador>3){
                        alert("Suas tentativas acabaram, por favor recarregue a página e tente novamente.")
                    }

                     if(loginInformado == usuario){
                        contador=1;
                         break;
                    }

                }

                while(contador <=3){
                    senhaInformada = prompt("Informe a senha.");
                    if(senhaInformada == senha){
                            alert("Seja bem vindo " + usuario + "!");
                            break;
                    }

                    if(senhaInformada != senha && contador <=3){
                            alert("Senha incorreta, tente novamente. Você tem mais " + (3 - contador) + " tentativas.");
                            contador++;
                    }

                    if(contador>3){
                        alert("Suas tentativas acabaram, por favor recarregue a página e tente novamente.")
                    }

                }
            </script>

Boa tarde Maison. Poucas aulas depois foi ensinado a fazer desta forma e consegui refazer. haha Obrigado pela atenção!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software