Condicional switch en C++. Declaración uso y sintaxis de switch en C++
¿Qué es Condicional Switch?
Los condicionales Switch, son una estructura de control condicional, que permite definir múltiples casos que puede llegar a cumplir una variable cualquiera, y qué acción tomar en cualquiera de estas situaciones, incluso es posible determinar qué acción llevar a cabo en caso de no cumplir ninguna de las condiciones dadas.
¿Cómo funciona el Switch?
La mejor forma de entender el funcionamiento de algo, es viendo un ejemplo de esto, de este modo, me parece que para comprender de forma adecuada como funciona un condicional Switch, es bueno hacerlo poniendo un ejemplo. Imaginemos entonces que nuestro programa consta de un menú de opciones digamos 3 opciones, cada una representada con un número correspondiente, es decir la opción uno corresponde al número 1, la dos al 2 y así sucesivamente, queremos entonces que de acuerdo a un número ingresado por el usuario ejecutemos una acción correspondiente y en caso de que no corresponda a ninguna de las posibles opciones, mostrar un mensaje de error cualquiera. De este modo, podemos identificar 3 casos distintos para nuestro switch o en otras palabras, hemos identificado tres condiciones posibles que puede llegar a cumplir nuestra variable: el caso uno corresponde a que el valor ingresado por el usuario sea el 1, es decir ejecutar la opción 1, el caso 2 el número 2, etc. adicionalmente hemos encontrado la opción que se ejecutará por defecto en caso de no suceder ninguno de estos casos, es decir si el usuario ingresa por ejemplo 10, mostraremos un mensaje de error cualquiera.
Espero que haya sido un tanto claro con esto, si no es así, recuerda que puedes preguntar en la sección de comentarios y con gusto te voy a responder o incluso modificar esta sección para responder tu cuestión, de igual forma, vamos a ver ya mismo unos ejemplos para entender mucho mejor de lo que he estado hablando.
Sintaxis del Condicional Switch en C++:
La sintaxis de un condicional Switch es bastante distinta a la de un condicional típico, sin embargo es bastante intuitiva y fácil de comprender, es solo cuestión de acostumbrarse. Veamos a continuación la estructura general de un condicional Switch y luego unos cuantos ejemplos.
switch(opción) //donde opción es la variable a comparar
{
case valor1: //Bloque de instrucciones 1;
break;
case valor2: //Bloque de instrucciones 2;
break;
case valor3: //Bloque de instrucciones 3;
break;
//Nótese que valor 1 2 y 3 son los valores que puede tomar la opción
//la instrucción break es necesaria, para no ejecutar todos los casos.
default: //Bloque de instrucciones por defecto;
//default, es el bloque que se ejecuta en caso de que no se de ningún caso
}
Vamos ahora a ver línea por línea el anterior código para comprender todo y quedar claros. Posteriormente veremos un ejemplo con valores reales.
Línea 1:
Aquí, tenemos la declaración del condicional switch, estamos diciendo que lo que viene a continuación es esto, entre los paréntesis, el switch recibe la variable que vamos a usar para comparar en cada uno de los casos.
Línea 2:
En la línea 2 tenemos una llave abriendo "{" lo cual como hemos visto en secciones anteriores, indica que allí comienzan los bloques de instrucciones que se ejecutarán para cada caso.
Línea 3:
En esta línea tenemos una parte vital del condicional switch, aquí tenemos definido un caso posible que puede cumplir nuestra variable, la sintaxis es simple, usamos la instrucción "case" para indicar que allí comienza un caso, luego indicamos el valor que puede tomar la variable, puede ser un numero, una cadena de caracteres o lo que necesitemos, de esto se siguen dos puntos ":" y después de estos ponemos la o las instrucciones a ejecutar para este caso, como ejemplo, podríamos tener algo como esto : case "Hola": cout << "Usted ha escrito Hola";.
Línea 4:
Esta línea contiene la instrucción break, es una instrucción simple, pero fundamental al interior del condicional Switch, esta instrucción indica que hasta allí va el bloque de instrucciones del caso inmediatamente anterior a este, de este modo evitamos que el algoritmo ejecute los demás casos, a modo de ejercicio, podrías intentar ejecutar el código del ejemplo que veremos más adelante y quitar las instrucciones break, con esto podrás comprobar que si el usuario ingresa por ejemplo un 1, se ejecutarán todos los casos, es por esto que el break es fundamental.
Línea 5 a 8
Estas líneas contienen una repetición de las instrucciones de las líneas 3 y 4, evidentemente cada una contiene un caso distinto, ten en cuenta que se pueden definir todos los casos que sean necesarios al interior del switch.
Líneas 9, 10 y 12
Estas líneas como deberías saber ya, contienen diferentes comentarios aclarativos sobre el código, en caso de que no comprendas adecuadamente estas líneas, te recomiendo visitar la sección de comentarios.
Línea 11
Esta línea cambia un poco con respecto a las anteriores, sin embargo conserva la misma esencia, en vez de poner el comando "case", usamos el comando "default", y luego los 2 puntos ":", notemos que no se pone ningún valor a evaluar, pues esta es la acción que se ejecuta en caso de que no lleguemos a entrar en ninguno de los casos.
Línea 13:
En esta línea hacemos uso de la llave cerrando "}", una vez más como seguramente ya sabrás esta nos indica que allí termina el bloque del condicional y se dará por terminada la ejecución de este para continuar ejecutando el resto del programa.
No te preocupes si no comprendiste muy bien lo que acabo de escribir, estoy seguro que con un par de ejemplos que veremos a continuación, te va a quedar todo claro
Ejemplos de Condicional Switch en C++
A continuación vamos a ver unos cuantos ejemplos para comprender de manera adecuada el uso de los condicionales Switch en C++, recuerda que si no comprendes alguno de estos ejemplos o tienes alguna pregunta o sugerencia sobre estos o cualquier contenido de la sección, puedes dejarlas en la sección de comentarios
Ejemplo 1: Menú de opciones en C++
Vamos a retomar el ejemplo mencionado anteriormente al inicio de la sección, en el cual suponíamos que el usuario nos ingresaba un número correspondiente a una opción cualquiera y de acuerdo a esto mostramos un mensaje y en caso de ingresar una opción incorrecta, mostramos un mensaje de error.
Solución Ejemplo 1:
Primero, determinemos los casos a ejecutar, tenemos tres casos posibles (suponiendo que nuestro menú está compuesto por 3 opciones) el caso 1 para la opción 1, el dos para la 2 y así sucesivamente. Nuestro caso por defecto (default) sería el caso de error, que sucede cuando no se ingresa alguna de las 3 opciones. Veamos entonces como hacer esto:
cout << "Ingrese la Opción a ejecutar: ";
int opcion = 0;
cin >> opcion;
switch(opcion)
{
case 1: cout << "Usted ha seleccionado la opción 1";
break;
case 2: cout << "Usted ha seleccionado la opción 2";
break;
case 3: cout << "Usted ha seleccionado la opción 3";
break;
default: cout << "Usted ha ingresado una opción incorrecta";
}
El código funcional completo sería el siguiente:
# include "iostream"
using namespace std;
int main()
{
cout << "Ingrese la Opción a ejecutar: ";
int opcion = 0;
cin >> opcion;
switch(opcion)
{
case 1: cout << "Usted ha seleccionado la opción 1";
break;
case 2: cout << "Usted ha seleccionado la opción 2";
break;
case 3: cout << "Usted ha seleccionado la opción 3";
break;
default: cout << "Usted ha ingresado una opción incorrecta";
}
// system("PAUSE"); //Solo ponla si no te da error
return 0;
}
Nota: Si no comprendes alguna de las líneas de estos códigos, te recomiendo visitar los contenidos anteriores (Entrada y Salida de Datos, Librerías ó Comentarios, Estructura de un Programa) o también puedes dejar un comentario al final de la sección con tu pregunta.
Ejemplo 2: Menú de opciones en C++, usando char
Vamos a retomar el ejemplo anterior, pero en esta ocasión vamos a usar caracteres (char) de C++, para determinar las opciones ingresadas por el usuario.
Solución Ejemplo 2, usando char:
Veamos entonces como hacer esto:
cout << "Ingrese la Opción a ejecutar: ";
char opcion;
cin >> opcion;
switch(opcion)
{
case 'a': cout << "Usted ha seleccionado la opción a";
break;
case 'b': cout << "Usted ha seleccionado la opción b";
break;
case 'c': cout << "Usted ha seleccionado la opción c";
break;
default: cout << "Usted ha ingresado una opción incorrecta";
}
El código funcional completo sería el siguiente:
# include "iostream"
using namespace std;
int main()
{
cout << "Ingrese la Opción a ejecutar: ";
char opcion;
cin >> opcion;
switch(opcion)
{
case 'a': cout << "Usted ha seleccionado la opción a";
break;
case 'b': cout << "Usted ha seleccionado la opción b";
break;
case 'c': cout << "Usted ha seleccionado la opción c";
break;
default: cout << "Usted ha ingresado una opción incorrecta";
}
// system("PAUSE"); //Solo ponla si no te da error
return 0;
}
Eso es todo. Como ves, en esencia es el mismo código, pero debes asegurarte de poner las diferentes opciones entre comillas simples ('), puesto que la comparación es entre caracteres.
Detalles sobre el condicional switch en C++
- En C++, NO puedes usar otra cosa diferente a número en cada case. Si necesitas comparar cadenas de texto u otros tipos de datos, seguramente un condicional como el if o if-else sean una mejor alternativa
- Los caracteres también se pueden usar, pues en esencia se pueden representar como números enteros (el lenguaje se encarga de eso por ti). Sin embargo, como indiqué, otros tipos de datos no son recomendables
- La sentencia default es opcional, así que si no lo deseas no la debes poner. Sin embargo, es recomendable hacerlo, para así controlar todas las opciones posibles y que tu programa no quede a la "suerte" en ciertos casos.
- Dentro de cada case eres libre de poner varias líneas de código, incluso otras estructuras como condicionales o ciclos. Sin embargo, es preferible mantener tu código ordenado y no poner muchas. Recomendaría no poner más de 5 y preferiblemente solo una. Si deseas hacer tareas complejas al interior de un case de un switch en C++, posiblemente sea mejor hacer esas tareas en una función y llamar a esa función desde el case o simplemente usar un if-else.
Así que, efectivamente, los condicionales switch y de hecho todos los condicionales en sí, son extremadamente útiles pues permiten definirle a nuestro software múltiples vías de ejecución contemplando así todas las posibilidades durante la ejecución. Me gustaría hacer una leve aclaración, el condicional switch encuentra su utilidad al momento de tener más de una posibilidad de valores para una variable cualquiera, evidentemente si nuestra variable solo puede adquirir un valor útil para nosotros, nuestra alternativa inmediata debería ser un if o un if-else, no un switch que resulta un poco mas engorroso de escribir, sin embargo cuando tenemos varias posibilidades es mejor un switch que tener condicionales anidados o un condicional después de otro. Espero que todo te haya quedado claro en esta sección.
Muy bien de momento, es todo en esta sección, podemos entonces continuar ahora con el siguiente contenido que son los Ciclos en C++, recuerda también dejar tus comentarios y/o preguntas en la sección de comentarios.
La última actualización de este artículo fue hace 3 años