Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Tentativas - Alert considerando o número de tentativas para acertar - Palavra no singular ou no plural

Bom dia,

No código escrito até agora, em caso de acerto com apenas uma tentativa, a mensagem visualizada é "*Isso aí! Você descobriu o número secreto (numeroSecreto) com 1 tentativas"

Por isso alterei o código da seguinte forma

if (chute == numeroSecreto ){
    // alert('Isso aí! Você descobriu o número secreto: ' + numeroSecreto) // Esse jeito funciona, mas no curso explicaram outro jeito
    if(tentativas == 1){
        alert(`Isso aí! Você descobriu o número secreto ${numeroSecreto} com ${tentativas} tentativa`);
    }
    else{
        alert(`Isso aí! Você descobriu o número secreto ${numeroSecreto} com ${tentativas} tentativas`);
    }

}

Gostaria de saber se existe uma forma mais sintética de escrever isso, por exemplo uma expressão condicional na template script.

Copio aqui o código completo escrito até agora, onde adicionei vários logs, como exercício pessoal

alert('Boas-vindas ao jogo do número secreto');
let numeroSecreto = 5;
console.log(`Número secreto: ${numeroSecreto}`);
let chute;
let tentativas = 1;

while(chute != numeroSecreto){

    // se chute for igual ao número secreto
    chute = prompt('Escolhe um número entre 1 e 10');
    console.log(`Tentativa numero ${tentativas}`);
    if (chute == numeroSecreto ){
        // alert('Isso aí! Você descobriu o número secreto: ' + numeroSecreto) // Esse jeito funciona, mas no curso explicaram outro jeito
        if(tentativas == 1){
            alert(`Isso aí! Você descobriu o número secreto ${numeroSecreto} com ${tentativas} tentativa`);
        }
        else{
            alert(`Isso aí! Você descobriu o número secreto ${numeroSecreto} com ${tentativas} tentativas`);
        }
        
    } 
    else{
        tentativas ++; // incrementa de 1 o valor da tentativa
        if(chute > numeroSecreto){
            alert(`O número secreto é menor que ${chute}`);       
        }
        else{
            alert(`O número secreto é maior que ${chute}`);
        }
    }
}
console.log(`Número total de tentativas: ${tentativas}`);
2 respostas
solução!

Oi, Agostino! Tudo bem?

Mandou muito bem nos exercícios e nos logs, isso ajuda demais a entender o que o código tá fazendo "por baixo dos panos", né?

Sua lógica com o if/else tá certinha e resolve o problema, mas tem um jeito bem comum na programação pra deixar isso mais direto, que é usando o operador ternário.

O que é o Operador Ternário?

Ele funciona como um if de uma linha só. A estrutura dele é assim:
condição ? valor_se_verdadeiro : valor_se_falso

Dá pra usar ele direto dentro da sua template string (aquela que usa a crase `). Olha como o seu código ficaria mais enxuto:

// Criamos uma variável para guardar a palavra certa
let palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa';

alert(`Isso aí! Você descobriu o número secreto ${numeroSecreto} com ${tentativas} ${palavraTentativa}`);

Por dentro da Template String

Se quiser deixar ainda mais sintético, dá pra colocar a lógica do ternário direto dentro do ${}:

alert(`Isso aí! Você descobriu o número secreto ${numeroSecreto} com ${tentativas} ${tentativas > 1 ? 'tentativas' : 'tentativa'}`);

Por que usar assim?

  1. Menos repetição: Você não precisa escrever a frase inteira do alert duas vezes.
  2. Leitura: Pra quem já conhece a sintaxe, fica bem rápido de bater o olho e entender que a palavra muda conforme o número de tentativas.
  3. Manutenção: Se um dia você quiser mudar o texto da mensagem, só precisa mexer em um lugar só, e não no if e no else.

O seu código completo com essa mudança ficaria assim:

alert('Boas-vindas ao jogo do número secreto');
let numeroSecreto = 5;
let chute;
let tentativas = 1;

while (chute != numeroSecreto) {
    chute = prompt('Escolhe um número entre 1 e 10');
    
    if (chute == numeroSecreto) {
        // Aqui usamos o ternário para definir a palavra
        let palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa';
        alert(`Isso aí! Você descobriu o número secreto ${numeroSecreto} com ${tentativas} ${palavraTentativa}`);
    } else {
        tentativas++;
        if (chute > numeroSecreto) {
            alert(`O número secreto é menor que ${chute}`);
        } else {
            alert(`O número secreto é maior que ${chute}`);
        }
    }
}

Essa técnica é muito usada no dia a dia pra pequenos ajustes de texto e deixa o código bem limpo.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Olá Lorena, mais uma vez muito obrigado pela explicação super detalhada!

Acabei de ver que o assunto é justamente tratado na aula seguinte "04. Boas práticas de programação"
... eu poderia ter esperado mais um pouco! :-D