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
whilepara 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
- Declaramos
continuarcomotruepara iniciar o laçowhile. - Definimos os operandos fixos
a = 10eb = 5. - Dentro do
while, exibimos o menu comConsole.WriteLinee lemos a opção comint.Parse(Console.ReadLine()). - Usamos uma switch expression para mapear
opcaopara uma string de resultado: caso 1 soma, caso 2 subtrai, caso 3 retorna "Saindo..." e_cobre opções inválidas. - Imprimimos o resultado.
- Se a opção for 3, alteramos
continuarparafalse, 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
continuarquando a opção for 3: o laço seria infinito. - Usar
switchclássico sembreak: 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...