1
resposta

Confusão variável tentativas

DÚVIDA 1) Na minha cabeça, a variável chute "se parece" com a variável tentativas. A diferença é que chute é a própria pergunta, e tentativas é a quantidade de perguntas.

Portanto, ao definir let tentativas = 1, estamos dizendo que a primeira pergunta (chute) já é uma tentativa.

Pensamento certo? Feedbacks!!

DÚVIDA 2) Conforme "explicação" em "DÚVIDA 1)", não concordo em contabilizar tentativa somente quanda erra, pois, ao tentar uma única vez e acertar, o usuário LITERALMENTE tentou uma vez e acertou!! Ele utilizou aquela tentativa para jogar e acertar.

Colocando tentativas++ no primeiro ELSE ou no WHILE dá no mesmo (pelo que testei) - por que isso acontece?

Vejamos:

Pensamento ELSE: VS Code lê linha por linha

  • -se o usuário acertar na 1ª tentativa, eu disse lá no LET TENTATIVAS que era 1 (logo quando começou o jogo), então se o usuário acertar, vai aparecer que ele acertou na 1ª tentativa (colocamos templet sthings também ao acertar - então vai ler o valor que colocamos na variável). Vai entregar o alert do acerto. VS Code nem segue mais leitura - não tem mais condicional de importância para ler;
  • -se o usuário errar, VS Code vai ler ELSE, que é onde tem tentativas++ e vai contabilizar x vezes (x loops) - o qual será a contabilização das tentativas;

Pensamento WHILE: VS Code lê linha por linha

  • se acertar na 1ª tentativa (mesmo pensamento do ELSE);
  • se o usuário errar, vai ler ELSE e depois a linha da tentativas++ x vezes (x loops) - o qual será a contabilização das tentativas.

Pensamento certo? Feedbacks!!

DÚVIDA 3) Pensar em contabilizar as tentativas somente com erro, o let tentativas = 0 e não 1 (testei no VS Code e foi).

Errei em algum pensamento? Achei confuso o vídeo ao falar sobre isso...

1 resposta

Oi Ligia! Tudo bem com você? Espero que sim!

Vamos por partes tentar esclarecer suas dúvidas.

  1. Primeira dúvida:

    Seu pensamento está correto. A variável chute representa a tentativa atual do usuário, ou seja, o número que ele está tentando adivinhar. Já a variável tentativas conta quantas vezes o usuário fez um chute. Portanto, ao definir let tentativas = 1, você está considerando que a primeira tentativa já está sendo feita.

  2. Segunda dúvida:

    Sobre onde incrementar a variável tentativas, o comportamento é o mesmo porque a lógica do jogo é a mesma. Vamos analisar os dois casos:

    Pensamento ELSE:

    if (chute == numeroSecreto) {
        alert(`Isso ai! Você descobriu o número secreto ${numeroSecreto}`);
    } else {
        if (chute > numeroSecreto) {
            alert(`O número secreto é menor que ${chute}`);
        } else {
            alert(`O número secreto é maior que ${chute}`);
        }
        tentativas++;
    }
    

    Aqui, se o usuário errar, a tentativa é incrementada dentro do bloco else.

    Pensamento WHILE:

    while(chute != numeroSecreto) {
        if (chute > numeroSecreto) {
            alert(`O número secreto é menor que ${chute}`);
        } else {
            alert(`O número secreto é maior que ${chute}`);
        }
        tentativas++;
        chute = prompt('Escolha um número entre 1 e 100');
    }
    

    Nesse caso, a tentativa é incrementada dentro do loop while, o que também ocorre apenas quando o usuário erra.

    Ambos os métodos funcionam da mesma forma porque a lógica de incrementar a tentativa só ocorre quando o chute está errado. No entanto, é importante garantir que a tentativa correta também seja contabilizada. Portanto, incrementar a variável tentativas fora do else ou do while pode ser uma abordagem mais clara e abrangente.

  3. Terceira dúvida:

    Sobre iniciar let tentativas = 0, isso depende de como você quer contar as tentativas. Se você inicia com 0, a primeira tentativa será contabilizada apenas após o primeiro erro. Se inicia com 1, a primeira tentativa já é contada desde o início. Ambas as abordagens são válidas, mas é importante ser consistente com a lógica do seu jogo.

Para garantir que todas as tentativas sejam contabilizadas, inclusive a tentativa correta, você pode incrementar a variável tentativas fora do else, assim:

if (chute == numeroSecreto) {
    alert(`Isso ai! Você descobriu o número secreto ${numeroSecreto} com ${tentativas} tentativas`);
} else {
    if (chute > numeroSecreto) {
        alert(`O número secreto é menor que ${chute}`);
    } else {
        alert(`O número secreto é maior que ${chute}`);
    }
}
tentativas++;

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.