Declaración y uso de enums
Parte de la sección Logic & Flow del Journey de C de Coddy — lección 56 de 63.
Ahora que has definido un enum, puedes crear variables de ese tipo enum y asignarles valores significativos. Aquí es donde los enums realmente brillan: en lugar de trabajar con números confusos, utilizas nombres descriptivos.
Para declarar una variable de un tipo enum, se utiliza la misma sintaxis que para declarar cualquier otra variable:
enum DayOfWeek today;
enum DayOfWeek weekend_day;Luego puedes asignar valores a estas variables utilizando las constantes con nombre de tu enum:
today = WEDNESDAY;
weekend_day = SATURDAY;Compara esto con el uso de números puros: today = 2; y weekend_day = 5;. La versión de enum te indica inmediatamente con qué día estás trabajando, mientras que los números requieren que recuerdes qué representa cada valor. Esto hace que tu código sea mucho más legible y menos propenso a errores.
Desafío
FácilCrea un programa en C que demuestre la declaración y el uso de variables enum para un sistema simple de gestión de tareas. Tu programa debe:
- Definir un
enumllamadoTaskStatuscon las siguientes constantes en este orden exacto:PENDINGIN_PROGRESSCOMPLETEDCANCELLED
- En la función main:
- Declarar tres variables de tipo
enum TaskStatusllamadastask1,task2ytask3 - Leer tres números enteros de la entrada que representen el estado de cada tarea (0, 1, 2 o 3)
- Asignar los valores enum correspondientes a cada variable de tarea basándose en la entrada:
- Si la entrada es 0, asignar
PENDING - Si la entrada es 1, asignar
IN_PROGRESS - Si la entrada es 2, asignar
COMPLETED - Si la entrada es 3, asignar
CANCELLED
- Si la entrada es 0, asignar
- Imprimir el estado de cada tarea utilizando los valores enum en este formato exacto:
Task 1 status: [numeric_value]Task 2 status: [numeric_value]Task 3 status: [numeric_value]
- Contar e imprimir cuántas tareas hay en cada categoría de estado:
Pending tasks: [count]In progress tasks: [count]Completed tasks: [count]Cancelled tasks: [count]
- Calcular e imprimir el número total de tareas activas (tareas que están en
PENDINGoIN_PROGRESS) en este formato exacto:Active tasks: [count]
- Declarar tres variables de tipo
Este desafío demuestra cómo las variables enum hacen que el código sea más legible al usar nombres significativos en lugar de números brutos. Practicarás la declaración de variables enum, la asignación de valores enum basados en la entrada, el uso de constantes enum en comparaciones y la realización de cálculos con valores enum.
Hoja de referencia
Para declarar variables de un tipo enum, utiliza la misma sintaxis que para declarar cualquier otra variable:
enum DayOfWeek today;
enum DayOfWeek weekend_day;Asigna valores a las variables enum utilizando las constantes con nombre de tu enum:
today = WEDNESDAY;
weekend_day = SATURDAY;El uso de nombres de enum en lugar de números brutos hace que el código sea más legible y menos propenso a errores. Compara today = WEDNESDAY; con today = 2;: la versión enum muestra inmediatamente con qué día estás trabajando.
Pruébalo tú mismo
#include <stdio.h>
// TODO: Definir el enum TaskStatus aquí
int main() {
// Leer la entrada para tres estados de tarea
int status1, status2, status3;
scanf("%d", &status1);
scanf("%d", &status2);
scanf("%d", &status3);
// TODO: Declarar tres variables enum TaskStatus (task1, task2, task3)
// TODO: Asignar valores de enum basados en la entrada
// TODO: Imprimir los estados de las tareas
// TODO: Contar tareas en cada categoría
// TODO: Calcular e imprimir el recuento de tareas activas
return 0;
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Logic & Flow
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 cadenas