Escolhas múltiplas

Além da estrutura if, podemos utilizar também uma segunda estrutura condicional: switch. Embora compartilhem muitas características comuns, essa estrutura é mais limitada do que a anterior.

Veja uma figura que ilustra o funcionamento do switch:

Layout de memória em C

🧑‍💻 O código

A estrutra de um switch é:

switch(variavel):
    case valor1:
        ações;
        break;
    case valor2:
        ações;
        break;
    default: // caso não entre em nenhuma das anteriores
        ações

Exemplo prático

Vamos acompanhar, agora, um exemplo prático de uso da estrutura condicional switch, muito adequada para o tratamento de menus, em que o usuário pode escolher apenas uma opção.

#include <stdio.h>

int main() {
    char opcao;

    printf("Escolha uma opção (A, B, C ou D): ");
    scanf(" %c", &opcao);

    switch (opcao) {
        case 'A':
            printf("Você escolheu a opção A.\n");
            break;
        case 'B':
            printf("Você escolheu a opção B.\n");
            break;
        case 'C':
            printf("Você escolheu a opção C.\n");
            break;
        case 'D':
            printf("Você escolheu a opção D.\n");
            break;
        default:
            printf("Opção inválida.\n");
    }

    return 0;
}

🧠 Teste seus conhecimentos

Você está desenvolvendo um programa em C para determinar o dia da semana com base em um número inteiro fornecido. Qual das seguintes opções demonstra a diferença chave entre o uso de if-else e switch para esta tarefa?

  • A

    Utilizar uma estrutura if-else para verificar se o número está dentro de um determinado intervalo para cada dia da semana e, em seguida, imprimir o dia correspondente se a condição for atendida.

  • B

    Utilizar uma estrutura switch com casos para cada dia da semana, onde cada caso contém a verificação direta do número e a impressão do dia correspondente.

  • C

    Utilizar uma estrutura if-else para verificar se o número é par ou ímpar e, em seguida, imprimir Dia par ou Dia ímpar com base na condição.

  • D

    Utilizar uma estrutura if-else para verificar se o número é maior que 5 e, em seguida, imprimir Dia avançado ou, caso contrário, imprimir Dia comum.

  • E

    Utilizar uma estrutura switch com apenas um caso padrão que imprime Número inválido caso o número não corresponda a nenhum dia da semana.

🛑 Uso do break

Em um switch, o uso do comando break não é obrigatório. Entretanto, sua ausência implicará na execução de todos comandos seguintes, até o próximo break, independentemente do atendimento às cláusulas case.

Observe o código abaixo:

#include <stdio.h>

int main() {
    char opcao;

    printf("Escolha uma opção (A, B, C ou D): ");
    scanf(" %c", &opcao);

    switch (opcao) {
        case 'A':
            printf("Você escolheu a opção A.\n");
            // break;
        case 'B':
            printf("Você escolheu a opção B.\n");
            break;
        case 'C':
            printf("Você escolheu a opção C.\n");
            break;
        case 'D':
            printf("Você escolheu a opção D.\n");
            break;
        default:
            printf("Opção inválida.\n");
    }

    return 0;
}

🧠 Teste seus conhecimentos

Qual será a saída do programa apresentado acima?

  • A

    Você escolheu a opção A.

  • B

    Você escolheu a opção B.

  • C

    Você escolheu a opção A. Você escolheu a opção B.

  • D

    Você escolheu a opção D.

  • E

    O programa não será executado.

📖 Bibliografia

Livros

  • Backes, A. (2018). Linguagem C - Completa e Descomplicada.