Sei sulla pagina 1di 9

Le istruzioni di selezione nel C e

nel C++
4
Il concetto di scelta e di selezione.
L’istruzione if e la sua sintassi.
Un esempio pratico.
L’istruzione if/else.
Come visto in precedenza, l’istruzione di selezione if/else ci permette di
operare una scelta logica fra due opzioni; un esempio può essere la
domanda a è maggiore di b?
Questa domanda può avere solo due risposte: si se a è effettivamente
maggiore di b, no se a è effettivamente minore o uguale di b. Questo è
quindi un quesito «logico» ovvero una domando con soltanto due
possibilità di risposta, così come lo è l’istruzione if/else.
Nei diagrammi di flusso, come detto già, è rappresentato da un rombo che
dirama il flusso delle istruzioni in due parti a seconda del risultato della
selezione.
In un diagramma di flusso possono trovarsi molte istruzioni di selezioni che
diramano in più percorsi il flusso delle istruzioni. In questo caso si suole dire
che si hanno più istruzioni if nidificate.
Un esempio di algoritmo. Inizio

Supponiamo che in un software si debba stabilire Ins. A B


fra due numeri immessi da tastiera quale sia quello
maggiore e stamparlo a video.
Il diagramma di flusso che esplicita l’algoritmo è no
si
illustrato qui a destra.
A>B

Sareste in grado di implementarlo in C o in C++?


Stampa Stampa
Per adesso lo vediamo qui già implementato nelle
A B
due slide che seguiranno: la prima illustra il codice
sorgente in C, la seconda in C++.

Fine
Codice in C.

Notate che dopo i comandi if e else


non è stato messo il punto e virgola,
che significa che il comando non è
terminato e termina al punto e
virgola successivo.
Codice in C.
printf (" Inserisci il primo numero \n ");
Questo comando stampa a schermo quello che è inserito nelle
virgolette. Il codice \n di chiama codice di escape: ogni volta che il
compilatore incontra il carattere «\» riconosce la lettera che lo segue
come un comando; in questo caso la n indica di andare a capo.
scanf (" %d",&A);
Questo comando riceve da tastiera un input che associa alla variabile A.
%d indica che ci si aspetta un input di un numero intero.

Questo blocco è l’intera istruzione di selezione. In molti casi il comando else


può essere omesso, ma in questo caso, è parte integrante dell’algoritmo: se
si elimina il software potrà anche non fornire il risultato richiesto.
Codice in C++

Notate che anche nel C++, dopo i


comandi if e else non è stato messo
il punto e virgola, il che significa,
anche qui, che il comando non è
terminato e termina al punto e
virgola successivo.
Codice in C++.
cout << " Inserisci il primo numero " <<endl; ;
Questo comando stampa a schermo quello che è inserito nelle
virgolette. Tutto ciò che non è inserito fra due virgolette è letto dal
preprocessore come un comando. endl fa si che al termine della frase il
cursore vada a capo.
cin>> A;
Questo comando riceve da tastiera un input che associa alla variabile A.
Anche in questo caso poteva essere aggiunto il comando endl.

Questo blocco è l’intera istruzione di selezione. In molti casi il comando else può essere omesso, ma in questo
caso, è parte integrante dell’algoritmo: se si elimina il software potrà anche non fornire il risultato richiesto.
Come si può facilmente verificare per confronto, la sintassi è quasi la stessa del C.
Operatori aritmetici.
Il C e il C++ ammettono molti operatori matematici. Gli operatori aritmetici sono +, -, x, / e %, dove % indica il
resto di una divisione tra interi (int).
Va posta molta attenzione al segno di uguale: in C e in C++ l’uguale non indica un’uguaglianza ma una
assegnazione ovvero un valore è assegnato a una cella di memoria. Infatti, è normale trovare nei listati dei
programmi l’operazione 𝑖 = 𝑖 + 1 che in matematica sarebbe impossibile. Qui invece equivale ad assegnare
alla cella i il valore che conteneva in precedenza sommato di uno.
Esistono anche gli operatori logici che servono per confrontare valori, come abbiamo visto nei codici
precedenti. Avremo quindi gli operatori logici di confronto :
• = = uguale
• != diverso
• < minore
• >Maggiore
• <= minore o uguale
• => maggiore o uguale
Fate voi un vostro codice.
Come primo codice potete provare a scrivere e
implementare il seguente algoritmo:

Dati due numeri interi si valuti se il primo è un divisore Scegliete un linguaggio fra
del secondo.
C e C++ e scrivete
Il problema può sembrare semplice (sempre che vi algoritmo e codice.
ricordiate il significato di divisore) ma la stesura
dell’algoritmo presenta delle insidie da non
sottovalutare.
Un piccolo aiuto: fate una ricerca sulla sintassi del
comando if e cercate il significato degli operatori logici
&& e ==.

Potrebbero piacerti anche