Selección Múltiple

Switch-Case y Pattern Matching

Mecanismos de selección por caso en C, Java, JavaScript y Python.

SLIDE 1 / 6

1. Evaluación de Múltiples Casos

Un `switch` evalúa una expresión y busca coincidencia directa entre múltiples etiquetas `case`, evitando cadenas extensas de `if-else`.

MECANISMO DE MATCH
case 'A':Acción A + break
default:Fallback por defecto

2. C: Switch con Enteros y Chars

En C `switch` solo acepta expresiones enteras o caracteres (`int`, `char`, `enum`). Requiere `break` obligatorio para evitar fallthrough.

switch.c
char opcion = 'B';
switch (opcion) {
    case 'A': printf("Opción A\n"); break;
    case 'B': printf("Opción B\n"); break;
    default: printf("Desconocido\n");
}

3. Java: Switch Expressions (Arrow Syntax)

Java moderno incorpora expresiones switch con sintaxis `case X ->`, eliminando el riesgo de fallthrough.

SwitchExpr.java
String dia = "LUNES";
String tipo = switch (dia) {
    case "SABADO", "DOMINGO" -> "Finde";
    default -> "Laboral";
};

4. JavaScript: Switch con Comparación Estricta (===)

JS evalúa expresiones arbitrarias mediante comparación estricta de tipo y valor (`===`).

switch.js
const estado = 200;
switch (estado) {
    case 200: console.log("OK"); break;
    case 404: console.log("Not Found"); break;
}

5. Python: Structural Pattern Matching (match-case)

Python 3.10+ introdujo `match-case` permitiendo Pattern Matching avanzado sobre tuplas, diccionarios y tipos.

pattern_matching.py
command = ["quit"]
match command:
    case ["load", filename]: print(f"Cargando {filename}")
    case ["quit"]: print("Saliendo...")
    case _: print("Comando invalido")

6. Simulador Interactivo de Casos

Seleccioná una opción para simular el caso ejecutado:

C
case 200: printf("OK"); break;
Java
case 200 -> "OK";
JavaScript
case 200: console.log("OK"); break;
Python
case 200: print("OK")