1
resposta

[Projeto] Praticando SwitchCase

Preferi fazer todos de uma vez.

por favor ignorem o fato de ser uma classe. Eu guardo todo exercício que eu faço no git por isso tento deixar um pouco mais organizado:

public static void Ex1() //Calculadora de operações básicas
{
    Console.WriteLine("Digite o primeiro número:");
    double numero1 = double.Parse(Console.ReadLine());

    Console.WriteLine("Digite o segundo número:");
    double numero2 = double.Parse(Console.ReadLine());

    Console.WriteLine("Digite a operação (+, -, *, /):");
    string operacao = Console.ReadLine();

    string[] operacoesValidas = { "+", "-", "*", "/" };

    if (!operacoesValidas.Contains(operacao))
    {
        Console.WriteLine("Operação inválida");
        return;
    }

    if ((numero2 == 0) && (operacao == "/"))
    {
        Console.WriteLine("Divisão impossível");
        return;
    }

    double resultado = operacao switch
    {
        "+" => numero1 + numero2,
        "-" => numero1 - numero2,
        "/" => numero1 / numero2,
        "*" => numero1 * numero2,
    };

    Console.WriteLine($"Resultado: {resultado}");
}

public static void Ex2() //Saudação personalizada
{
    Console.WriteLine("Que momento do dia é agora?");
    string momentoDoDia = Console.ReadLine();

    Console.WriteLine("Qual o seu nome?");
    string nome = Console.ReadLine();

    switch (momentoDoDia) {
        case "1":
            Console.WriteLine($"Bom Dia, {nome}");
            break;
        case "2":
            Console.WriteLine($"Boa Tarde, {nome}");
            break;
        case "3":
            Console.WriteLine($"Boa Noite, {nome}");
            break;
        default:
            Console.WriteLine("Opção inválida");
            break;
    }
}

public static void Ex3() //Sistema de recompensas
{
    Console.WriteLine("Digite o código de recompensa (DOBRAR, CURAR, OURO, ESPECIAL):");
    string cupom = Console.ReadLine();

    string message = cupom switch
    {
        "DOBRAR" => "Ganhar 2x EXP por 1 hora.",
        "CURAR" => "Poção de cura.",
        "OURO" => "1000 moedas de ouro.",
        "ESPECIAL" => "Item lendário.",
        _ => "Recompensa indisponível"
    };

    Console.WriteLine(message);
}

public static void Ex4()  //Refatorando a organização de livros
{
    Console.WriteLine("Digite o código do livro: ");
    string codigo = Console.ReadLine();

    if (!int.TryParse(codigo, out int _) || codigo.Length != 3)
    {
        Console.WriteLine("Código Inválido");
    }

    string categoria = codigo.Substring(0, 1);

    string nomecategoria = categoria switch
    {
        "1" => "Ficção Científica",
        "2" => "Literatura Clássica",
        "3" => "Fantasia",
        "4" => "Romance",
        "5" => "Suspense/Mistério",
        "6" => "Não Ficção",
        "7" => "Biografias/Memórias",
        "8" => "Distopia",
        "9" => "Infantojuvenil",
        _ => "Código inexistente"
    };

    Console.WriteLine(nomecategoria);
}

public static void Ex5() //Autenticação de usuário
{
    Console.WriteLine("Sistema de Autenticação");
    Console.WriteLine("-----------------------");
    Console.Write("Digite seu nome de usuário: ");

    string nome = Console.ReadLine();

    if (ValidaUsuarioAdmin(nome))
    {
        Console.WriteLine($"Bem vindo, {nome}!");
    }
    else
    {
        Console.WriteLine("Usuário não cadastrado.");

        Console.WriteLine("Opções disponíveis:");
        Console.WriteLine("[1] Cadastrar novo usuário");
        Console.WriteLine("[2] Acessar como convidado");
        Console.WriteLine("[3] Sair");
    }
    string opcao = Console.ReadLine();

    switch (opcao)
    {
        case "1":
            Console.WriteLine($"Novo usuário '{nome}' cadastrado com sucesso!");
            break;
        case "2":
            Console.WriteLine("Acesso concedido como convidado.");
            break;
        case "3":
            Console.WriteLine("Tchau");
            break;
        default:
            Console.WriteLine("Opção inválida. Encerrando sistema");
            break;
    }
}

private static bool ValidaUsuarioAdmin(string nomeUsuario)
{
    return nomeUsuario == "Admin";
}
1 resposta

Oii, Lucas!

Obrigada por compartilhar seu código com a comunidade Alura.

Sua iniciativa de organizar os exercícios em métodos separados e comentar cada um é uma ótima prática. Isso facilita tanto o reaproveitamento quanto a leitura posterior, especialmente quando tá versionando no Git. O uso do switch expression no C# deixou o código mais limpo e moderno, muito bem aplicado na Ex3.

Uma dica interessante para o futuro é usar ToUpper() quando for comparar strings com o switch, evitando problemas com letras minúsculas ou maiúsculas:


string cupom = Console.ReadLine().ToUpper();

string mensagem = cupom switch {
    "DOBRAR" => "Ganhar 2x EXP por 1 hora.",
    "CURAR" => "Poção de cura.",
    _ => "Recompensa indisponível"
};

Esse código trata melhor a entrada, mesmo que o usuário digite "curar" ou "Curar".

Conteúdos relacionados
Alura

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