En aquest tema, aprendrem sobre l'ús de la sentència switch en C, que és una estructura de control que permet seleccionar una de diverses alternatives basant-se en el valor d'una expressió. Aquesta estructura és especialment útil quan es tenen múltiples condicions que depenen del valor d'una sola variable.
Conceptes Clau
- Sintaxi del
switch: La forma bàsica de la sentènciaswitch. - Casos (
case): Cada possible valor que la variable pot tenir. - Sentència
break: Utilitzada per sortir delswitchdesprés d'executar un cas. - Cas per defecte (
default): Executat si cap dels casos coincideix.
Sintaxi del switch
La sintaxi bàsica d'una sentència switch é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 cas coincideix
}Explicació de la Sintaxi
expressió: És una expressió que es compara amb els valors dels casos. Aquesta expressió ha de ser de tipus enter o caràcter.case valor: Cada cas representa un valor que l'expressió pot tenir. Si l'expressió coincideix amb aquest valor, s'executa el codi associat.break: Aquesta sentència s'utilitza per sortir delswitchdespré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: Opcional. S'executa si cap dels casos coincideix amb l'expressió.
Exemple Pràctic
Vegem un exemple pràctic per entendre millor com funciona el switch:
#include <stdio.h>
int main() {
int dia = 3;
switch (dia) {
case 1:
printf("Dilluns\n");
break;
case 2:
printf("Dimarts\n");
break;
case 3:
printf("Dimecres\n");
break;
case 4:
printf("Dijous\n");
break;
case 5:
printf("Divendres\n");
break;
case 6:
printf("Dissabte\n");
break;
case 7:
printf("Diumenge\n");
break;
default:
printf("Dia invàlid\n");
}
return 0;
}Explicació de l'Exemple
- Variable
dia: Té el valor 3. switch (dia): Compara el valor dediaamb els valors dels casos.case 3: Com quediaés 3, s'executa el codi dins d'aquest cas, imprimint "Dimecres".break: Després d'imprimir, la sentènciabreakfa que el programa surti delswitch.
Exercicis Pràctics
Exercici 1
Escriu un programa que llegeixi un caràcter de l'usuari i determini si és una vocal o una consonant utilitzant una sentència switch.
Solució
#include <stdio.h>
int main() {
char lletra;
printf("Introdueix una lletra: ");
scanf("%c", &lletra);
switch (lletra) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
printf("És una vocal.\n");
break;
default:
printf("És una consonant.\n");
}
return 0;
}Exercici 2
Escriu un programa que llegeixi un número del 1 al 12 i imprimeixi el nom del mes corresponent. Utilitza una sentència switch.
Solució
#include <stdio.h>
int main() {
int mes;
printf("Introdueix un número del 1 al 12: ");
scanf("%d", &mes);
switch (mes) {
case 1:
printf("Gener\n");
break;
case 2:
printf("Febrer\n");
break;
case 3:
printf("Març\n");
break;
case 4:
printf("Abril\n");
break;
case 5:
printf("Maig\n");
break;
case 6:
printf("Juny\n");
break;
case 7:
printf("Juliol\n");
break;
case 8:
printf("Agost\n");
break;
case 9:
printf("Setembre\n");
break;
case 10:
printf("Octubre\n");
break;
case 11:
printf("Novembre\n");
break;
case 12:
printf("Desembre\n");
break;
default:
printf("Número invàlid\n");
}
return 0;
}Errors Comuns i Consells
- Ometre la sentència
break: Si oblides posarbreakdesprés d'un cas, el programa continuarà executant els casos següents fins que trobi unbreako arribi al final delswitch. - No utilitzar
default: És una bona pràctica incloure sempre un casdefaultper gestionar valors inesperats. - Comparar valors no enters o caràcters: Recorda que l'expressió del
switchha de ser de tipus enter o caràcter.
Resum
En aquesta secció, hem après com utilitzar la sentència switch per seleccionar una de diverses alternatives basant-se en el valor d'una expressió. Hem vist la sintaxi bàsica, un exemple pràctic i hem practicat amb alguns exercicis. Ara estem preparats per avançar al següent tema sobre break i continue.
Curs de Programació en C
Mòdul 1: Introducció al C
- Introducció a la Programació
- Configuració de l'Entorn de Desenvolupament
- Programa Hello World
- Sintaxi i Estructura Bàsiques
Mòdul 2: Tipus de Dades i Variables
Mòdul 3: Flux de Control
Mòdul 4: Funcions
- Introducció a les Funcions
- Arguments de Funció i Valors de Retorn
- Àmbit i Durada de les Variables
- Funcions Recursives
Mòdul 5: Arrays i Strings
Mòdul 6: Punteres
Mòdul 7: Estructures i Unions
Mòdul 8: Assignació Dinàmica de Memòria
Mòdul 9: Gestió d'Arxius
- Introducció a la Gestió d'Arxius
- Lectura i Escriptura d'Arxius
- Posicionament d'Arxius
- Gestió d'Errors en Operacions d'Arxius
Mòdul 10: Temes Avançats
- Directives del Preprocessador
- Arguments de Línia de Comandes
- Llistes d'Arguments Variables
- Multifil en C
Mòdul 11: Millors Pràctiques i Optimització
- Llegibilitat del Codi i Documentació
- Tècniques de Depuració
- Optimització del Rendiment
- Consideracions de Seguretat
