Desafio C#

Menu interativo com while e switch expression

Enunciado

Crie um programa que exiba um menu com opções (1 - Somar, 2 - Subtrair, 3 - Sair) e leia a escolha do usuário repetidamente com while. Use uma switch expression para executar a operação escolhida e retornar o resultado. O programa deve continuar até o usuário digitar 3. Para simplificar, use valores fixos de exemplo para os operandos.

Requisitos

  • Usar while para repetir o menu até a opção 3
  • Usar switch expression para mapear a opção para uma operação
  • Imprimir o resultado da operação ou mensagem de saída
  • Tratar opção inválida com mensagem adequada

Código inicial

using System;

class Program
{
    static void Main()
    {
        bool continuar = true;
        while (continuar)
        {
            Console.WriteLine("1 - Somar\n2 - Subtrair\n3 - Sair");
            Console.Write("Escolha: ");
            int opcao = int.Parse(Console.ReadLine());
            // Use switch expression para tratar a opção
        }
    }
}

Saída esperada

1 - Somar
2 - Subtrair
3 - Sair
Escolha: 1
Resultado: 15
1 - Somar
2 - Subtrair
3 - Sair
Escolha: 2
Resultado: 5
1 - Somar
2 - Subtrair
3 - Sair
Escolha: 3
Saindo...
Ver dica

Dentro do while, use opcao switch { 1 => ..., 2 => ..., 3 => ..., _ => ... }. Para sair, altere continuar para false quando a opção for 3.

Mostrar solução
using System;

class Program
{
    static void Main()
    {
        bool continuar = true;
        int a = 10;
        int b = 5;

        while (continuar)
        {
            Console.WriteLine("1 - Somar\n2 - Subtrair\n3 - Sair");
            Console.Write("Escolha: ");
            int opcao = int.Parse(Console.ReadLine());

            // Switch expression retorna uma string com o resultado
            string resultado = opcao switch
            {
                1 => $"Resultado: {a + b}",
                2 => $"Resultado: {a - b}",
                3 => "Saindo...",
                _ => "Opção inválida"
            };

            Console.WriteLine(resultado);

            if (opcao == 3)
                continuar = false;
        }
    }
}

Passo a passo

  1. Declaramos continuar como true para iniciar o laço while.
  2. Definimos os operandos fixos a = 10 e b = 5.
  3. Dentro do while, exibimos o menu com Console.WriteLine e lemos a opção com int.Parse(Console.ReadLine()).
  4. Usamos uma switch expression para mapear opcao para uma string de resultado: caso 1 soma, caso 2 subtrai, caso 3 retorna "Saindo..." e _ cobre opções inválidas.
  5. Imprimimos o resultado.
  6. Se a opção for 3, alteramos continuar para false, encerrando o laço.

Por que funciona

O while repete o bloco enquanto continuar for verdadeiro. A switch expression é avaliada a cada iteração e retorna um valor sem break. A variável continuar controla a saída do laço, garantindo que o programa termine quando o usuário escolher 3.

Erros comuns

  • Esquecer de atualizar continuar quando a opção for 3: o laço seria infinito.
  • Usar switch clássico sem break: causaria erro de compilação por fall-through.
  • Não tratar opção inválida com _: a switch expression lançaria exceção em tempo de execução.

Outra forma de resolver

Usar um do-while para garantir que o menu apareça pelo menos uma vez:

do
{
    // ... mesmo código ...
} while (continuar);

O do-while é preferível quando a primeira execução é obrigatória.

Saída esperada

1 - Somar
2 - Subtrair
3 - Sair
Escolha: 1
Resultado: 15
1 - Somar
2 - Subtrair
3 - Sair
Escolha: 2
Resultado: 5
1 - Somar
2 - Subtrair
3 - Sair
Escolha: 3
Saindo...