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

Melhores práticas de programação

Eu consegui atingir o objetivo, mas nem sempre é só isso que importa. Também tive de usar o break, não consegui só com os conhecimentos aprendidos nas aulas anteriores. Mas fiquei pensando sobre o meu código: 1- Ele é "inteligente"? 2- Teria alguma forma de melhorá-lo? 3- Por que se eu não usar o break no if (tentativa == 3), ele gera um loop infinito?

<meta charset="UTF-8">

<script>

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

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

    var tentativa = 1;

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

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

        while (loginCadastrado != loginInformado || senhaCadastrada != senhaInformada && tentativa <= 3){

            alert("Login inválido. Tente novamente");
            loginInformado = prompt("Informe seu login");
            senhaInformada = prompt("Informe sua senha");
            tentativa += 1;

            if(tentativa == 3){

                alert("Usuário bloqueado! Por favor, entre em contato com o administrador do sistema!");
                break;
            }

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

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

    }

</script>
5 respostas

Oi Bruna, tudo bem ?

Entendo sua preocupação com o código gerado e é muito importante desde já ter esse preocupação mesmo, lembra que não escrevemos código para gente e sim para outro programador que dará manutenção no futuro, quanto melhor o código mais feliz o futuro estará, rs.

Acredito que nesse ponto que está valha muito mais a pena você ir conseguindo solucionar os problemas, para ter um pouquinho mais de vivencia nessa area que é programação e quando for para alguma linguagem, como java, c# e as demais, você vai conseguir solucionar os problemas e lá vai aprender boas práticas de programação.

solução!

Oi Bruna. Complementando o que o Matheus falou:

1 e 2: Seu código está bem escrito sim :)

3: O break é necessário porque caso ele não estivesse ali dentro do if, o while continuaria sendo executado e o usuário não seria "bloqueado", tendo diversas outras chances de entrar no sistema. O loop fica infinito por causa da sua condição:

loginCadastrado != loginInformado || senhaCadastrada != senhaInformada && tentativa <= 3

Alterando ela para:

(loginCadastrado != loginInformado || senhaCadastrada != senhaInformada) && tentativa <= 3

resolvemos o problema do loop infinito :)

Matheus, tudo bem, obrigada pelo retorno, sei que esse primeiro momento é foco na solução, mas fico muito ansiosa quanto a minha lógica, se não estou pensando de uma forma muito confusa e isso acaba refletindo no código, enfim, vou tentar controlar melhor isso.

Daniel, obrigada! Eu nem posso acreditar que só um par de parêntese resolveria o problema =/, mas que bom que tive a oportunidade de aprender isso, obrigada pela dica de melhoria!

Mas você poderia me explicar por qual motivo isso fez diferença? Como o JavaScript estava interpretando antes e como interpreta agora? Agradeço se puder explicar.

Presumo que seja pela precedência lógica Bruna.

O ! é interpretado antes do &&, que é interpretado antes do ||.

Boa pessoal!!