1
resposta

Um pequeno progresso mas, continua dando Erro!


<meta charset="UTF-8">

<script>


    var loginCadastrado = "logica";
    var senhaCadastrada = "logica1";
    var tentativaUnica = 1;
    var tentativaMaxima = 3;
    var login = prompt ("Informe o seu Login");
    var senha = prompt ("Informe a sua Senha");

    if (login == loginCadastrado && senha == senhaCadastrada)

        { alert (" Bem Vindo ao Estudo de " + loginCadastrado);}


    else { 


        alert (" Tente mais uma vez");

        var login = prompt ("Informe o seu Login");
        var senha = prompt ("Informe a sua Senha");



        while (tentativaMaxima <= 3)


        alert( "Infelizmente não foi dessa vez!");

        tentativaMaxima = tentativaUnica +1;

    }


</script>
1 resposta

Oi, Claudia! Tudo bem?

Peço perdão pela demora em lhe responder, agora estou aqui pra ajudar na sua dúvida.

Como aprendemos no curso, o laço while é um laço de repetição, tudo o que está dentro desse laço será repetido até que a condição seja considerada falsa. Nessa tarefa, como você mesma já inferiu, ele será usado para testar a quantidade de vezes que o usuário tentou realizar o login e permitir apenas três repetições. O código que verifica o login atualmente é este:

<meta charset="UTF-8">

<script>
    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");
    }
</script>

Nós devemos criar duas variáveis: uma para definir o valor máximo de tentativas que o usuário pode fazer e uma para contar o número de tentativas. Vamos chamá-las de maximoTentativas e tentativaAtual, e elas, respectivamente, vão receber o valor 3 e 1, visto que o usuário possui 3 tentativas e que já começa usando sua primeira tentativa. Feito isso, precisamos que o nosso algoritmo de verificação de login seja repetido no máximo 3 vezes, certo? Vamos usar o laço de repetição while e a condição é que o número de tentativas do usuários seja menor que o valor máximo (três) e enquanto esse valor não for atingido, o código de verificação de login será executado novamente.

<meta charset="UTF-8">

<script>
    var loginCadastrado = "logica";
    var senhaCadastrada = "logica1";

    var maximoTentativas = 3; //define número máximo de tentativas
    var tentativaAtual = 1; //conta a quantidade de tentativas já usadas

    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);
        } else {
            alert("Login inválido. Tente novamente");
        }
    }
</script>

Certo, mas isso ainda não vai funcionar corretamente, o laço vai se repetir infinitamente, pois o valor de “tentativaAtual” será sempre menor que maximoTentativas. Isso acontece porque precisamos incrementar o valor da variável tentativaAtual a cada laço (no final da iteração), podemos fazer isso usando o operador de incremento ++. Assim, o nosso login já está limitado a três tentativas, mas ainda temos um probleminha: ele irá repetir o login três vezes mesmo que o usuário já tenha inserido os dados corretos. Podemos corrigir isso atribuindo o valor de maximoTentativas a variável tentativaAtual, dessa maneira a condição do while se torna falsa e o loop é encerrado.

E, para encerrar, a única coisa que podemos melhorar agora é dar alertas diferentes para cada situação de erro no login. Caso o número máximo de tentativas de login seja atingido, vamos exibir o alerta “Número permitido de tentativas ultrapassado!”, e caso o usuário tenha errado suas credenciais vamos exibir o alerta “Login inválido. Tente novamente”.

O código final fica da seguinte maneira:

<meta charset="UTF-8">

<script>
    var loginCadastrado = "logica";
    var senhaCadastrada = "logica1";

    var maximoTentativas = 3; //define número máximo de tentativas
    var tentativaAtual = 1; //conta a quantidade de tentativas já usadas

    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;
        } else {
            if (tentativaAtual == 3) {
                alert("Número permitido de tentativas ultrapassado!");
            } else {
                alert("Login inválido. Tente novamente");
            }
        }
        tentativaAtual++
    }
</script>

Agora seu algoritmo irá funcionar corretamente, atendendo aos requisitos que o instrutor pediu. Espero que tenha entendido, estou aqui caso precise.

Abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado. ✓