2
respostas

Criando uma função que verifica se os dados inseridos estão corretos.

Olá, consegui resolver o exercício proposto de uma forma diferente da apresentada, na minha resolução criei uma função que analisa os dados inseridos pelo usuário e utilizei a função break, que não foi introduzida até então, que interrompe o programa caso os dados inseridos estejam corretos. Gostaria de compartilhar meu código pois talvez possa ajudar alguém. Sintam-se à vontade para comentar ou expor melhorias, qualquer dúvida estou à disposição!

<meta charset="UTF-8">
<script>

    function verifica(loginInformado,senhaInformada) {  //verifica os dados inseridos
        if(loginInformado != loginCadastrado || senhaInformada != senhaCadastrada){
            return(false);           //retorna que os dados inseridos estão incorretos
        }
        else{
            return (true);          //retorna que os dados inseridos estão corretos
        }
    }

     //declarando as variáveis:
    var loginCadastrado = "alura";
    var senhaCadastrada = "alura321";
    var loginInformado = prompt("Informe seu login");
    var senhaInformada = prompt("Informe sua senha");
    var contador = 1

    while(contador < 3 ){

       if(verifica(loginInformado, senhaInformada) == true){  // se os dados inseridos estiverem corretos
          alert("Bem-vindo ao sistema " + loginInformado);      //login bem sucedido 
          break;
       }

       if(verifica(loginInformado, senhaInformada) == false){           // se os dados inseridos estiverem incorretos   
          loginInformado = prompt("Os dados inseridos estão incorretos, por favor, informe seu login novamente.");
          senhaInformada = prompt("Informe sua senha");                //pede para que os dados sejam inseridos novamente
          verifica();                                                                                       //verifica os novos dados, importante caso o usuário acerte na ultima tentativa
          contador++     
       }
    }
    document.write("FIM.");

</script>
2 respostas

Achei bastante interessante seu raciocínio . Muito mesmo ! Mas acredito que nós duas caimos em repetição do código. Repetindo o prompt duas vezes. Pelo o que já li, é uma boa prática não se repetir!

O meu ficou assim:

    let loginCadastrado = "alura";
    let senhaCadastrada = "alura321";

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

    let tentativa = 2;

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

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

        } else {

            while (tentativa >= 1) {

                alert("Login inválido. Tente novamente!");
                loginInformado = prompt("Informe seu login");
                senhaInformada = prompt("Informe sua senha");
                tentativa = tentativa - 1;
            }
            alert("Fim das tentativas! Procure seu gerente!")

        }

Acredito que temos que pensar em melhorar essa repetição. No momento, estou estudando o dia todo e meu cérebro está derretido kkkk... Mas tarde tento pensar em algo. Porém, se alguém puder colaborar com uma solução legal . É bem vindo!

Obrigada por compartilhar!

Olá, Karine! Adorei a sua resposta. Se me permite ajudar, encontrei algumas possíveis melhorias para o seu código:

<meta charset="UTF-8">
<script>

    function verifica(loginInformado,senhaInformada) {  //verifica os dados inseridos
        if(loginInformado != loginCadastrado || senhaInformada != senhaCadastrada){
            return(false);           //retorna que os dados inseridos estão incorretos
        }
        else{
            return (true);          //retorna que os dados inseridos estão corretos
        }
    }

     //declarando as variáveis:
    var loginCadastrado = "alura";
    var senhaCadastrada = "alura321";
    var loginInformado = prompt("Informe seu login");
    var senhaInformada = prompt("Informe sua senha");
    var contador = 1;

    while(contador < 3 ){

       if(verifica(loginInformado, senhaInformada)){  // se os dados inseridos estiverem corretos
          alert("Bem-vindo ao sistema " + loginInformado);      //login bem sucedido 
          break;
       } else {
           loginInformado = prompt("Os dados inseridos estão incorretos, por favor, informe seu login novamente.");
           senhaInformada = prompt("Informe sua senha");                //pede para que os dados sejam inseridos novamente
           verifica(loginInformado, senhaInformada);                                                                                       //verifica os novos dados, importante caso o usuário acerte na ultima tentativa
           contador++;     
       }
    }
    document.write("FIM.");

</script>

Poderíamos trocar os dois ifs por um único if-else e, devido o retorno da função verifica() na condição do if já ser true, não precisamos comparar usando o == true, pois ele já entrará no bloco de código do if, visto que o resultado após a verificação seria esse:

if(true) {
    //executa o código
}