Skip to content
Controlo de FluxoModo de leitura focado
MédioFase 3

Exercício Médio — Simulador de Tentativas de Login

Combina while, if e um contador para simular um sistema de bloqueio após 3 tentativas erradas.

FerramentasVS CodeTerminalNode.js

Objetivo: combinar repetição e decisão para simular um cenário real de segurança — e praticar break dentro de um while.

Passos a realizar

  1. Cria login.js na pasta fase3.
  2. Cria uma lista simulada de tentativas de password erradas, por exemplo três strings dentro de um array (vais aprender arrays em detalhe na Fase 4, mas por agora usa apenas o índice [0], [1], [2] para os aceder).
  3. Declara const passwordCorreta com um valor fixo (ex: "1234").
  4. Usa um while com um contador de tentativas que começa em 0.
  5. Dentro do loop, compara a tentativa atual (usando o índice do array) com a passwordCorreta. Se coincidir, imprime "Acesso concedido" e usa break para sair do loop imediatamente.
  6. Se o contador chegar a 3 sem sucesso, imprime "Conta bloqueada" e o loop termina naturalmente (a condição do while deixa de ser verdadeira).
  7. Testa duas versões: uma onde a terceira tentativa simulada é a password certa, e outra onde nenhuma das três é.

Fluxo de funcionamento

  1. 1tentativas = 0
  2. 2tentativas < 3 ?
  3. 3Password certa? break
  4. 4tentativas++

Código de exemplo

login.js
const tentativasSimuladas = ["senha1", "1234", "abcd"];
const passwordCorreta = "1234";
let tentativas = 0;

while (tentativas < 3) {
  const tentativaAtual = tentativasSimuladas[tentativas];

  if (tentativaAtual === passwordCorreta) {
    console.log("Acesso concedido!");
    break;
  }

  console.log("Tentativa", tentativas + 1, "incorreta.");
  tentativas++;
}

if (tentativas === 3) {
  console.log("Conta bloqueada.");
}
Estrutura de partida

Dicas

  • Testar os dois cenários (acerta à terceira / nunca acerta) é essencial — um código que só foi testado com o "caminho feliz" esconde bugs no caminho de falha.
  • O break aqui evita continuar a "gastar" tentativas depois de já teres tido sucesso — sem ele, o loop continuaria até ao fim mesmo com a password certa.

Erros comuns

  • Esquecer o break após o sucesso, fazendo o programa continuar a testar tentativas mesmo depois de a password já estar certa.
  • Comparar a tentativa errada (usar sempre o mesmo índice do array) em vez da tentativa correspondente ao número da volta atual.

As minhas dúvidas

Voltar à vista da fase