Les sentències switch en Objective-C són una manera eficient de gestionar múltiples condicions basades en el valor d'una expressió. Són una alternativa a les sentències if-else quan es tracta de comparar una variable amb diversos valors possibles. En aquest tema, aprendrem com utilitzar les sentències switch, la seva sintaxi, i veurem exemples pràctics.

Sintaxi de les Sentències Switch

La sintaxi bàsica d'una sentència switch en Objective-C és la següent:

switch (expressió) {
    case valor1:
        // Codi a executar si expressió == valor1
        break;
    case valor2:
        // Codi a executar si expressió == valor2
        break;
    // Més casos...
    default:
        // Codi a executar si cap dels casos anteriors coincideix
        break;
}

Components Clau

  • expressió: És l'expressió que es compara amb els diferents valors dels casos. Pot ser una variable o una expressió que retorna un valor.
  • case valor: Cada cas representa un valor amb el qual es compara l'expressió. Si coincideix, s'executa el codi associat a aquest cas.
  • break: La sentència break s'utilitza per sortir del switch després d'executar el codi d'un cas. Si s'omet, l'execució continuarà amb el següent cas (això es coneix com a "fall-through").
  • default: El bloc default és opcional i s'executa si cap dels casos coincideix amb l'expressió.

Exemple Pràctic

Vegem un exemple pràctic per entendre millor com funcionen les sentències switch en Objective-C.

#import <Foundation/Foundation.h>

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

        switch (diaDeLaSetmana) {
            case 1:
                NSLog(@"Dilluns");
                break;
            case 2:
                NSLog(@"Dimarts");
                break;
            case 3:
                NSLog(@"Dimecres");
                break;
            case 4:
                NSLog(@"Dijous");
                break;
            case 5:
                NSLog(@"Divendres");
                break;
            case 6:
                NSLog(@"Dissabte");
                break;
            case 7:
                NSLog(@"Diumenge");
                break;
            default:
                NSLog(@"Dia invàlid");
                break;
        }
    }
    return 0;
}

Explicació del Codi

  1. Declaració de la Variable: Declarem una variable diaDeLaSetmana i li assignem el valor 3.
  2. Sentència Switch: Utilitzem una sentència switch per comparar el valor de diaDeLaSetmana amb diferents casos.
  3. Casos: Cada cas representa un dia de la setmana. Si diaDeLaSetmana és 3, s'executarà el codi dins del cas 3, que imprimeix "Dimecres".
  4. Default: Si diaDeLaSetmana no coincideix amb cap dels casos, s'executarà el bloc default, que imprimeix "Dia invàlid".

Exercicis Pràctics

Exercici 1

Escriu una sentència switch que imprimeixi el nom del mes basat en un valor enter (1 per gener, 2 per febrer, etc.). Si el valor no està entre 1 i 12, imprimeix "Mes invàlid".

Solució

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int mes = 5;

        switch (mes) {
            case 1:
                NSLog(@"Gener");
                break;
            case 2:
                NSLog(@"Febrer");
                break;
            case 3:
                NSLog(@"Març");
                break;
            case 4:
                NSLog(@"Abril");
                break;
            case 5:
                NSLog(@"Maig");
                break;
            case 6:
                NSLog(@"Juny");
                break;
            case 7:
                NSLog(@"Juliol");
                break;
            case 8:
                NSLog(@"Agost");
                break;
            case 9:
                NSLog(@"Setembre");
                break;
            case 10:
                NSLog(@"Octubre");
                break;
            case 11:
                NSLog(@"Novembre");
                break;
            case 12:
                NSLog(@"Desembre");
                break;
            default:
                NSLog(@"Mes invàlid");
                break;
        }
    }
    return 0;
}

Exercici 2

Modifica l'exemple anterior per incloure un cas on el valor de mes sigui 0, i imprimeix "No hi ha mes 0".

Solució

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int mes = 0;

        switch (mes) {
            case 0:
                NSLog(@"No hi ha mes 0");
                break;
            case 1:
                NSLog(@"Gener");
                break;
            case 2:
                NSLog(@"Febrer");
                break;
            case 3:
                NSLog(@"Març");
                break;
            case 4:
                NSLog(@"Abril");
                break;
            case 5:
                NSLog(@"Maig");
                break;
            case 6:
                NSLog(@"Juny");
                break;
            case 7:
                NSLog(@"Juliol");
                break;
            case 8:
                NSLog(@"Agost");
                break;
            case 9:
                NSLog(@"Setembre");
                break;
            case 10:
                NSLog(@"Octubre");
                break;
            case 11:
                NSLog(@"Novembre");
                break;
            case 12:
                NSLog(@"Desembre");
                break;
            default:
                NSLog(@"Mes invàlid");
                break;
        }
    }
    return 0;
}

Errors Comuns i Consells

  • Ometre el break: Si oblides incloure la sentència break al final de cada cas, l'execució continuarà amb el següent cas, cosa que pot provocar comportaments inesperats.
  • No incloure un default: Tot i que és opcional, és una bona pràctica incloure un bloc default per gestionar valors inesperats.
  • Comparar valors no enters: Les sentències switch en Objective-C només poden comparar valors enters. Si necessites comparar cadenes o altres tipus de dades, hauràs d'utilitzar sentències if-else.

Conclusió

Les sentències switch són una eina poderosa per gestionar múltiples condicions de manera clara i eficient. Hem vist la seva sintaxi, exemples pràctics i hem practicat amb exercicis per reforçar els conceptes apresos. Ara estàs preparat per utilitzar les sentències switch en els teus projectes Objective-C!

© Copyright 2024. Tots els drets reservats