El uso de la sentencia switch
en C permite ejecutar diferentes bloques de código basados en el valor de una expresión. Es una alternativa más limpia y legible a múltiples sentencias if-else
cuando se trata de comparar una variable con varios valores posibles.
Conceptos Clave
-
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; ... default: // Código a ejecutar si expresión no coincide con ningún valor }
-
Expresión: La expresión dentro del
switch
debe ser de un tipo de datos integral (comoint
ochar
). -
Casos: Cada
case
representa un valor posible de la expresión. Si la expresión coincide con el valor delcase
, se ejecuta el bloque de código correspondiente. -
Break: La sentencia
break
se utiliza para salir delswitch
después de ejecutar el código de uncase
. Sinbreak
, la ejecución continuará en el siguientecase
(comportamiento conocido como "fall-through"). -
Default: El bloque
default
es opcional y se ejecuta si la expresión no coincide con ningúncase
.
Ejemplo Práctico
Vamos a ver un ejemplo práctico para entender mejor cómo funciona switch
.
Ejemplo: Menú de Opciones
#include <stdio.h> int main() { int opcion; printf("Menú de Opciones:\n"); printf("1. Opción 1\n"); printf("2. Opción 2\n"); printf("3. Opción 3\n"); printf("Ingrese su opción: "); scanf("%d", &opcion); switch (opcion) { case 1: printf("Has seleccionado la Opción 1.\n"); break; case 2: printf("Has seleccionado la Opción 2.\n"); break; case 3: printf("Has seleccionado la Opción 3.\n"); break; default: printf("Opción no válida.\n"); } return 0; }
Explicación del Código
- Entrada del Usuario: Se solicita al usuario que ingrese una opción.
- Evaluación con
switch
: La variableopcion
se evalúa en elswitch
. - Casos:
- Si
opcion
es 1, se imprime "Has seleccionado la Opción 1." - Si
opcion
es 2, se imprime "Has seleccionado la Opción 2." - Si
opcion
es 3, se imprime "Has seleccionado la Opción 3."
- Si
- Default: Si
opcion
no es 1, 2, o 3, se imprime "Opción no válida."
Ejercicio Práctico
Ejercicio 1: Calculadora Básica
Escribe un programa que actúe como una calculadora básica. El programa debe solicitar al usuario dos números y una operación (suma, resta, multiplicación, división) y luego usar switch
para realizar la operación correspondiente.
Instrucciones
- Solicita al usuario dos números.
- Solicita al usuario que ingrese una operación (
+
,-
,*
,/
). - Usa
switch
para realizar la operación y mostrar el resultado.
Solución
#include <stdio.h> int main() { double num1, num2; char operacion; printf("Ingrese el primer número: "); scanf("%lf", &num1); printf("Ingrese el segundo número: "); scanf("%lf", &num2); printf("Ingrese la operación (+, -, *, /): "); scanf(" %c", &operacion); switch (operacion) { case '+': printf("Resultado: %.2lf\n", num1 + num2); break; case '-': printf("Resultado: %.2lf\n", num1 - num2); break; case '*': printf("Resultado: %.2lf\n", num1 * num2); break; case '/': if (num2 != 0) { printf("Resultado: %.2lf\n", num1 / num2); } else { printf("Error: División por cero.\n"); } break; default: printf("Operación no válida.\n"); } return 0; }
Explicación del Código
- Entrada del Usuario: Se solicitan dos números y una operación.
- Evaluación con
switch
: La variableoperacion
se evalúa en elswitch
. - Casos:
- Si
operacion
es+
, se realiza la suma. - Si
operacion
es-
, se realiza la resta. - Si
operacion
es*
, se realiza la multiplicación. - Si
operacion
es/
, se verifica que el divisor no sea cero y se realiza la división.
- Si
- Default: Si
operacion
no es+
,-
,*
, o/
, se imprime "Operación no válida."
Conclusión
La sentencia switch
es una herramienta poderosa para manejar múltiples condiciones de manera clara y organizada. Es especialmente útil cuando se necesita comparar una variable con varios valores posibles. Asegúrate de usar break
para evitar el comportamiento de "fall-through" a menos que sea intencional. Con la práctica, switch
se convertirá en una parte esencial de tu conjunto de herramientas de programación en C.
Curso de Programación en C
Módulo 1: Introducción a C
- Introducción a la Programación
- Configuración del Entorno de Desarrollo
- Programa Hola Mundo
- Sintaxis y Estructura Básica
Módulo 2: Tipos de Datos y Variables
Módulo 3: Flujo de Control
Módulo 4: Funciones
- Introducción a las Funciones
- Argumentos de Función y Valores de Retorno
- Ámbito y Vida de las Variables
- Funciones Recursivas
Módulo 5: Arreglos y Cadenas
- Introducción a los Arreglos
- Arreglos Multidimensionales
- Manejo de Cadenas
- Funciones de Arreglos y Cadenas
Módulo 6: Punteros
Módulo 7: Estructuras y Uniones
Módulo 8: Asignación Dinámica de Memoria
Módulo 9: Manejo de Archivos
- Introducción al Manejo de Archivos
- Lectura y Escritura de Archivos
- Posicionamiento de Archivos
- Manejo de Errores en Operaciones de Archivos
Módulo 10: Temas Avanzados
- Directivas del Preprocesador
- Argumentos de Línea de Comandos
- Listas de Argumentos Variables
- Multihilo en C
Módulo 11: Mejores Prácticas y Optimización
- Legibilidad del Código y Documentación
- Técnicas de Depuración
- Optimización del Rendimiento
- Consideraciones de Seguridad