top of page

Condicional switch en C++. Declaración uso y sintaxis de switch en C++

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.

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.

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.

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.

Estructura

# 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;
}

#include <iostream>
#include <cmath>

using namespace std;

int main() {
    char opcion;
    double resultado, a, b;

    cout << "Selecciona una operacion matematica:\n";
    cout << "a. Suma\n";
    cout << "b. Resta\n";
    cout << "c. Multiplicacion\n";
    cout << "d. Division\n";
    cout << "e. Potencia\n";
    cout << "f. Raiz cuadrada\n";
    cout << "Ingresa la letra de la operacion deseada: ";
    cin >> opcion;

    switch (opcion) {
        case 'a':
            cout << "Ingresa dos numeros para sumar: ";
            cin >> a >> b;
            resultado = a + b;
            cout << "Resultado: " << resultado << endl;
            break;

        case 'b':
            cout << "Ingresa dos numeros para restar: ";
            cin >> a >> b;
            resultado = a - b;
            cout << "Resultado: " << resultado << endl;
            break;

        case 'c':
            cout << "Ingresa dos numeros para multiplicar: ";
            cin >> a >> b;
            resultado = a * b;
            cout << "Resultado: " << resultado << endl;
            break;

        case 'd':
            cout << "Ingresa dos numeros para dividir: ";
            cin >> a >> b;
            if (b != 0) {
                resultado = a / b;
                cout << "Resultado: " << resultado << endl;
            } else {
                cout << "Error: No se puede dividir por cero." << endl;
            }
            break;

        case 'e':
            cout << "Ingresa la base y el exponente para la potencia: ";
            cin >> a >> b;
            resultado = pow(a, b);
            cout << "Resultado: " << resultado << endl;
            break;

        case 'f':
            cout << "Ingresa un numero para calcular la raiz cuadrada: ";
            cin >> a;
            if (a >= 0) {
                resultado = sqrt(a);
                cout << "Resultado: " << resultado << endl;
            } else {
                cout << "Error: No se puede calcular la raiz cuadrada de un numero negativo." << endl;
            }
            break;

        default:
            cout << "Opcion no valida." << endl;
    }

    return 0;
}

bottom of page