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ència switch.
  • Casos (case): Cada possible valor que la variable pot tenir.
  • Sentència break: Utilitzada per sortir del switch despré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 del switch 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: 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 de dia amb els valors dels casos.
  • case 3: Com que dia és 3, s'executa el codi dins d'aquest cas, imprimint "Dimecres".
  • break: Després d'imprimir, la sentència break fa que el programa surti del switch.

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 posar break després d'un cas, el programa continuarà executant els casos següents fins que trobi un break o arribi al final del switch.
  • No utilitzar default: És una bona pràctica incloure sempre un cas default per gestionar valors inesperats.
  • Comparar valors no enters o caràcters: Recorda que l'expressió del switch ha 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

Mòdul 2: Tipus de Dades i Variables

Mòdul 3: Flux de Control

Mòdul 4: Funcions

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

Mòdul 10: Temes Avançats

Mòdul 11: Millors Pràctiques i Optimització

Mòdul 12: Projecte i Avaluació Final

© Copyright 2024. Tots els drets reservats