El switch es una estructura de control en C++ que permite ejecutar diferentes bloques de código basados en el valor de una expresión. Es una alternativa a las sentencias if-else cuando se necesita comparar una variable con múltiples valores posibles.

Conceptos Clave

  • Expresión de Control: La expresión que se evalúa y cuyo valor se compara con las constantes definidas en los casos.
  • Casos: Bloques de código que se ejecutan si la expresión de control coincide con el valor del caso.
  • Break: Una sentencia que termina la ejecución del switch y evita que se ejecuten los casos siguientes.
  • Default: Un bloque opcional que se ejecuta si ningún caso coincide con la expresión de control.

Sintaxis Básica

switch (expresión) {
    case valor1:
        // Código a ejecutar si expresión == valor1
        break;
    case valor2:
        // Código a ejecutar si expresión == valor2
        break;
    // Puedes tener tantos casos como necesites
    default:
        // Código a ejecutar si ningún caso coincide
}

Ejemplo Práctico

Vamos a ver un ejemplo donde utilizamos switch para determinar el día de la semana basado en un número del 1 al 7.

#include <iostream>
using namespace std;

int main() {
    int dia;
    cout << "Ingrese un número (1-7) para el día de la semana: ";
    cin >> dia;

    switch (dia) {
        case 1:
            cout << "Lunes" << endl;
            break;
        case 2:
            cout << "Martes" << endl;
            break;
        case 3:
            cout << "Miércoles" << endl;
            break;
        case 4:
            cout << "Jueves" << endl;
            break;
        case 5:
            cout << "Viernes" << endl;
            break;
        case 6:
            cout << "Sábado" << endl;
            break;
        case 7:
            cout << "Domingo" << endl;
            break;
        default:
            cout << "Número inválido" << endl;
    }

    return 0;
}

Explicación del Código

  1. Entrada del Usuario: Se solicita al usuario que ingrese un número del 1 al 7.
  2. Evaluación del switch: La expresión dia se evalúa y se compara con cada caso.
  3. Casos: Si dia coincide con uno de los valores de los casos (1 a 7), se ejecuta el bloque de código correspondiente.
  4. Break: Cada caso termina con una sentencia break para evitar la ejecución de los casos siguientes.
  5. Default: Si dia no coincide con ninguno de los casos, se ejecuta el bloque default que imprime "Número inválido".

Ejercicio Práctico

Ejercicio 1

Escribe un programa que utilice switch para convertir una calificación numérica (0-10) en una calificación de letra (A-F).

Requisitos

  • 10: A+
  • 9: A
  • 8: B
  • 7: C
  • 6: D
  • 5 o menos: F

Solución

#include <iostream>
using namespace std;

int main() {
    int calificacion;
    cout << "Ingrese una calificación (0-10): ";
    cin >> calificacion;

    switch (calificacion) {
        case 10:
            cout << "A+" << endl;
            break;
        case 9:
            cout << "A" << endl;
            break;
        case 8:
            cout << "B" << endl;
            break;
        case 7:
            cout << "C" << endl;
            break;
        case 6:
            cout << "D" << endl;
            break;
        default:
            cout << "F" << endl;
    }

    return 0;
}

Explicación del Código

  1. Entrada del Usuario: Se solicita al usuario que ingrese una calificación del 0 al 10.
  2. Evaluación del switch: La expresión calificacion se evalúa y se compara con cada caso.
  3. Casos: Si calificacion coincide con uno de los valores de los casos (10 a 6), se imprime la calificación de letra correspondiente.
  4. Default: Si calificacion es 5 o menos, se imprime "F".

Errores Comunes y Consejos

  • Olvidar el break: Si olvidas la sentencia break, el programa continuará ejecutando los casos siguientes hasta encontrar un break o el final del switch.
  • Valores fuera del rango: Asegúrate de manejar los valores que no coinciden con ningún caso utilizando el bloque default.
  • Tipos de datos: La expresión de control y los valores de los casos deben ser del mismo tipo de datos.

Conclusión

El switch es una herramienta poderosa para manejar múltiples condiciones de manera clara y eficiente. Es especialmente útil cuando se tienen muchas comparaciones de igualdad. Asegúrate de usar break para evitar la ejecución no deseada de múltiples casos y utiliza default para manejar valores no esperados.

En el próximo tema, exploraremos las sentencias break y continue, que son útiles para controlar el flujo de los bucles y otras estructuras de control.

© Copyright 2024. Todos los derechos reservados