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).
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)
enum identificador: tipo {lista-enumerada};// enum con alcance:
enum [class|struct] identificador: tipo {lista-enumerada};en donde,
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.
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; }
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.
Enumeradores en C++ by Roberto C. González is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.
El comando dnsenum es una herramienta de línea de comandos para realizar enumeración de DNS…
En esta entrada te presento 24 de las listas negras más comunes que los servidores…
ZoomIt es una herramienta de anotación y zoom de pantalla para presentaciones técnicas que incluyen…
WinObj es el visor de espacios de nombres de Object Manager definitivo. Es la primera…
Whois realiza el registro de registro para el nombre de dominio o la dirección IP…
VolumeID – Esta utilidad, le permite cambiar los identificadores de los discos FAT y NTFS…