#4 Blocchi di selezione if/else e switch - Guida alla programmazione in C - Exabyte

Scienza, tecnologia e società

lunedì 23 ottobre 2017

#4 Blocchi di selezione if/else e switch - Guida alla programmazione in C

Clicca qui per leggere la lezione sulla libreria stdio.h.

Iscriviti al nostro canale Telegram: clicca qui

Indice guide #1 Introduzione
#2 Le variabili
#3 La libreria Stdio.h
#4 Blocchi di selezione if/else e switch
#5 Costrutti ciclici while, do/while, for

Dopo aver visto la libreria stdio.h e aver imparato ad utilizzare le sue due funzioni fondamentali scanf e printf, possiamo andare a vedere un primo costrutto base del linguaggio C, ovvero i blocchi di selezione if/else e switch.

Cosa sono i blocchi di selezione

Come abbiamo già visto, il nostro codice una volta compilato e avviato, esegue in modo sequenziale le istruzioni che abbiamo scritto. Tuttavia, a seconda del tipo di programma che dobbiamo scrivere, non sempre questo modo di procedere è sufficiente per giungere ad una soluzione.
Più frequentemente l’algoritmo ha dei punti in cui il comportamento dipende dal valore dei dati che si stanno elaborando. I linguaggi di programmazione mettono quindi a disposizione dei costrutti che consentono di controllare il flusso di esecuzione delle istruzioni.

Il concetto di condizione

Prima di andare avanti è necessario introdurre e chiarire il concetto di condizione.
  • condizione di uguaglianza: viene espressa con il simbolo ' == ' ed è verificata se e solo se le variabili interessate dalla condizione sono uguali.
  • condizione di disuguaglianza: viene espressa con il simbolo ' != ' ed è verificata se e solo se le variabili interessate dalla condizione sono diverse.
  • condizione di maggioranza/minoranza : viene espressa con i simboli ' < ' (minoranza) e ' > ' (maggioranza) ed è verificata se e solo se il contenuto della variabile alla sinistra del simbolo è maggiore/minore del contenuto della variabile a destra del simbolo.
    Possiamo inserire anche il simbolo ' = ' successivamente a quello di maggioranza/minoranza per rendere il concetto di maggiore uguale/minore uguale.
Ovviamente andremo a riprendere queste concetto di condizioni, subito dopo aver introdotto i costrutti if/else, con degli esempi.

Il costrutto if/else

Il costrutto if/else non fa altro che riportare una condizione, tramite un espressione, che se verificata, esegue il codice all'interno dell'istruzione if.
Se invece la condizione espressa non è soddisfatta verrà eseguito il codice contenuto nell'istruzione else.
Vediamo subito la sintassi:

Per essere più chiari vediamo subito un esempio:
Clicca sull'immagine per ingrandirla

Varianti del construtto if/else

Oltre al costrutto utilizzato in modo standard (vedi esempio sopra) questo costrutto può essere usato con delle forme leggermente diverse, ma che tuttavia non ne modificano il concetto di fondo.
  • if senza else: con questo costrutto possiamo andare ad inserire una serie di condizioni, omettendo però la casistica di default.
    Questo modo di procedere rischia di creare qualche problema perchè non va a coprire la totalità delle casistiche possibili (se non costruito con attenzione).
    Mostriamo subito un esempio:
    Clicca sull'immagine per ingrandirla
  • NB: In generale, se si verifica la condizione in un if, questo non pregiudica il verificarsi delle condizioni successive.
  • if/else if: In questo caso il concetto è molto simile al precedente, con l'eccezione che se la condizione dell' if è verificata, non potrà esserlo quella nell'istruzione else if.
    Possiamo dire quindi che una condizione esclude l'altra (concetto di if/else), ma si mantiene la possibilità di decidere la condizione dell' istruzione else.
    Esempio:
    Clicca sull'immagine per ingrandirla

Il costrutto switch

Questo costrutto può essere visto come un aggregatore di if, tramite l'uso delle istruzioni case, break e default.
Viene solitamente utilizzato quando le condizioni da controllare sono molte, e si vuole realizzare un codice più immediato e meno prolisso.
Per utilizzare il costrutto switch è necessario scrivere:

In questo costrutto viene preso come elemento della condizione la variabile riportata nell'istruzione switch, e a seconda del valore di quest'ultima, si vanno ad eseguire le istruzioni contenute nei vari case.
Il comando break è necessario per fermare l'esecuzione dello switch una volta completato il set di istruzioni di un case.
Sarà quindi possibile o addirittura utile ometterlo, a patto di ricordare che in questo modo verranno eseguiti tutti i case successivi a quello verificato.
il comando default svolge lo stesso compito dell'else nel costrutto precedente, ovvero se nessuna delle condizioni precedenti è verificata allora verrà eseguito il set di istruzioni contenuto nel default.
NB: non è in nessun caso necessario utilizzare il comando break nelle istruzioni del default
Mostriamo due esempi per chiarire immediatamente quanto detto:
Clicca sull'immagine per ingrandirla
Clicca sull'immagine per ingrandirla

Questi esempi dovrebbero riuscire a chiarire ogni dubbio sull'utilizzo del costrutto switch.
Come possiamo vedere, nel primo caso sono stati utilizzati i break alla fine di ogni case, cosi facendo è stata eseguito solo il set di istruzioni relativo al case verificato, ignorando totalmente tutti gli altri.
invece è stato eseguito il default nel caso in cui nessuno dei case è stato verificato.
Nel secondo caso invece sono stati eseguiti tutti i case successivi al primo case verificato, incluso il default.
Prestando attenzione alle condizioni inserite nei case e all'uso dei break è quindi possibile emulare completamente i costrutti visti precedentemente, con il solo costrutto switch, che però ribadiamo essere consigliato solo nel caso in cui ci siano parecchie condizioni da controllare.

Clicca qui per continuare: Costrutti ciclici while, do/while, for

468x60

Nessun commento:

Posta un commento

Post Top Ad