Menu
Coddy logo textTech

enum para constantes con nombre

Parte de la sección Lógica y Flujo 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 enumerado y asignarles valores de enumeración:

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 correspondiente del enum a currentLight según 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 del semáforo en este formato exacto: Current light: [enum_name]
    • Imprimir el valor numérico del semáforo actual en este formato exacto: Numeric value: [number]
    • Determinar e imprimir la acción según el semáforo actual:
      • Si es RED: imprimir Action: Stop
      • Si es YELLOW: imprimir Action: Caution
      • Si es GREEN: imprimir Action: Go
    • Calcular e imprimir el siguiente semáforo en la secuencia:
      • Si el semáforo actual es RED (0), el siguiente es GREEN (2)
      • Si el semáforo actual es YELLOW (1), el siguiente es RED (0)
      • Si el semáforo actual es GREEN (2), el siguiente es YELLOW (1)
    • Imprimir el siguiente semáforo en este formato exacto: Next light: [enum_name]

Este desafío demuestra cómo las constantes de enum hacen que el código sea más legible que usar números sin procesar. 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 cómo definir un enum, usar constantes de enum en asignaciones y comparaciones, y acceder a los valores enteros subyacentes de las constantes de 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 Lógica y Flujo

Practica por tu cuenta: Compilador de C online