Menu
Coddy logo textTech

Enums em Instruções Switch

Parte da seção Logic & Flow do Journey de C da Coddy — lição 57 de 63.

Uma das combinações mais poderosas na programação C é o uso de valores enum com instruções switch. Essa combinação cria uma lógica de fluxo de controle excepcionalmente legível e de fácil manutenção que expressa claramente o processo de tomada de decisão do seu programa.

Quando você usa constantes enum como casos em uma instrução switch, o código se torna autodocumentado. Em vez de ver números misteriosos como case 0: ou case 5:, você vê nomes significativos que transmitem imediatamente seu propósito:

switch (day) {
    case MONDAY:
    case TUESDAY:
    case WEDNESDAY:
    case THURSDAY:
    case FRIDAY:
        printf("It's a weekday\n");
        break;
    case SATURDAY:
    case SUNDAY:
        printf("It's a weekend\n");
        break;
}

Esta abordagem torna seu código muito mais fácil de entender e modificar. Qualquer pessoa que ler este código saberá imediatamente o que cada caso representa, e adicionar novos casos ou alterar a lógica torna-se algo simples. O compilador também ajuda a capturar erros - se você escrever incorretamente uma constante de enum, receberá um erro de compilação em vez de um bug silencioso.

challenge icon

Desafio

Fácil

Crie um programa em C que utilize um enum com uma instrução switch para construir um sistema simples de consultoria meteorológica. Seu programa deve:

  1. Definir um enum chamado WeatherCondition com as seguintes constantes nesta ordem exata:
    • SUNNY
    • CLOUDY
    • RAINY
    • STORMY
    • SNOWY
  2. Escrever uma função chamada getWeatherAdvice que:
    • Recebe um parâmetro enum WeatherCondition chamado weather
    • Não retorna nada (void)
    • Usa uma instrução switch para imprimir conselhos específicos sobre o clima com base na condição:
      • Para SUNNY: imprima Perfect day for outdoor activities!
      • Para CLOUDY: imprima Good day for a walk, no sun protection needed.
      • Para RAINY: imprima Don't forget your umbrella!
      • Para STORMY: imprima Stay indoors and avoid travel.
      • Para SNOWY: imprima Drive carefully and dress warmly.
  3. Escrever uma função chamada getActivitySuggestion que:
    • Recebe um parâmetro enum WeatherCondition chamado weather
    • Não retorna nada (void)
    • Usa uma instrução switch para sugerir atividades com base no clima:
      • Para SUNNY: imprima Suggested activity: Beach or hiking
      • Para CLOUDY: imprima Suggested activity: Photography or gardening
      • Para RAINY: imprima Suggested activity: Reading or indoor games
      • Para STORMY: imprima Suggested activity: Movie marathon
      • Para SNOWY: imprima Suggested activity: Skiing or hot cocoa
  4. Na função main:
    • Declare uma variável do tipo enum WeatherCondition chamada currentWeather
    • Leia um número inteiro da entrada representando a condição climática (0, 1, 2, 3 ou 4)
    • Atribua o valor enum correspondente a currentWeather com base na entrada
    • Imprima a condição climática atual neste formato exato: Current weather: [numeric_value]
    • Chame a função getWeatherAdvice com currentWeather
    • Chame a função getActivitySuggestion com currentWeather

Este desafio demonstra o poder de combinar enums com instruções switch para criar um código legível e de fácil manutenção. Em vez de usar casos numéricos confusos em suas instruções switch, você usará constantes enum significativas que expressam claramente a lógica do programa. A instrução switch torna-se autodocumentada, facilitando a compreensão do que cada caso representa e a modificação do comportamento conforme necessário.

Folha de consulta

Usar valores de enum com instruções switch cria uma lógica de fluxo de controle legível e de fácil manutenção:

switch (day) {
    case MONDAY:
    case TUESDAY:
    case WEDNESDAY:
    case THURSDAY:
    case FRIDAY:
        printf("It's a weekday\n");
        break;
    case SATURDAY:
    case SUNDAY:
        printf("It's a weekend\n");
        break;
}

Essa abordagem torna o código autodocumentado ao usar nomes significativos em vez de números misteriosos como case 0: ou case 5:. O compilador ajuda a capturar erros gerando erros de compilação para constantes de enum digitadas incorretamente, em vez de bugs silenciosos.

Experimente você mesmo

#include <stdio.h>

// TODO: Defina o enum WeatherCondition aqui

// TODO: Implemente a função getWeatherAdvice aqui

// TODO: Implemente a função getActivitySuggestion aqui

int main() {
    // Ler entrada
    int weatherInput;
    scanf("%d", &weatherInput);
    
    // TODO: Declare a variável currentWeather e atribua o valor do enum com base na entrada
    
    // TODO: Imprima a condição climática atual no formato "Current weather: [numeric_value]"
    
    // TODO: Chame a função getWeatherAdvice
    
    // TODO: Chame a função getActivitySuggestion
    
    return 0;
}
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 Logic & Flow