C++ per principianti – 7. costrutto switch-case

Ciao a tutti e ben tornati in questo corso di C++ per principianti. Le scorse volte abbiamo visto alcune delle basi necessarie per programmare sia in C++ sia in altri linguaggi, ovvero dei concetti che bene o male si trovano in tutti i linguaggi di programmazione ad alto livello (strutture condizionali, iterative, variabili, ecc.).

Oggi invece parliamo di una struttura che per quanto io sappia esiste solo in C++ e C (se non è così fatemelo notare), ovvero lo switch-case.

In cosa consiste? Si potrebbe far presto e dire che è una serie di if/else scritta in maniera diversa dal solito, ma siccome è nata per uno scopo ben preciso occorre spiegarlo. Diamo un’occhiata alla sintassi:

Il concetto è semplice: la funzione switch prende come parametro una variabile (in questo caso ‘scelta’) e, una volta aperte le parentesi graffe, si comporta in maniera differente a seconda del valore che questa possiede.

Per assegnare un blocco di codice a un determinato valore della variabile ‘scelta’ bisogna scrivere:

Il marcatore default consente di definire il comportamento da assumere nel caso in cui nessuno dei marcatori case venga utilizzato.

Come detto in apertura, il costrutto switch-case non è altro che un if/else scritto in maniera diversa. Perché? Beh, lo vediamo subito:

Quest’altro programma corrisponde in tutto e per tutto a quello visto in apertura, solo che viene realizzato con il solo costrutto if/else.

Allora viene spontaneo chiedersi: che senso ha il switch-case?

Beh, da un lato la sua sintassi è senza dubbio più scorrevole da leggere rispetto a quella di una lunga serie di if/else. In più serve a rimarcare concettualmente (dal punto di vista del programmatore) che non si ha a che fare con delle strutture condizionali, bensì con una struttura molto più simile a quella di un menù, ad esempio.

Il programma visto qui sopra, in fin dei conti, non è altro che un menù che consente di visualizzare un mese a scelta, e lo switch-case rende senz’altro meglio il concetto. Questa è in sostanza l’utilità di questo costrutto.
E’ da notare comunque che nella stragrande maggioranza dei linguaggi di programmazione si utilizzano dei semplici if/else perché lo switch-case non viene implementato.

Per esercitarvi su quanto visto oggi vi consiglio di creare un programma che permetta di scegliere i giorni della settimana e tante altre cose che possono venirvi in mente. Magari potete utilizzare delle stringhe invece che dei numeri per compiere la scelta.

Nella prossima lezione faremo un’introduzione sulla programmazione procedurale in C++, con un programma di esempio e con l’introduzione di alcuni concetti nuovi come l’ambito di una variabile.

Sinhuè Angelo Rossi