Abbiamo visto sette diversi costrutti: analizziamo ora nello specifico il costrutto di decisione
if.
La sintassi del costrutto
if è la seguente:
CODICE
if ( condizione )
{
istruzione 1;
istruzione 2;
istruzione n;
}
Come vedete, il costrutto è costituito da una condizione e da un'insieme di
n istruzioni, poste tra parentesi graffe.
Queste istruzioni non vengono eseguite in ogni caso, ma SE E SOLO SE la condizione posta tra parentesi tonde è vera.
Ad esempio,
CODICE
if ( 7 < 6 )
{
cout << "7 < 6";
}
NON visualizza la stringa "7 < 6", perché la condizione 7 < 6 è falsa.
Vediamo allora quali sono le possibili condizioni che si possono porre tra parentesi tonde:
- Il confronto tra due costanti [es. (7 < 6)]
- Il confronto tra due variabili [es. (a < b)]
- Il confronto tra una variabile e una costante, e viceversa [es. (a < 6)]
- Un'operazione [es. (4+1): in questo caso la condizione viene considerata vera se l'intero risultato dell'operazione è diverso da zero]
- Un'istruzione [es. (cout << "ciao"): in questo caso la condizione viene considerata vera se l'istruzione viene eseguita correttamente]
Ricordate, comunque, che in ogni caso non deve essere messo il punto e virgola dopo la codizione, anche in casi come (cout << "ciao"), e nemmeno dopo la parentesi tonda.
CODICE
if ( a < b; )
if ( a < b );
Le righe qui sopra generano infatti errori di sintassi in fase di compilazione.
Allora, penso che a questo punto abbiate ben capito come funziona
if, ma rimane un problema: come effettuare un confronto nella condizione?
Risposta semplice: il C++ mette a disposizione 6 operatori di confronto, e sono (quasi) tutto ciò di cui avete bisogno per costruire le vostre condizioni nei costrutti di decisione.
Eccoli:
== (è uguale a)
!= (è diverso da)
< (è minore di)
> (è maggiore di)
<= (è minore o uguale a)
>= (è maggiore o uguale a)
Fate attenzione a non confondere = con ==.
Infatti se scrivete
CODICE
if ( vincita = 2 )
{
cout << "Bravo, hai vinto!\n";
}
con l'intenzione di confrontare la variabile
vincita con la costante numerica 2, commettete un errore logico. Infatti,
a = 2 è un assegnamento, e rientra nella categoria delle operazioni, che risultano vere su il loro risultato è diverso da zero. In questo caso, quindi, la variabile
vincita verrà alterata e risultarà uguale a 2, e l'intera espressione darà un risultato (2) diverso da zero, quindi l'istruzione cout verrà sempre attivata, indipendentemente dal fatto che il nostro ipotetico giocatore abbia vinto o meno.
La versione corretta del costrutto, quindi è questa:
CODICE
if ( vincita == 2 )
{
cout << "Bravo, hai vinto!\n";
}
Edited by Metal H - 16/1/2008, 22:10