Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida quanto a tentativas e a tentativas++ e sua localização

Na aula a profa diz que é melhor colocar o tentativas++ fora do else, mas eles deixam dentro do else e ainda dá certo... li no fórum algumas dúvidas semelhantes Às minhas e alguns respondem que é melhor deixar o tentativas ++ dentro do else, e não fora... mas aí o programa não contabilizaria o acerto como tentativa certo (supondo que eu quero que conte o acerto como tentativa)... enfim, não compreendi essa parte da aula.

Outra coisa, se eu escrevo: let tentativa = 1

e depois escrevo: tentativa = tentativa + 1 (mesmo que tentativa++, escrevi da primeira forma para demonstrar minha dúvida), como esses códigos não geram um paradoxo? Pra mim é como escrever: a=1, a=a+1, logo 1=2? (não sei se deu para compreender minha dúvida... não teria que criar duas variáveis, tipo: let tentativa = 1; let tentativas = tentativa + 1... Creio que minha dúvida seja mais conceitual do que técnica, mas se alguém puder ajudar a me explicar como a máquina pensa, agradeceria

1 resposta
solução!

Olá, Júlio! Tudo bem?

1. tentativas++ e sua localização:

  • Dentro do else:

    tentativas++ dentro do else significa que a variável tentativas será incrementada apenas quando o usuário errar o chute.

    Isso é útil se você quiser contar apenas as tentativas incorretas.

  • Fora do else:

    Se você mover tentativas++ para fora do else, ele será executado em cada tentativa, seja ela correta ou incorreta.

    Nesse caso, o acerto também seria contabilizado como uma tentativa.

  • Qual é o melhor?

    Depende do que você quer que o jogo faça. Se você quer contar o número total de chutes, incluindo o correto, coloque-o fora do else. Se você quiser contar apenas os chutes incorretos, deixe-o dentro do else.

    No contexto do código, ele funciona corretamente, pois o objetivo é mostrar quantas tentativas foram necessárias até o usuário acertar.

2. tentativa = tentativa + 1 e o "paradoxo":

  • Atribuição, não igualdade matemática:

    Em programação, o sinal = não significa "igual" no sentido matemático. Ele é um operador de atribuição.

    A linha tentativa = tentativa + 1 significa: "Pegue o valor atual da variável tentativa, adicione 1 a ele e atribua o resultado de volta à variável tentativa".

    1. Inicialmente, tentativa tem o valor 1.
    2. A expressão tentativa + 1 é avaliada, resultando em 2.
    3. O valor 2 é atribuído à variável tentativa, substituindo o valor anterior.
  • Sem paradoxo:

    Não há paradoxo porque não estamos afirmando que 1 é igual a 2. Estamos apenas atualizando o valor da variável tentativa.

  • Variáveis separadas:

    Se você criasse duas variáveis, tentativa e tentativas, elas seriam independentes.

    tentativas = tentativa + 1 criaria uma nova variável tentativas com o valor 2, mas tentativa permaneceria com o valor 1.

Espero ter ajudado.