Enumeradores en C++

Enumeradores en C++

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.

// eb42_enum01.cpp
 // Este programa forma parte del tutorial de introducción al lenguaje C++
 // http://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.

Ejemplo de enumeradores en C++
Ejemplo de enumeradores en C++

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.

Ejemplo de salida enumerada
Ejemplo de salida enumerada

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.

// eb43_enum03.cpp
 // Este programa forma parte del tutorial de introducción al lenguaje C++
 // http://ehack.info/leguaje-c-introduccion/
 // Se ilustra la simplificación que ofrece el uso de enum en los programas
 // y la simplificación y claridad que podemos hacer en nuestros programas.
 // 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 TipoSwitch {Encendido = 1, Apagado = 0};
 
 TipoSwitch Switch1, Switch2, Led;
 
 //Obtenemos el estado del Switch1 "de algún modo"
 Switch1 = Encendido;
 Switch2 = Apagado;
 
 //Estado del led
 if (Switch1 and Switch2) {
 Led = Encendido;
 } else {
 Led = Apagado;
 }
 
 cout << "Estado del led: " << Led;
 
 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.


¿Deseas aprender BIEN Seguridad Informática “desde el principio”? 

Aplicación de medidas para la implantación de la L.O.P.D. en las empresas

Obtendrás información ampliada y más recursos en comparación con el material que ofrecemos de forma gratuita, y material adicional, visita https://ehack.mx/portfolio-view/material-de-estudio-ceh-online/ para más información o ecríbenos a ceh@ehack.mx

Ethical hack
Ethical hack

 Fuente Imágenes:

Referencias:

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.

 

Licencia Creative Commons
Enumeradores en C++ por Roberto C. González se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional.
Basada en una obra en http://ehack.info/leguaje-c-introduccion/
Permisos que vayan más allá de lo cubierto por esta licencia pueden encontrarse en https://about.me/carlosgbr.
Comentarios de Facebook

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.