1
resposta

Fiz o código, porém queria melhorá-lo

Fiz dessa forma, porém queria que ao final da terceira tentativa ele apresentasse a msg de tentativas excedidas sem a necessidade de aparecer o Informe seu login e senha 4 vezes, tentei achar uma forma, porém não consegui

<meta charset="UTF-8">
<script>
    var loginCadastrado = "alura";
    var senhaCadastrada = "alura321";

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

    while (contador < 4 ){
        if( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {

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

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

        var loginInformado = prompt("Informe seu login");
        var senhaInformada = prompt("Informe sua senha");
        contador = contador + 1;
        }
        if (contador == 4) {

        alert("Você excedeu o número de tentativas, contacte o administrador !");
        break
        }
    }



</script>
1 resposta

Adriano,

Como você vai testar o conteúdo das variáveis dentro do while, então não precisa declarar duas vezes.

Fiz uns ajustes no seu código, veja se concorda:

<meta charset="UTF-8">
<script>
    var loginCadastrado = "alura";
    var senhaCadastrada = "alura321";
    var contador = 1;

    while (contador < 4 ){

        var loginInformado = prompt("Informe seu login");
        var senhaInformada = prompt("Informe sua senha");
        if( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {
            alert("Bem-vindo ao sistema " + loginInformado);
            break
        } else {
            if (contador < 3) {
            alert("Login inválido. Tente novamente. Tentativas restantes: " + (3 - contador));
            }
        }
        contador = contador + 1;
        if (contador == 4) {
            alert("Você excedeu o número de tentativas, contacte o administrador !");
            break
        }
    }
</script>

O if (contador < 3) eu coloquei mais por conta do texto "Tente novamente". Na última vez que erra não faz sentido dizer para tentar novamente.

Aqui tem outra forma de fazer o trecho do while:

    while (contador < 4 ){

        var loginInformado = prompt("Informe seu login");
        var senhaInformada = prompt("Informe sua senha");
        if( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {
            alert("Bem-vindo ao sistema " + loginInformado);
            break
        } else {
            if (contador < 3) {
                alert("Login inválido. Tente novamente. Tentativas restantes: " + (3 - contador));
            } else {
                alert("Você excedeu o número de tentativas, contacte o administrador !");
                break
            }
            contador = contador + 1;
        }
    }