Menu
Coddy logo textTech

enum para constantes con nombre

Parte de la sección Logic & Flow del Journey de C de Coddy — lección 55 de 63.

Al escribir programas en C, a menudo necesitas trabajar con conjuntos de valores constantes relacionados. Por ejemplo, es posible que necesites representar los días de la semana, los meses del año o diferentes estados en un programa. En lugar de usar números brutos como 0, 1, 2, puedes usar enum para crear nombres significativos para estas constantes.

Un tipo enumerado, o enum, te permite definir un grupo de constantes de enteros con nombre. Esto hace que tu código sea mucho más legible y fácil de mantener. Aquí tienes la sintaxis básica:

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

Por defecto, el primer nombre obtiene el valor 0, el segundo obtiene 1, y así sucesivamente. Así que MONDAY es igual a 0, TUESDAY es igual a 1, y SUNDAY es igual a 6. Este enfoque es mucho más claro que recordar que el día 0 significa lunes o el día 6 significa domingo.

El uso de enum hace que tu código sea autodocumentado y ayuda a prevenir errores que pueden ocurrir al usar números mágicos en todo tu programa.

Puedes declarar variables de tipo enum y asignarles valores de enum:

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

Desafío

Fácil

Crea un programa en C que defina un enum para los colores de un semáforo y demuestre su uso. Tu programa debe:

  1. Definir un enum llamado TrafficLight con las siguientes constantes en este orden exacto:
    • RED
    • YELLOW
    • GREEN
  2. En la función principal:
    • Declarar una variable de tipo enum TrafficLight llamada currentLight
    • Leer un entero de la entrada que represente el estado del semáforo (0, 1 o 2)
    • Asignar el valor de enum correspondiente a currentLight basándose en la entrada:
      • Si la entrada es 0, asignar RED
      • Si la entrada es 1, asignar YELLOW
      • Si la entrada es 2, asignar GREEN
    • Imprimir el estado actual de la luz en este formato exacto: Current light: [enum_name]
    • Imprimir el valor numérico de la luz actual en este formato exacto: Numeric value: [number]
    • Determinar e imprimir la acción basada en la luz actual:
      • Si es RED: imprimir Action: Stop
      • Si es YELLOW: imprimir Action: Caution
      • Si es GREEN: imprimir Action: Go
    • Calcular e imprimir la siguiente luz en la secuencia:
      • Si la luz actual es RED (0), la siguiente es GREEN (2)
      • Si la luz actual es YELLOW (1), la siguiente es RED (0)
      • Si la luz actual es GREEN (2), la siguiente es YELLOW (1)
    • Imprimir la siguiente luz en este formato exacto: Next light: [enum_name]

Este desafío demuestra cómo las constantes enum hacen que el código sea más legible que el uso de números brutos. En lugar de recordar que 0 significa rojo, 1 significa amarillo y 2 significa verde, puedes usar nombres significativos como RED, YELLOW y GREEN. Practicarás la definición de un enum, el uso de constantes enum en asignaciones y comparaciones, y el acceso a los valores enteros subyacentes de las constantes enum.

Pruébalo tú mismo

#include <stdio.h>

// TODO: Define el enum TrafficLight aquí

int main() {
    // Leer entrada
    int input;
    scanf("%d", &input);
    
    // TODO: Declarar la variable currentLight y asignar el valor del enum basado en la entrada
    
    // TODO: Imprimir el estado actual de la luz
    
    // TODO: Imprimir el valor numérico
    
    // TODO: Imprimir la acción basada en la luz actual
    
    // TODO: Calcular e imprimir la siguiente luz
    
    return 0;
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Logic & Flow