62. La estructura de decisión Switch

 Repasando un poco lo que vimos en la lección anterior, teníamos algo que se llaman los IFs anidados, y esto es lo que provoca que agreguemos complejidad a nuestro código.

Si puedes apreciar, lo que estamos haciendo aquí es evaluar una variable la cual vamos comparando y vamos llevando a cabo diferentes acciones de acuerdo a si se cumple o no dicha condición.

En el código de Arduino tenemos aquí lo que es un conjunto de IFs que en este caso puede parecer un poco sencillo ya que tenemos una instrucción o la ejecución de una sola instrucción, pero si tuviéramos un conjunto de instrucciones que quisiéramos ejecutar en dado caso de que se cumpliera o no una de estas condiciones, ya sería un código con más complejidad.

La alternativa: Switch

Para solventar esta problemática tenemos lo que es una alternativa que es la estructura llamada switch. La estructura de control llamada switch tiene esta forma que vemos aquí. Como puedes apreciar, tenemos de una forma más sencilla representada esta problemática que teníamos aquí, mientras que aquí vamos anidando el conjunto de evaluaciones.

En este caso únicamente tenemos aquí lo que es un árbol que se encuentra a la misma altura para cada una de las evaluaciones, y podemos ver de forma sencilla el resultado cuando se cumple cierta condición.

Analizando el diagrama

Vamos a ver más de cerca este diagrama. Tenemos aquí lo que es la creación de una variable llamada ledEncendido que en este caso tiene la asignación de un número 4, ya que lo que hacemos es evaluar la variable ledEncendido y cómo llevamos a cabo esta evaluación como si fuera precisamente una instrucción IF.

Preguntamos:

  • ¿El valor de ledEncendido es igual a 1? → Encendemos el número 1

  • ¿Es igual a 2? → Encendemos el número 2

Como puedes apreciar, simplemente vamos evaluando las diferentes expresiones que tenemos aquí y tenemos inclusive una instrucción que nos permite especificar en caso de que ninguna de las anteriores evaluaciones se cumpla (en este caso, prendemos todos los LEDs).

Implementación en código

cpp
int ledEncendido = 4;

void setup() {
    configurarPines();
    
    switch(ledEncendido) {
        case 1:
            digitalWrite(LED1, HIGH);
            break;
        case 2:
            digitalWrite(LED2, HIGH);
            break;
        case 3:
            digitalWrite(LED3, HIGH);
            break;
        case 4:
            digitalWrite(LED4, HIGH);
            break;
        default:
            encenderTodosLosLEDs();
            break;
    }
}

Puntos clave

  1. Estructura básica: Usamos switch(variable) para indicar qué variable evaluar

  2. Casos: Cada case valor: representa una condición a comparar

  3. Break: Es fundamental para evitar que se ejecuten todos los casos siguientes

  4. Default: Se ejecuta cuando ningún caso coincide con el valor evaluado

Ventajas sobre IFs anidados

  • Código más limpio y organizado

  • Más fácil de leer y mantener

  • Menos propenso a errores en comparaciones complejas

  • Más eficiente en términos de ejecución

¿Has utilizado la estructura switch en tus proyectos? ¡Comparte tus experiencias en los comentarios!

Comentarios

Entradas más populares de este blog

12. Demostracion de como usar Tinkercad para simular Arduino con circuitos

11. Ejemplos Básicos de Leds y Pulsadores

Lectura de Potenciómetro con Arduino Uno en Tinkercad