En aquest tema, aprendrem sobre l'ús de la sentència switch
en C++. La sentència switch
és una estructura de control que permet seleccionar una de moltes opcions basant-se en el valor d'una expressió. És una alternativa a l'ús de múltiples sentències if-else
quan es treballa amb valors discrets.
Conceptes Clau
- Sintaxi del
switch
: La forma bàsica de la sentènciaswitch
. - Casos (
case
): Com definir diferents opcions dins delswitch
. - Sentència
break
: Com evitar l'execució de casos successius. - Cas per defecte (
default
): Com manejar valors que no coincideixen amb cap cas específic.
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 expressió no coincideix amb cap cas }
Explicació del Codi
expressió
: És l'expressió que es compara amb els valors dels casos. Ha de ser de tipus integral o enumeració.case valor:
: Defineix un cas específic. Si l'expressió coincideix amb aquest valor, s'executa el codi associat.break;
: Termina l'execució delswitch
i evita que s'executin els casos següents.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 la sentència switch
:
#include <iostream> using namespace std; int main() { int dia = 3; switch (dia) { case 1: cout << "Dilluns" << endl; break; case 2: cout << "Dimarts" << endl; break; case 3: cout << "Dimecres" << endl; break; case 4: cout << "Dijous" << endl; break; case 5: cout << "Divendres" << endl; break; case 6: cout << "Dissabte" << endl; break; case 7: cout << "Diumenge" << endl; break; default: cout << "Dia invàlid" << endl; } return 0; }
Explicació del Codi
int dia = 3;
: Declarem una variabledia
amb el valor 3.switch (dia)
: La sentènciaswitch
compara el valor dedia
amb els valors dels casos.case 3:
: Com quedia
és 3, s'executa el codi dins d'aquest cas, que imprimeix "Dimecres".break;
: Termina l'execució delswitch
després d'executar el cas correcte.
Exercicis Pràctics
Exercici 1
Escriu un programa que llegeixi un nombre enter del 1 al 12 i imprimeixi el nom del mes corresponent. Utilitza una sentència switch
.
Solució
#include <iostream> using namespace std; int main() { int mes; cout << "Introdueix un nombre del 1 al 12: "; cin >> mes; switch (mes) { case 1: cout << "Gener" << endl; break; case 2: cout << "Febrer" << endl; break; case 3: cout << "Març" << endl; break; case 4: cout << "Abril" << endl; break; case 5: cout << "Maig" << endl; break; case 6: cout << "Juny" << endl; break; case 7: cout << "Juliol" << endl; break; case 8: cout << "Agost" << endl; break; case 9: cout << "Setembre" << endl; break; case 10: cout << "Octubre" << endl; break; case 11: cout << "Novembre" << endl; break; case 12: cout << "Desembre" << endl; break; default: cout << "Nombre invàlid" << endl; } return 0; }
Exercici 2
Modifica el programa anterior per incloure una opció per defecte que imprimeixi "Nombre invàlid" si l'usuari introdueix un nombre fora del rang 1-12.
Solució
La solució ja inclou la gestió del cas per defecte amb la sentència default
.
Errors Comuns
- Oblidar el
break
: Si oblides la sentènciabreak
, el programa continuarà executant els casos següents fins trobar unbreak
o arribar al final delswitch
. - No incloure un cas
default
: Tot i que és opcional, és una bona pràctica incloure un casdefault
per manejar valors inesperats.
Resum
En aquesta secció, hem après com utilitzar la sentència switch
per seleccionar entre múltiples opcions basant-nos en el valor d'una expressió. Hem vist la sintaxi bàsica, com definir casos, l'ús de la sentència break
per evitar l'execució de casos successius, i com manejar valors no previstos amb el cas default
. També hem practicat amb exemples i exercicis per reforçar els conceptes apresos.
Curs de Programació en C++
Mòdul 1: Introducció al C++
- Introducció al C++
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
- Entrada i Sortida
Mòdul 2: Estructures de Control
Mòdul 3: Funcions
- Introducció a les Funcions
- Paràmetres de Funció i Tipus de Retorn
- Sobrecàrrega de Funcions
- Recursivitat
Mòdul 4: Arrays i Strings
Mòdul 5: Punteres i Referències
- Introducció als Punteres
- Aritmètica de Punteres
- Punteres i Arrays
- Referències
- Assignació Dinàmica de Memòria
Mòdul 6: Programació Orientada a Objectes
- Introducció a la POO
- Classes i Objectes
- Constructors i Destructors
- Herència
- Polimorfisme
- Encapsulació i Abstracció
Mòdul 7: Temes Avançats
- Plantilles
- Gestió d'Excepcions
- Entrada/Sortida de Fitxers
- Biblioteca de Plantilles Estàndard (STL)
- Expressions Lambda
- Multifil