En Objective-C, las sentencias switch proporcionan una manera de ejecutar diferentes partes del código basándose en el valor de una expresión. Las sentencias switch son útiles cuando se necesita comparar una variable con múltiples valores posibles y ejecutar diferentes bloques de código según el resultado de la comparación.

Sintaxis de la Sentencia Switch

La estructura básica de una sentencia switch en Objective-C es la siguiente:

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 expresión no coincide con ningún caso
        break;
}

Componentes Clave

  1. expresión: La expresión que se evalúa una vez y se compara con los valores de los casos.
  2. case valorN: Cada caso compara la expresión con un valor constante. Si coinciden, se ejecuta el bloque de código asociado.
  3. break: Termina la ejecución del bloque de código dentro del caso. Si se omite, la ejecución continuará en el siguiente caso (esto se llama "fall-through").
  4. default: (Opcional) Un bloque de código que se ejecuta si la expresión no coincide con ningún caso.

Ejemplo Práctico

Vamos a ver un ejemplo práctico para entender mejor cómo funcionan las sentencias switch en Objective-C.

Ejemplo: Clasificación de Calificaciones

Supongamos que queremos clasificar una calificación numérica en una letra (A, B, C, D, F).

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int grade = 85;
        char letterGrade;

        switch (grade / 10) {
            case 10:
            case 9:
                letterGrade = 'A';
                break;
            case 8:
                letterGrade = 'B';
                break;
            case 7:
                letterGrade = 'C';
                break;
            case 6:
                letterGrade = 'D';
                break;
            default:
                letterGrade = 'F';
                break;
        }

        NSLog(@"La calificación es: %c", letterGrade);
    }
    return 0;
}

Explicación del Código

  1. División de la Calificación: grade / 10 convierte la calificación en un número de un solo dígito (por ejemplo, 85 se convierte en 8).
  2. Casos Múltiples: Los casos 10 y 9 están juntos porque ambos asignan la letra 'A'.
  3. Default: Si la calificación no está en el rango de 60-100, se asigna una 'F'.

Ejercicio Práctico

Ejercicio: Clasificación de Días de la Semana

Escribe un programa que tome un número del 1 al 7 y devuelva el nombre del día correspondiente de la semana (1 para Lunes, 2 para Martes, etc.).

Solución

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int dayNumber = 3;
        NSString *dayName;

        switch (dayNumber) {
            case 1:
                dayName = @"Lunes";
                break;
            case 2:
                dayName = @"Martes";
                break;
            case 3:
                dayName = @"Miércoles";
                break;
            case 4:
                dayName = @"Jueves";
                break;
            case 5:
                dayName = @"Viernes";
                break;
            case 6:
                dayName = @"Sábado";
                break;
            case 7:
                dayName = @"Domingo";
                break;
            default:
                dayName = @"Número de día inválido";
                break;
        }

        NSLog(@"El día de la semana es: %@", dayName);
    }
    return 0;
}

Explicación del Código

  1. Variable dayNumber: Representa el número del día de la semana.
  2. Casos: Cada caso asigna el nombre del día correspondiente a la variable dayName.
  3. Default: Maneja el caso en que el número del día no esté en el rango de 1 a 7.

Resumen

Las sentencias switch en Objective-C son una herramienta poderosa para manejar múltiples condiciones de manera clara y eficiente. Al usar switch, puedes evitar largas cadenas de sentencias if-else y hacer que tu código sea más legible y fácil de mantener. Recuerda siempre usar break para evitar el "fall-through" no deseado, a menos que sea intencional.

En el próximo módulo, exploraremos cómo definir y llamar funciones en Objective-C, lo que te permitirá modularizar y reutilizar tu código de manera efectiva.

© Copyright 2024. Todos los derechos reservados