Decisão múltipla com switch
📽 Veja esta vídeo-aula no Youtube
Testa uma expressão, comparando sequencialmente com diversas outras. Permite que se disponha múltiplos caminhos de execução, de acordo com o valor da primeira expressão.
Exemplo:
Menu de opções
--------------
N. Novo arquivo
A. Abrir arquivo
H. Ajuda
X. Sair
Digite a sua opção: _
Nesse caso, gostaríamos de avaliar o resultado da digitação entre 4 valores disjuntos ("N"
, "A"
, "H"
e "X"
).
Comando switch
Implementa a decisão múltipla em C#.
switch (expressaoTeste)
{
case expressaoCaso1:
comandosCaso1Verdadeiro
...
break;
case expressaoCaso2:
comandosCaso2Verdadeiro
...
...
break;
...
default:
comandosTodosCasosFalsos
...
...
break;
}
switch
: comando de decisão múltiplaexpressaoTeste
: expressão a ser avaliada pelos testescase
: um teste de igualdade em relação aexpressaoTeste
expressaoCaso1
eexpressaoCaso2
: valores inteiros a serem testados contraexpressaoTeste
comandosCaso1Verdadeiro
ecomandosCaso2Verdadeiro
: listas de comandos a serem executados caso seus testes avaliem como verdadeirobreak
: indica não deve mais executar comandos do blocoswitch
default
(opcional): caso padrão, se nenhum dos casos anteriores for verdadeirocomandosTodosCasosFalsos
(opcional): comandos a serem executados no caso padrão
Exemplo:
string opcaoUsuario = "";
Console.WriteLine("Menu de opções");
Console.WriteLine("--------------");
Console.WriteLine("N. Novo arquivo");
Console.WriteLine("A. Abrir arquivo");
Console.WriteLine("H. Ajuda");
Console.WriteLine("X. Sair");
Console.WriteLine("\nDigite a sua opção: ");
opcaoUsuario = Console.ReadLine()!;
Console.WriteLine($"\nOPÇÃO SELECIONADA: {opcaoUsuario}\n");
switch (opcaoUsuario.ToUpper())
{
case "N":
Console.WriteLine("Um arquivo novo será criado.");
break;
case "A":
Console.WriteLine("Um arquivo existente poderá ser aberto.");
break;
case "H":
Console.WriteLine("Uma tela de ajuda será exibida.");
break;
case "X":
Console.WriteLine("Obrigado por utilizar nosso software!");
break;
default:
Console.WriteLine("Opção inválida!");
Environment.Exit(1); // Código de erro
break;
}
Environment.Exit(0); // Código de sucesso
Lista completa de códigos de erro do Windows
Expressão switch
Assim como para decisão simples temos o operador ?:
, também temos o operador switch
para decisão múltipla inline.
Exemplo:
int opcao = 1;
string mensagem = opcao switch
{
0 => "Solteiro(a)",
1 => "Casado(a)",
2 => "Divorciado(a)",
3 => "Viúvo(a)",
_ => "Outro"
};
Console.WriteLine(mensagem); // Casado(a)
Exemplo 2:
using System.Security.Cryptography;
int naipeSorteado = RandomNumberGenerator.GetInt32(1, 5);
string naipe = naipeSorteado switch
{
1 => "Paus",
2 => "Copas",
3 => "Espadas",
4 => "Ouros"
};
Console.WriteLine(naipe);