Comparação entre If e Switch
Parte da seção Lógica & Fluxo do Journey de C# da Coddy. Lição 10 de 66.
C# oferece duas maneiras principais de lidar com múltiplas condições: instruções if-else e instruções switch. Cada uma tem seus pontos fortes em diferentes situações.
As instruções if-else são flexíveis e podem lidar com qualquer tipo de condição:
string grade = "B";
if (grade == "A")
{
Console.WriteLine("Excellent");
}
else if (grade == "B")
{
Console.WriteLine("Good");
}
else if (grade == "C")
{
Console.WriteLine("Satisfactory");
}
else
{
Console.WriteLine("Needs improvement");
}As instruções switch são mais claras ao comparar uma única variável com vários valores constantes:
string grade = "B";
switch (grade)
{
case "A":
Console.WriteLine("Excellent");
break;
case "B":
Console.WriteLine("Good");
break;
case "C":
Console.WriteLine("Satisfactory");
break;
default:
Console.WriteLine("Needs improvement");
break;
}O switch pode agrupar vários cases (fall-through) para que compartilhem o mesmo resultado. Empilhe os rótulos de case um após o outro, sem código entre eles, e use apenas um break no final:
string grade = "B";
switch (grade)
{
case "A":
case "a":
Console.WriteLine("Excellent - 4 points");
break;
case "B":
case "b":
Console.WriteLine("Good - 3 points");
break;
case "C":
case "c":
Console.WriteLine("Satisfactory - 2 points");
break;
default:
Console.WriteLine("Needs improvement");
break;
}Aqui, tanto "B" quanto "b" passam para o mesmo bloco e exibem "Good - 3 points". Esse padrão é útil sempre que você quiser que entradas em maiúsculas e minúsculas, ou qualquer conjunto de valores, produzam o mesmo resultado.
switch também pode agrupar casos com rótulos diferentes que compartilham um resultado:
char dayCode = 'M';
switch (dayCode)
{
case 'M':
Console.WriteLine("Monday");
break;
case 'T':
Console.WriteLine("Tuesday or Thursday");
break;
case 'W':
Console.WriteLine("Wednesday");
break;
case 'F':
Console.WriteLine("Friday");
break;
default:
Console.WriteLine("Unknown day");
break;
}Desafio
MédioCrie um método chamado convertGradeToPoints que:
- Aceite uma nota em formato de letra como parâmetro do tipo string
- Converta-a em uma pontuação numérica usando as abordagens switch e if-else
- O método deve implementar ambas as abordagens e retornar o resultado da implementação com switch
- Use estas conversões de notas:
- "A" ou "a" = 4
- "B" ou "b" = 3
- "C" ou "c" = 2
- "D" ou "d" = 1
- "F" ou "f" = 0
- Qualquer outra entrada = -1
Experimente você mesmo
public class ConvertGradeToPoints
{
// Implemente o método convertGradeToPoints
public static int convertGradeToPoints(string letterGrade)
{
// Escreva seu código aqui
}
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Matrizes Multidimensionais
Noções Básicas de Matrizes 2DDeclaração e Inicialização de Matrizes 2DAcesso aos Elementos de Matrizes 2DLoops Aninhados com Matrizes 2DMatrizes IrregularesOperações Comuns com MatrizesRevisão - Multidimensional4Técnicas de Controle de Fluxo
Retornos AntecipadosCláusulas de GuardaInstruções de Salto (goto)Break e ContinueSimplificando Condicionais Aninhadas7Operadores Lógicos Avançados
Avaliação de Curto-CircuitoOperadores Lógicos CondicionaisPrecedência de OperadoresRevisão - Operadores Avançados2Tomada de Decisões Avançada
Múltiplas CondiçõesLógica Booleana ComplexaComparação entre If e SwitchInstruções Switch AninhadasRevisão - Decisões Avançadas5Tratamento de Exceções
Noções básicas de Try-CatchTipos de ExceçãoMúltiplos blocos CatchTrabalhando com ArquivosBloco FinallyUsando Using vs. Try-FinallyExceções PersonalizadasRecapitulação - Tratamento de Erros3Aprimoramentos de Loops
Desempenho de LoopsIteração de Estruturas ComplexasCada Tipo de LoopRefatoração de LoopsRevisão - Loops Otimizados6Tratamento de Nulos
Fundamentos de Referências NulasTipos de Valor AnuláveisPadrões de Verificação de NulosProgramação DefensivaRecapitulação — Segurança contra NulosPratique por conta própria: Compilador de C# online