Ogni programma, in base alla scelta che facciamo esegue unoperazione prestabilita dal programmatore. Portiamo un esempio piu concreto: nel Finder avete un file nel Cestino e per cancellarlo scegliete il comando Vuota il Cestino.... A questo punto il Mac vi chiedera se siete sicuri di volerlo cancellare. Se darete lOK lo cancellera, se annullerete il file rimarra nel Cestino e continuerete a lavorare. Per compiere questa semplice operazione e soddisfare la nostra scelta il Mac ha ragionato in questo modo: se il pulsante della finestra premuto = OK allora
cancella il file nel cestino
altrimenti
fai sparire la finestra
Questo procedimento viene applicato tale e quale nella programmazione in C.
Vediamone un esempio per mezzo della spiegazione di un listato creato ad hoc. Immaginiamo di voler far confrontare al Mac due numeri per decidere quale dei due sia maggiore.
Lo schema che seguiremo sarà il seguente:
1. immissione del primo numero (input)
2. memorizzazione del numero allinterno di una variabile
3. immissione del secondo numero (input)
4. memorizzazione di esso allinterno di una seconda variabile
5. confronto dei numeri
A questo punto pero si possono verificare due condizione diverse ovvero:
a. che il primo numero sia maggiore del secondo;
b. oppure che il primo numero sia minore del secondo;
Quindi se si verifica lipotesi a. dovremmo avere un output di questo tipo:
Il primo numero a è maggiore del secondo numero b.
Altrimenti, se si verifica l'ipotesi b. dovremmo prevedere il seguente testo:
Il primo numero a è minore del secondo numero b.
In C, per far eseguire al Mac una determinata istruzione invece che unaltra al variare di una condizione, utilizziamo il costrutto if - else (che in inglese significano rispettivamente se ed allora).
La sintassi di questo costrutto allinterno di un listato in C è la seguente:
if(espressione)
istruzione da eseguire 1
else
istruzione da eseguire 2
Cio significa che se espressione è vera (ad esempio si verifica che il numero a sia maggiore del numero b) allora si manderà in esecuzione listruzione che stampa a video il relativo messaggio.
Altrimenti, se espressione è falsa si passerà allistruzione n° 2 che stamperà un messaggio adatto alla situazione (in questo caso che a è minore di b).
Vediamo quindi il listato del programmino menzionato.
#include <stdio.h>
main() {
int a,b;
printf("INSERISCI IL PRIMO NUMERO: ");
scanf("%d",&a);
printf("INSERISCI IL SECONDO NUMERO: ");
scanf("%d",&b);
if(a > b) printf("nIl primo numero %d è maggiore del secondo numero %d",a,b);
else
printf("nIl primo numero %d è minore del secondo numero %d",a,b);
}
Dichiarate le due variabili intere (a e b) si passa, seguendo lo schema di cui sopra, allintrodurre per mezzo della tastiera il primo numero (a), alla sua memorizzazione con listruzione printf e alla ripetizione dello stesso procedimento per il secondo numero (b).
A quel punto entra in gioco il nuovo costrutto if-elses:
if(a > b), che significa se a è maggiore di b, printf("nIl primo numero %d è maggiore del secondo numero %d",a,b) , che è listruzione che ovviamente stampa a video il messaggio Il primo numero (a) è maggiore del secondo (b).
Da notare in questultima istruzione che i due simboli %d stanno ad indicare i punti della stringa nei quali verranno stampati i due numeri variabili.
Il primo simbolo %d sarà in questo caso la posizione del numero a poiché al di fuori dei doppi apici esso è il primo indicato tra i due. Da cio capiamo che il secondo simbolo %d rappresenta il punto in cui verrà stampato b.
In seguito incontriamo else (= altrimenti) che porterà il Mac ad eseguire listruzione opzionale ovvero printf("nIl primo numero %d è minore del secondo numero %d",a,b);
Vediamo poi il listato di un programmino atto a stabilire se lutente è maggiorenne ;-)
#include <stdio.h>
main() {
int a;
printf("Quanti anni hai? ");
scanf("%d",&a);
if(a>17) printf("nSei maggiorenne e puoi prendere la patente.");
else
printf("Eh eh, sotto i 18 anni. Ne devi mangiare di pane...=)");
}
Lanalisi del listato è semplice ed immediata se è stato capito il precedente.
Dichiariamo una variabile intera a che conterrà letà dellutente. Una volta inserita letà e memorizzata in tale variabile essa verrà confrontata con il numero 17. Se il numero a sara maggiore di 17 (if(a>17)) il Mac vi riconoscerà come maggiorenni e vi dira che potete fare la vostra prima corsa in auto con la patente.
Altrimenti, (se a sarà minore di 18) verrà eseguita listruzione che vi ricorderà che siete ancora piccoli per andare a vedere quel film che speravate...;-)
Tutto chiaro? Per chiarimenti potete scrivermi.

