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 todayDesafío
FácilCrea un programa en C que defina un enum para los colores de un semáforo y demuestre su uso. Tu programa debe:
- Definir un
enumllamadoTrafficLightcon las siguientes constantes en este orden exacto:REDYELLOWGREEN
- En la función principal:
- Declarar una variable de tipo
enum TrafficLightllamadacurrentLight - Leer un entero de la entrada que represente el estado del semáforo (0, 1 o 2)
- Asignar el valor correspondiente del enum a
currentLightsegún la entrada:- Si la entrada es 0, asignar
RED - Si la entrada es 1, asignar
YELLOW - Si la entrada es 2, asignar
GREEN
- Si la entrada es 0, asignar
- 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: imprimirAction: Stop - Si es
YELLOW: imprimirAction: Caution - Si es
GREEN: imprimirAction: Go
- Si es
- Calcular e imprimir el siguiente semáforo en la secuencia:
- Si el semáforo actual es
RED(0), el siguiente esGREEN(2) - Si el semáforo actual es
YELLOW(1), el siguiente esRED(0) - Si el semáforo actual es
GREEN(2), el siguiente esYELLOW(1)
- Si el semáforo actual es
- Imprimir el siguiente semáforo en este formato exacto:
Next light: [enum_name]
- Declarar una variable de tipo
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;
}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
1Fundamentos de Punteros
¿Qué es un puntero?Declaración de punterosEl operador de dirección (&)El operador de desreferencia (*)Punteros NULLResumen: Conceptos básicos de punteros4Proyecto: Utilidad de texto simple
Descripción general del proyectoContar caracteres7Estructuras (structs)
¿Qué es un struct?Declaración de un structCreación de variables de tipo structAcceso a los miembros de un structInicialización de structsResumen: Struct de datos de estudiantes10Enums y Typedef
enum para constantes con nombreDeclaración y uso de enumsEnums en sentencias switchUso de typedef para alias de tipostypedef con structsRepaso: Práctica de typedef y enums2Punteros y Arrays
Nombres de Arrays como PunterosElementos de un Array - PunterosAritmética de PunterosComparación de PunterosResumen: Recorrido de Arrays con Punteros5Punteros y funciones
Paso por valorPasar punteros a funcionesModificar variables mediante punterosUn ejemplo clásico: Intercambio (Swap)Pasar arrays a funcionesResumen: Argumentos de punteros a funciones3Arreglos de caracteres y cadenas
Cadenas como arreglos de charEl terminador nuloEntrada de cadenas con scanfUso de strlen()Uso de strcpy()Uso de strcat()Uso de strcmp()Resumen: Funciones básicas de cadenasPractica por tu cuenta: Compilador de C online