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 delswitch
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
- Declaració de la Variable: Declarem una variable
diaDeLaSetmana
i li assignem el valor3
. - Sentència Switch: Utilitzem una sentència
switch
per comparar el valor dediaDeLaSetmana
amb diferents casos. - Casos: Cada cas representa un dia de la setmana. Si
diaDeLaSetmana
és3
, s'executarà el codi dins del cas3
, que imprimeix "Dimecres". - Default: Si
diaDeLaSetmana
no coincideix amb cap dels casos, s'executarà el blocdefault
, 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ènciabreak
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 blocdefault
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ènciesif-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!
Curs de Programació en Objective-C
Mòdul 1: Introducció a Objective-C
- Introducció a Objective-C
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsiques
- Tipus de Dades i Variables
- Operadors i Expressions
Mòdul 2: Flux de Control
Mòdul 3: Funcions i Mètodes
- Definició i Crida de Funcions
- Paràmetres de Funció i Valors de Retorn
- Sintaxi de Mètodes en Objective-C
- Mètodes de Classe i d'Instància
Mòdul 4: Programació Orientada a Objectes
Mòdul 5: Gestió de Memòria
- Introducció a la Gestió de Memòria
- Comptatge Automàtic de Referències (ARC)
- Retenció i Alliberament Manual
- Millors Pràctiques de Gestió de Memòria
Mòdul 6: Temes Avançats
Mòdul 7: Treballant amb Dades
- Gestió d'Arxius
- Serialització i Deserialització
- Conceptes Bàsics de Xarxes
- Treballant amb JSON i XML
Mòdul 8: Desenvolupament d'Interfícies d'Usuari
- Introducció a UIKit
- Vistes i Controladors de Vista
- Disseny Automàtic
- Gestió de l'Entrada de l'Usuari