cpp-condicional-switch

Qué es y cómo usar el condicional SWITCH en C++

El condicional switch en C++ es una estructura de control que permite ejecutar diferentes bloques de código en función del valor de una expresión.

A veces es una alternativa más limpia y legible a una serie de instrucciones if-else anidadas. Aunque, mucha gente opina (yo incluido), en lugar de mejorar la legibilidad, frecuentemente la empeora

Sintaxis básica

La sintaxis básica de un condicional switch en C++ es:

switch (expresion) {
    case valor1:
        // Código a ejecutar si expresion es igual a valor1
        break;
    case valor2:
        // Código a ejecutar si expresion es igual a valor2
        break;
    // Puedes añadir más casos aquí
    default:
        // Código a ejecutar si expresion no coincide con ningún caso
        break;
}
  • expresión: Es la expresión cuyo valor se evalúa y compara con los valores de los casos.
  • case: Cada case representa un valor específico que se compara con la expresión.
  • default: Es un bloque opcional que se ejecuta si ningún case coincide con el valor de la expresión.

Vamos a ver un ejemplo básico de uso del switch:

#include <iostream>

int main() {
    int numero = 2;

    switch (numero) {
        case 1:
            std::cout << "Uno" << std::endl;
            break;
        case 2:
            std::cout << "Dos" << std::endl;
            break;
        case 3:
            std::cout << "Tres" << std::endl;
            break;
        default:
            std::cout << "Número no válido" << std::endl;
            break;
    }

    return 0;
}

En este ejemplo,

  • Dependiendo del valor de numero, el programa imprimirá el número correspondiente en la consola.
  • Si el valor no coincide con ninguno de los casos definidos, se imprimirá Número no válido.

Fall-Through entre Casos

En C++ no es obligatorio incluir un break al final de cada case (a diferencia de otros lenguajes como C#).

Si se omite el break, el flujo del programa continuará ejecutando el código de los siguientes case (esto se conoce como “fall-through”).

#include <iostream>

int main() {
    int numero = 2;

    switch (numero) {
        case 1:
        case 2:
        case 3:
            std::cout << "Número entre 1 y 3" << std::endl;
            break;
        default:
            std::cout << "Número no válido" << std::endl;
            break;
    }

    return 0;
}

En este ejemplo,

  • Tanto los casos 1, 2 y 3 ejecutarán el mismo bloque de código y después terminarán con el break.

Aunque esto puede ser útil en algunos casos, también puede llevar a errores si no se maneja con cuidado

En general, no lo hagáis

Ejemplos prácticos

Estos ejemplos tienen el propósito de mostrar cómo utilizar el condicional Switch. No significa que sea la mejor forma de resolver el problema que abordan. Lo normal es que haya alternativas mejores