1
resposta

while entendi mas não compreendi

Por gentileza, não consegui fazer o exercício, então ao estudar a solução deste exercício, percebi que o código não está completo, pois após ele exibir tentativa máxima, mas não foi programado para iniciar as tentativas novamente, fiquei 3h tentando e não consegui e recorri ao fórum OBS. quem tiver contato com o Instrutor Flavio de logica I parabenize-o o cara é muito fera!

<meta charset="UTF-8">

<script>

    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  
    }

</script>
1 resposta

Oi Judriani! Tudo bem por aí?

Agradeço pela paciência em aguardar um retorno.

Pela proposta do exercício, após as três tentativas não será mais possível acessar o sistema. Imaginando que esse programa seja aplicado por uma pessoa programadora em algum site, o passo seguinte seria, por exemplo, enviar um e-mail de verificação - ou alguma outra forma de recuperação de conta. Isso é feito considerando a segurança dos usuários.

Para que o programa não interrompa a contagem, o código pode ser alterado da seguinte maneira:

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

    while(true) {

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

    }

Ao preenchermos o parâmetro da estrutura de repetição while com a afirmação true, o programa se repetirá até que encontre o comando de parar dentro da condição dada no escopo da função.

Esse comando é o break, que está posto logo abaixo da condição if em que o login e a senha digitados coincidem com os cadastrados.

Assim, caso os dados recebidos não sejam os mesmos que os cadastrados, o programa continua e não há limite de tentativas estabelecido.

O instrutor Flávio explica sobre essa nova função no capítulo 7, aula 15 - Interrompendo uma repetição.

Na jornada em aprender programação sempre nos deparamos com alguma dúvida que nos faz quebrar a cabeça, e a solução está alguns passos a frente. Parabéns por sua dedicação e interesse! Esse exercício de lógica é muito benéfico para consolidar seu conhecimento e abrir espaço para soluções criativas, que serão muito importantes no seu dia a dia como dev.

Espero ter ajudado!

Abraços e bons estudos.

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