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.
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:
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:
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.
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.
Nessun commento:
Posta un commento