Oi, Claudia! Tudo bem?
Peço perdão pela demora em lhe responder, agora estou aqui pra ajudar na sua dúvida.
Como aprendemos no curso, o laço while é um laço de repetição, tudo o que está dentro desse laço será repetido até que a condição seja considerada falsa. Nessa tarefa, como você mesma já inferiu, ele será usado para testar a quantidade de vezes que o usuário tentou realizar o login e permitir apenas três repetições. O código que verifica o login atualmente é este:
<meta charset="UTF-8">
<script>
var loginInformado = prompt("Informe seu login");
var senhaInformada = prompt("Informe sua senha");
if( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {
alert("Bem-vindo ao sistema " + loginInformado);
} else {
alert("Login inválido. Tente novamente");
}
</script>
Nós devemos criar duas variáveis: uma para definir o valor máximo de tentativas que o usuário pode fazer e uma para contar o número de tentativas. Vamos chamá-las de maximoTentativas
e tentativaAtual
, e elas, respectivamente, vão receber o valor 3
e 1
, visto que o usuário possui 3 tentativas e que já começa usando sua primeira tentativa. Feito isso, precisamos que o nosso algoritmo de verificação de login seja repetido no máximo 3 vezes, certo? Vamos usar o laço de repetição while e a condição é que o número de tentativas do usuários seja menor que o valor máximo (três) e enquanto esse valor não for atingido, o código de verificação de login será executado novamente.
<meta charset="UTF-8">
<script>
var loginCadastrado = "logica";
var senhaCadastrada = "logica1";
var maximoTentativas = 3; //define número máximo de tentativas
var tentativaAtual = 1; //conta a quantidade de tentativas já usadas
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);
} else {
alert("Login inválido. Tente novamente");
}
}
</script>
Certo, mas isso ainda não vai funcionar corretamente, o laço vai se repetir infinitamente, pois o valor de “tentativaAtual” será sempre menor que maximoTentativas
. Isso acontece porque precisamos incrementar o valor da variável tentativaAtual
a cada laço (no final da iteração), podemos fazer isso usando o operador de incremento ++
. Assim, o nosso login já está limitado a três tentativas, mas ainda temos um probleminha: ele irá repetir o login três vezes mesmo que o usuário já tenha inserido os dados corretos. Podemos corrigir isso atribuindo o valor de maximoTentativas
a variável tentativaAtual
, dessa maneira a condição do while se torna falsa e o loop é encerrado.
E, para encerrar, a única coisa que podemos melhorar agora é dar alertas diferentes para cada situação de erro no login. Caso o número máximo de tentativas de login seja atingido, vamos exibir o alerta “Número permitido de tentativas ultrapassado!”, e caso o usuário tenha errado suas credenciais vamos exibir o alerta “Login inválido. Tente novamente”.
O código final fica da seguinte maneira:
<meta charset="UTF-8">
<script>
var loginCadastrado = "logica";
var senhaCadastrada = "logica1";
var maximoTentativas = 3; //define número máximo de tentativas
var tentativaAtual = 1; //conta a quantidade de tentativas já usadas
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;
} else {
if (tentativaAtual == 3) {
alert("Número permitido de tentativas ultrapassado!");
} else {
alert("Login inválido. Tente novamente");
}
}
tentativaAtual++
}
</script>
Agora seu algoritmo irá funcionar corretamente, atendendo aos requisitos que o instrutor pediu. Espero que tenha entendido, estou aqui caso precise.
Abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado. ✓