Menu
Coddy logo textTech

If vs. Switch Comparison

Parte da seção Lógica & Fluxo do Journey de C# da Coddy — lição 10 de 66.

O C# oferece duas maneiras principais para lidar com múltiplas condições: instruções if-else e instruções switch. Cada uma tem seus pontos fortes em diferentes cenários.

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 limpas 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 múltiplos casos que compartilham o mesmo resultado ao empilhar rótulos case juntos — isso é chamado de fall-through. Quando vários casos não têm código entre eles, eles todos executam o mesmo bloco:

char dayCode = 'S';

switch (dayCode)
{
    case 'M':
    case 'T':
    case 'W':
    case 'R':
    case 'F':
        Console.WriteLine("Weekday");
        break;
    case 'S':
    case 'U':
        Console.WriteLine("Weekend");
        break;
    default:
        Console.WriteLine("Unknown day");
        break;
}

Aqui, 'S' e 'U' ambos fazem fall-through para a mesma chamada Console.WriteLine("Weekend"). Empilhar rótulos case vazios assim é a forma padrão de agrupar casos no C#.

challenge icon

Desafio

Médio

Crie um método chamado convertGradeToPoints que:

  1. Recebe uma nota de letra como um parâmetro string
  2. Converte para um ponto de nota numérico usando tanto as abordagens switch quanto if-else
  3. O método deve implementar ambas as abordagens e retornar o resultado da implementação switch
  4. 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

Folha de consulta

O C# fornece duas maneiras principais de lidar com múltiplas condições: instruções if-else e instruções switch.

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 limpas ao comparar uma única variável contra múltiplos 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;
}

As instruções switch podem agrupar múltiplos cases (fall-through) para compartilhar o mesmo resultado empilhando rótulos case:

char dayCode = 'S';

switch (dayCode)
{
    case 'M':
    case 'T':
    case 'W':
    case 'F':
        Console.WriteLine("Weekday");
        break;
    case 'S':
    case 'U':
        Console.WriteLine("Weekend");
        break;
    default:
        Console.WriteLine("Unknown day");
        break;
}

Experimente você mesmo

public class ConvertGradeToPoints
{
    // Implemente o método convertGradeToPoints
    public static int convertGradeToPoints(string letterGrade)
    {
        // Escreva seu código aqui
        
    }
}
quiz iconTeste seus conhecimentos

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