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
- Cria login.js na pasta fase3.
- 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). - Declara const passwordCorreta com um valor fixo (ex: "1234").
- Usa um while com um contador de tentativas que começa em 0.
- 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.
- 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).
- Testa duas versões: uma onde a terceira tentativa simulada é a password certa, e outra onde nenhuma das três é.
Fluxo de funcionamento
- 1tentativas = 0
- 2tentativas < 3 ?
- 3Password certa? break
- 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.");
}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.