Menu
Coddy logo textTech

enum para Constantes Nomeadas

Parte da seção Lógica e Fluxo do Journey de C da Coddy. Lição 55 de 63.

Ao escrever programas em C, você frequentemente precisa trabalhar com conjuntos de valores constantes relacionados. Por exemplo, você pode precisar representar dias da semana, meses do ano ou diferentes estados em um programa. Em vez de usar números brutos como 0, 1, 2, você pode usar enum para criar nomes significativos para essas constantes.

Um tipo enumerado, ou enum, permite que você defina um grupo de constantes inteiras nomeadas. Isso torna seu código muito mais legível e fácil de manter. Aqui está a sintaxe básica:

enum DayOfWeek {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
};

Por padrão, o primeiro nome recebe o valor 0, o segundo recebe 1, e assim por diante. Assim, MONDAY é igual a 0, TUESDAY é igual a 1 e SUNDAY é igual a 6. Essa abordagem é muito mais clara do que lembrar que o dia 0 significa segunda-feira ou o dia 6 significa domingo.

O uso de enum torna seu código autodocumentado e ajuda a prevenir erros que podem ocorrer ao usar números mágicos em todo o seu programa.

Você pode declarar variáveis do tipo enum e atribuir valores de enum a elas:

enum DayOfWeek today;
today = MONDAY;  // atribui 0 a today
challenge icon

Desafio

Fácil

Crie um programa em C que defina um enum para as cores do semáforo e demonstre seu uso. Seu programa deve:

  1. Definir um enum chamado TrafficLight com as seguintes constantes nesta ordem exata:
    • RED
    • YELLOW
    • GREEN
  2. Na função main:
    • Declarar uma variável do tipo enum TrafficLight chamada currentLight
    • Ler um inteiro da entrada representando o estado do semáforo (0, 1 ou 2)
    • Atribuir o valor correspondente do enum a currentLight com base na entrada:
      • Se a entrada for 0, atribuir RED
      • Se a entrada for 1, atribuir YELLOW
      • Se a entrada for 2, atribuir GREEN
    • Imprimir o status atual do semáforo neste formato exato: Current light: [enum_name]
    • Imprimir o valor numérico do semáforo atual neste formato exato: Numeric value: [number]
    • Determinar e imprimir a ação com base no semáforo atual:
      • Se for RED: imprimir Action: Stop
      • Se for YELLOW: imprimir Action: Caution
      • Se for GREEN: imprimir Action: Go
    • Calcular e imprimir o próximo semáforo na sequência:
      • Se o semáforo atual for RED (0), o próximo será GREEN (2)
      • Se o semáforo atual for YELLOW (1), o próximo será RED (0)
      • Se o semáforo atual for GREEN (2), o próximo será YELLOW (1)
    • Imprimir o próximo semáforo neste formato exato: Next light: [enum_name]

Este desafio demonstra como as constantes de enum tornam o código mais legível do que o uso de números brutos. Em vez de lembrar que 0 significa vermelho, 1 significa amarelo e 2 significa verde, você pode usar nomes significativos como RED, YELLOW e GREEN. Você praticará a definição de um enum, o uso de constantes de enum em atribuições e comparações e o acesso aos valores inteiros subjacentes das constantes de enum.

Experimente você mesmo

#include <stdio.h>

// TODO: Defina o enum TrafficLight aqui

int main() {
    // Ler entrada
    int input;
    scanf("%d", &input);
    
    // TODO: Declarar a variável currentLight e atribuir o valor do enum com base na entrada
    
    // TODO: Imprimir o status atual da luz
    
    // TODO: Imprimir o valor numérico
    
    // TODO: Imprimir a ação com base na luz atual
    
    // TODO: Calcular e imprimir a próxima luz
    
    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 Lógica e Fluxo

Pratique por conta própria: Compilador de C online