`El concepto de conjunto se encuentra ampliamente difundido en nuestro entorno. Con regularidad utilizamos este concepto en múltiples actividades que van desde los días de la semana, los colores, grupos de animales, materias, etcétera.
El lenguaje C++ implementa una estructura para implementar conjuntos con el fin de representar los conjuntos del mundo real para poder realizar operaciones sobre ellos Además nos provee algunas herramientas para poder manipularlos y lo que pueda faltar… lo podemos programar.
Recordemos que un conjunto es un grupo de elementos (ítems) que tienen características similares y que se diferencian entre sí por alguna propiedad que nos interesa y qué cambia en cada uno de los elementos que forman parte de dicho conjunto, por ejemplo los días de la semana, los meses del año o los elementos de un grupo escolar.
En lenguaje C++ utilizamos la palabra reservada enum para definir grupos de elementos comunes (conjuntos).
Enumerador (enum)
Un tipo de datos enumerado es una manera de asociar nombres a números, y por consiguiente de ofrecer más significado a alguien que lea el código, es un tipo definido por el usuario y consiste en un conjunto de nombres constantes llamados enumeradores. Un tipo de datos enumerado es útil cuando se quiere poder seguir la pista de alguna característica. (1)(2)
Sintaxis de enum
// enum sin alcance:
enum identificador: tipo {lista-enumerada};
// enum con alcance:
enum [class|struct] identificador: tipo {lista-enumerada};
en donde,
- enum, palabra reservada que da inicio a una estructura enumerada.
- identificador, nombre con el que se hará referencia a la estructura enumerada.
- tipo, el tipo de dato que tendrán los enumeradores
- {lista-enumerada}; lista de los enumeradores, debe terminar con punto y coma (;)
- [class|struct] define un enumerador como clase o estructura, lo que requiere el indicador de ámbito para acceder a los elementos. Revisaremos esto nuevamente una vez revisemos el concepto de objetos y clases.
Ejemplos de la estructura enum
Como siempre, la mejor forma de comprender el uso de la estructura enum, es con ejemplos.
// cpp_43_enum01.cpp // Este programa forma parte del tutorial de introducción al lenguaje C++ // http://a.ehack.info/leguaje-c-introduccion/ // Se ilustra la decalaración de tipos enumerados // 2018, Por http://about.me/carlosgbr // Versión 1 // Compilado en https://www.onlinegdb.com/online_c++_compiler #include <iostream> using namespace std; int main() { enum TipoFigura {Cuadro, Triangulo, Circulo}; TipoFigura Figura; //Definimos Figura de tipo enumerado TipoFigura Figura = Circulo; switch (Figura) { case Cuadro: cout << "Actividades para Cuadros"; break; case Triangulo: cout << "Actividades para Triángulo"; break; case Circulo: cout << "Actividades para Círculo"; break; default: cout << "Función no implementada"; break; } //Revisamos el valor predeterminado que asigna el compilador a los enumeradores cout << endl<< endl << "Valor de Cuadro: " << Cuadro << endl; cout << "Valor de Triangulo: " << Triangulo << endl; cout << "Valor de Circulo: " << Circulo << endl; return 0; }
Podrás notar que no declaramos el tipo de «TipoFigura», de forma predeterminada los tipos enumerados son enteros, por eso los podemos utilizar directamente en la estructura switch, además los podemos utilizar en ciclos for y en general, del mismo modo que usaríamos una variable entera.
El programa también nos muestra que los enumeradores reciben un valor predeterminado por el compilador, asignando al primero siempre el valor igual a 0. Sin embargo tú puedes cambiar el valor que requieras. Por ejemplo:
enum TipoEleccion {Piedra = 1, Tijeras = 5, Papel = 10};
Si asignamos un valor a un enumerador y a los demás no, a los siguientes enumeradores se les asignará valor de forma consecutiva. Como ya se mencionó, si no asignas al primer enumerador este tendrá un valor de 0, independientemente del valor del siguiente elemento.
Por qué usar enum
Probablemente te parezca un poco extraña la existencia de las estructuras enumeradas. A su favor te puedo comentar que permiten crear programas más elegantes y simplificados, como menciona por ejemplo intenta programar el siguiente programa sin el uso de una estructura enumerada. Después imagina un simulador lleno de 0’s y 1’s en lugar de «Encendido» y «Apagado», la ventaja es evidente.
// cpp_44_enum02.cpp // Este programa forma parte del tutorial de introducción al lenguaje C++ // http://a.ehack.info/leguaje-c-introduccion/ // Se ilustra la decalaración de tipos enumerados y su asignación de valores // 2018, Por http://about.me/carlosgbr // Versión 1 // Compilado en https://www.onlinegdb.com/online_c++_compiler #include <iostream> using namespace std; int main() { enum TipoEleccion {Piedra, Tijeras = 5, Papel}; TipoEleccion Eleccion; //Definimos Figura de tipo enumerado TipoEleccion //Revisamos el valor predeterminado que asigna el compilador a los enumeradores cout << endl<< endl << "Valor de Piedra: " << Piedra << endl; cout << "Valor de Tijeras: " << Tijeras << endl; cout << "Valor de Papel: " << Papel << endl; return 0; }
Conclusión
Varios autores han referido que la potencia de un lenguaje está en función de su capacidad de crear y utilizar estructuras de datos, C++ ofrece una extensa gama de mecanismos para esto. Los tipos enumerados son uno de los más sencillos, seguiremos explorando otras estructuras en los siguientes capítulos.
Si tienes alguna duda que no se responde en este documento, por favor plantea tu pregunta para poder responderte. O escribe directamente a soporte@ehack.mx
Referencias
- Por Roberto C. González para Ethical Hack
- (1) Enumeradores by Microsoft MSDN
- (2) Programas más claros gracias a enum por David Villa
Fuente Imágenes
- Enumeración by Pixabay
- «Todas las imágenes de esta sección»: by Nala Systems
Tutorial de C++ by eHack
- Volver al índice de temas del Tutorial de C++
- *** Durante todo este tutorial se repetirá: Este es un curso orientado a gente que nunca ha programado, incluso a gente ajena a la informática. Por esta razón el desarrollo puede parecer lento en ciertas etapas. Prefiero ser claro paso a paso, que hacer «pasos mágicos» como suele ocurrir cuando se enseña programación. *** También es buena idea leas esta entrada si te preguntas «Por qué C++»
Código Fuente
- El código fuente de toda la serie lo puedes descargar en nuestro repositorio en github busca los programas con el nombre del encabezado de cada programa.
- Código de esta sección
Enumeradores en C++, por Roberto C. González. Se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional.
©2025, Ethical Hack, Todos los derechos reservados sobre el contenido propio.