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

Não consegui entender esse exercício

Eu não consegui entender o raciocínio que esse código está elaborando.


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

    var maximoTentativas = 3;
    var tentativaAtual = 1;

    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; // acertou, então faço o gasto de todas as tentativas para sair do loop. Lá embaixo vai incrementar + 1! 

        } else {

            if (tentativaAtual == 3) {
                alert("Número permitido de tentativas ultrapassado!");
            } else {
                alert("Login inválido. Tente novamente");
            }
        }

       // vai para a próxima tentativa
        tentativaAtual = tentativaAtual +1  
    }

Quando olho pra ele, até parece fazer sentido, mas não saberia fazer um meramente parecido com ele. Alguém pode tentar me explicar como cada linha dele funciona?

2 respostas

Fala Gabriel, Tudo bem? Abaixo fiz uns comentários para tentar te ajudar na compreensão desse código.

var loginCadastrado = "alura"; // Registra na variável 'loginCadastrado' o usuário cadastrado
var senhaCadastrada = "alura321"; // Registro na variável 'senhaCadastrada' a senha para acesso

var maximoTentativas = 3; // Registra na variável 'maximoTentativas' a quantidade máxima que o usuário poderá tentar com a senha
var tentativaAtual = 1; // Registra na varável 'tentativaAtual' que será a primeira tentativa de login

while (tentativaAtual <= maximoTentativas) { // Laço de repetição while -> Enquanto a tentativaAtual for menor ou igual ao maximoTentativas o bloco while será executado

    var loginInformado = prompt("Informe seu login"); // Pede o login para o usuário
    var senhaInformada = prompt("Informe sua senha"); // Pede a senha para o usuário

    if (loginCadastrado == loginInformado && senhaCadastrada == senhaInformada) { // Verifica se o usuário e a senha recebidos são iguais ao dados cadastrados no inicio do código. O '&&' torna verdadeira a verificação apenas de TODAS as intruções forem verdadeiras logo, o usuário e a senha precisam estar corretos.

        alert("Bem-vindo ao sistema, " + loginInformado); // Esse bloco de código só será executado se o usuário e senha foram digitados corretamento dentro das 3 tentativas

        tentativaAtual = maximoTentativas; // se acertar o login e a senha é forçado que a variável de controle receba o máximo de tentativas então sairá do bloco while. O break aqui pode ser uma opção interessante.

    } else { // se não acertar o usuario e senha esse bloco será executado

        if (tentativaAtual == 3) { // se errou 3x esse bloco será executado
            alert("Número permitido de tentativas ultrapassado!");
        } else { // se errou a senha/usuário mas ainda não tentou 3x a aplicação dará uma nova chance e esse bloco será executado
            alert("Login inválido. Tente novamente");
        }
    }

    // vai para a próxima tentativa
    tentativaAtual = tentativaAtual + 1  // incrementa 1 unidade à variável de controle de tentativas. está dentro do bloco do while
}
solução!

Muito obrigado! Acho que consegui entender.