1
resposta

[Projeto] Minha versão

int numeroSecreto = 7;
Console.WriteLine("Tente adivinhar o número secreto!");
int tentativa = 0;

while (tentativa != numeroSecreto)
{
Console.WriteLine("Digite um número");
tentativa = int.Parse(Console.ReadLine());
Console.WriteLine("Tente novamente");
}

Console.WriteLine("Parabéns, descobriu o número secreto!");

1 resposta

Olá, Hassan. Como vai?

Parabéns pela implementação do código! A estrutura do seu laço while está lógica e funcional. Esse é um exemplo clássico e excelente para entender como o controle de fluxo funciona através de uma condição booleana.

Para agregar valor ao seu projeto e torná-lo ainda mais robusto, gostaria de sugerir alguns pontos de melhoria e boas práticas em C#:

1. Otimização da mensagem de erro
No seu código atual, a mensagem "Tente novamente" aparece mesmo quando o usuário acerta o número, logo antes da mensagem de "Parabéns". Para evitar isso, você pode utilizar uma estrutura condicional if dentro do bloco:

while (tentativa != numeroSecreto)
{
    Console.WriteLine("Digite um número:");
    tentativa = int.Parse(Console.ReadLine());

    if (tentativa != numeroSecreto)
    {
        Console.WriteLine("Tente novamente!");
    }
}

2. Tratamento de Erros (TryParse)
Um ponto importante em C# é que o int.Parse pode travar o programa se o usuário digitar uma letra em vez de um número. Uma prática recomendada é usar o int.TryParse, que tenta converter o valor e retorna um booleano indicando se deu certo ou não.

3. Diferença entre While e Do-While
Como este capítulo do curso aborda essas duas estruturas, vale notar que você usou o while. A principal diferença é que o while testa a condição antes de entrar no bloco, enquanto o do while garante que o código seja executado pelo menos uma vez antes de testar a condição.

No caso de um jogo de adivinhação, o do while costuma ser muito utilizado porque sabemos que o usuário terá que fazer, no mínimo, uma tentativa. O código ficaria assim:

do 
{
    Console.WriteLine("Digite um número:");
    tentativa = int.Parse(Console.ReadLine());
    
    if (tentativa != numeroSecreto)
    {
        Console.WriteLine("Errado! Tente de novo.");
    }
} while (tentativa != numeroSecreto);

Continue praticando e explorando essas variações, elas são fundamentais para construir programas que interagem bem com o usuário!

Espero que possa ter lhe ajudado!