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ència switch.
  • Casos (case): Com definir diferents opcions dins del switch.
  • 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ó del switch 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 variable dia amb el valor 3.
  • switch (dia): La sentència switch compara el valor de dia amb els valors dels casos.
  • case 3:: Com que dia és 3, s'executa el codi dins d'aquest cas, que imprimeix "Dimecres".
  • break;: Termina l'execució del switch 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ència break, el programa continuarà executant els casos següents fins trobar un break o arribar al final del switch.
  • No incloure un cas default: Tot i que és opcional, és una bona pràctica incloure un cas default 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.

© Copyright 2024. Tots els drets reservats