1
resposta

[Dúvida] Invertendo a ordem do comando

Fui tentar aplicar o código de "Simulando uma tela de login" e fiquei na dúvida sobre a ordem dos comandos.. Me questionei se não poderia inverter a ordem os comandos ① e ② da opção A:

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");

Troquei, e ficou assim:

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 {
        ②    alert("Login inválido. Tente novamente");
       } else {
         ①   if (tentativaAtual == 3) {
            alert("Número permitido de tentativas ultrapassado!");
            }

Mas não apareceu nada na minha tela, ou seja, não funcionou. Há alguma razão para os comandos ① e ② estarem na ordem que estão? Ou seria alguma falha que cometi ao inverter a ordem?

1 resposta

Olá Isabela, tudo ok por aí?

Gostaria de lhe pedir desculpas pela demora em responder!

Sobre a situação que você trouxe em seu post ela aconteceu por um motivo um bem sutil mas que atrapalha muito, mas eu vou tentar explicar ela da forma mais simples que eu conseguir.

Sobre a sua dúvida em relação à ordem de parâmetros:

  • Na verdade nesse caso especifico em que estamos trabalhando a ordem dos parâmetros estão não importa muito, contudo existem casos onde ela pode e irá sim gerar diferenças.

  • O ponto de atenção aqui é o seguinte: Trocar a ordem dos parâmetros não deveria gerar problemas, contudo gerou, e isso aconteceu por conta da forma que você empregou essa mudança! Vou explicar melhor:

    • O que aconteceu foi que na verdade você colocou um else dentro de outro else sem configurar uma condição para ele acontecer, visto que você colocou a condição dentro do else. Dessa forma:

      } else {
        alert("Login inválido. Tente novamente");
         } else {
             if (tentativaAtual == 3) {
                alert("Número permitido de tentativas ultrapassado!");
                }
    • Como você pode ver existe um else, um alert e logo em seguida existe outro else que abriga a condição de deveria configurar ele.

    • Para fazer essa mudança de forma que o código funcione sem problemas, você deve fazer a implementação dessa forma:

      } else {
        alert("Login inválido. Tente novamente");
        if (tentativaAtual == 3) {
          alert("Número permitido de tentativas ultrapassado!");
        }
      }
      // vai para a próxima tentativa
      tentativaAtual = tentativaAtual + 1;
      }
    • Pois assim um dos else´s será removido e o if vai fazer a configuração necessária para gerar o máximo de tentativas. E claro não podemos esquecer de aumentar uma tentativa, pois caso contrário entraremos em um looping infinito que irá bugar seu computador.

Em suma era isso, deixo abaixo o código completo com essa implementação, e caso tenha mais dúvidas ou problemas relacionado ao curso recorra ao fórum:

    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 {
        alert("Login inválido. Tente novamente");
        if (tentativaAtual == 3) {
          alert("Número permitido de tentativas ultrapassado!");
        }
      }
      // vai para a próxima tentativa
      tentativaAtual = tentativaAtual + 1;
    }

Um abraço e bons estudos.

Caso este post tenha lhe ajudado, por favor marcar como solução! ✓.