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ó delswitchi 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 variablediaamb el valor 3.switch (dia): La sentènciaswitchcompara el valor dediaamb 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ó delswitchdespré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 unbreako arribar al final delswitch. - No incloure un cas
default: Tot i que és opcional, és una bona pràctica incloure un casdefaultper 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
