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

Local correto para colocar o contador

O meu código funcionou, mas eu vi que diferente da resposta do professor, eu coloquei o meu incrementador dentro do else, porque de acordo com meu pensamento, ele somente iria necessitar de incremento se o usuário tivesse errado o login ou/e a senha. Pensando assim, eu nem precisaria da função "break". Qual a diferença que é colocar ele dentro ou fora do else? Está correto esta minha lógica?

<meta charset="UTF-8">
<script>
    function pulaLinha() {

        document.write("<br>");
    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
    }

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

    var tentativa = 1;

    while(tentativa <=3){

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

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

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

            alert("Login inválido. Tente novamente");
            tentativa++;
        }
    }
</script>
3 respostas

Vander, a priori não vejo nada de errado com seu código. Mas é interessante que você entenda o conceito do break, pois será útil em diversas aplicações que não terão um else. :)

No mais, se seu código fez o pretendido, tá ótimo!

Bons estudos!

Abraço.

Olá Vander, tudo bem?! Seu código é 100% funcional... parabéns!

Porém não é interessante você utilizar deste artifício para parar ou continuar sua função While, pois nem sempre um cenário tão propício irá se apresentar à você... ou seja, nem sempre você vai ter o "else"

solução!

Olá Vander! Parabéns pelo seu código. Existem diversas maneiras de chegarmos ao mesmo resultado em programação e é interessante testarmos várias alternativas como você fez aqui.

A sua lógica neste exercício para o uso do else e do break está correta sim, mas realmente deve-se tomar cuidado em programas mais complexos onde você não terá uma situação tão simples como a apresentada.

Experimente também utilizar o for neste exercício. Como você mesmo fez e percebeu é importante ir testando as várias alternativas para entender o mecanismo por trás de cada uma delas.

Segue abaixo uma outra opção que fiz quando passei por este exercício:

<meta charset="UTF-8">

<h1>Login</h1>

<script>
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(texto) {
        document.write(texto);
        pulaLinha();
    }

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

    for (tentativas = 1; tentativas <= 3; tentativas++) {
        var loginInformado = prompt("Informe seu login").toLowerCase(); // .toUpperCase()
        var senhaInformada = prompt("Informe sua senha");
        if (loginCadastrado == loginInformado && senhaCadastrada == senhaInformada) {
            mostra("Bem-vindo ao sistema " + loginInformado);
            break;
        } else if (tentativas < 3) {
            alert("Login inválido. Tente novamente");
        } else {
            alert("Login inválido.")
        }
    }
</script>

Qualquer dúvida estamos a disposição! Se sua dúvida foi tirada neste tópico marque o mesmo como solucionado para assim ajudar outros colegas com a mesma dúvida!

Abraços e sucesso nos estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software