Andrea Falla
2
02 Apr, 2022
Andrea Falla
2
02 Apr, 2022
Tra i vari costrutti a selezione multipla disponibili in C lo switch case è certamente uno dei più rapidi e permette un ampio numero di possibilità codificabili - pressoché infinito (anche se in informatica l'infinito non esiste) - dunque non certo limitato dal binarismo di altri costrutti e ottimo per sostituire le cascate if else attraverso una scrittura decisamente più sintetica.
Fondamentalmente la sua scrittura si articola su tre istruzioni: -switch predispone il programma alla valutazione della consecutiva variabile o espressione logico-matematica data tra due parentesi tonde; -case, seguita da un valore assumibile dalla variabile/espressione, predispone il programma all'esecuzione del codice seguente i due punti, dipendentemente dal valore che assume la variabile sotto lo switch; -break è l'istruzione che permette l'interruzione brusca di una data serie di istruzioni. Essa è necessaria perché il programma non continui ad interpretare le istruzioni successive al primo case come appartenenti allo stesso. È trattabile come terminatore dello switch.
Il vero e proprio funzionamento del costrutto sta nel confronto del valore che segue la parola chiave case con la variabile compresa tra le parentesi seguenti la parola chiave switch. Se non c'è corrispondenza tra i due, il test passa al successivo fino a soddisfare la condizione data. Eseguito il codice associato ad una clausola, se non presente un break, il C prevede che si continuino a eseguire le istruzioni delle clausole successive (fall through). In caso di mancato successo dei vari test è comportata l'esecuzione dell'eventuale blocco di default.
C'è da dire che la rapidità conferita dallo switch case lo rende particolarmente comodo, data anche la sua versatilità, però necessita di un utilizzo ponderato e ordinato, perché non si sfoci in errori di gestione di segmenti di codice.
Sono uno studente delle superiori. Ho approcciato l'informatica con la scuola, mentre la scrittura è una passione nata con il tempo.