- 0 Discussione
-
Il strutture condizionali
Indice |
Introduzione
Modifica
Iniziamo a parlare di strutture condizionali. Le strutture condizionali permettono di far eseguire una porzione di codice invece che un' altra, il costrutto if è un esempio di struttura condizionale, si occupa di controllare una condizione, se è true, esegue il codice al suo interno, altrimenti passa oltre.
Tabella operatori di comparazione
Modifica
Riporto quì sotto una tabella che sarà utile nei paragrafi che seguono, questi sono gli operatori di comparazione utilizzati nel costrutto if:
| Operatore | Decrizione |
| == | Operatore di uguaglianza |
| > | Maggiore di... |
| < | Minore di... |
| >= | Maggiore o uguale di... |
| <= | Minore o uguale di.. |
| != | Diverso di... |
IMPORTANTE!!!
Per verificare un uguaglianza si usa l'operatore '==' e NON '=',
== -> CONFRONTO DI UN UGUAGLIANZA
= -> ASSEGNAMENTO
Il costrutto if semplice
Modifica
Nel caso più semplice la sintassi è la seguente:
if(condizione)
{
/* Esegue il codice all'interno delle graffe se la condizione è stata soddisfatta
* quindi restituisce true o un numero maggiore di 0
*/
}
Un esempio molto semplice sull'utilizzo del costrutto if nella sua forma più semplice può essere il seguente:
import std.stdio; import std.conv; //Funzioni per le conversioni import std.cstream; //Accesso allo stream di input e output della console (din e dout) int main(string[] args) { writef("Inserisci un numero: "); //Leggo lo stream di input e converte il contenuto in un int int num = std.conv.toInt(din.readLine()); if(num < 10) //se 'num' è minore di 10 { writefln("Il numero %d è minore di 10", num); } if(num > 10) //se 'num' è maggiore di 10 { writefln("Il numero %d è maggiore di 10", num); } if(num == 10)//se 'num' è 10 { writefln("Il numero è 10"); } return 0; }
Il costrutto if-else
Modifica
Nel costrutto if-else, se la condizione dell'if non è true, verranno eseguite le istruzioni che stanno nell'else, per rendere tutto più chiaro ecco un esempio:
import std.stdio; import std.conv; //Funzioni per le conversioni import std.cstream; //Accesso allo stream di input e output della console (din e dout) int main(string[] args) { writef("Inserisci un numero: "); //Leggo lo stream di input e converte il contenuto in un int int num = std.conv.toInt(din.readLine()); if(num < 10) //se 'num' è minore di 10... { writefln("Il numero %d è minore di 10", num); } else //...altrimenti... { writefln("Il numero è maggiore di 10"); } return 0; }
Oppure in questo modo:
import std.stdio; import std.conv; //Funzioni per le conversioni import std.cstream; //Accesso allo stream di input e output della console (din e dout) int main(string[] args) { writef("Inserisci un numero: "); //Leggo lo stream di input e converte il contenuto in un int int num = std.conv.toInt(din.readLine()); if(num < 10) //se 'num' è minore di 10... { writefln("Il numero %d è minore di 10", num); } else if(num > 10) //...altrimenti, se 'num' è maggiore di 10... { writefln("Il numero %d è maggiore di 10", num); } else //...altrimenti, se 'num' non è: nè minore, nè maggiore di 10 (quindi uguale)... { writefln("Il numero è 10"); } return 0; }
Una questione di prestazioni
Modifica
La domanda scorge spontanea: Perchè usare if-else e non if e basta??
La risposta presto data: il vantaggio di utilizzare if-else rispetto a if, sta nelle performance, con if verranno controllati anche tutti gli altri if che seguono. con if-else, se almeno uno di essi sarà true, gli altri saranno saltati completamente, un esempio pratico spiega questo concetto:
if(num < 10) { //VERRA' SEMPRE CONTROLLATO writefln("Il numero %d è minore di 10", num); } if(num > 10) { //VERRA' SEMPRE CONTROLLATO writefln("Il numero %d è maggiore di 10", num); } if(num == 10) { //VERRA' SEMPRE CONTROLLATO writefln("Il numero è 10"); }
Il seguente codice ha lo stesso significato, ma è più veloce:
if(num < 10) //se il numero è minore di 10... { //SE E' TRUE VERRANNO ECLUSI GLI ALTRI ELSE-IF writefln("Il numero %d è minore di 10", num); } else if(num > 10) //...altrimenti, se il numero è maggiore di 10... { //SE E' TRUE VERRANNO ECLUSI GLI ALTRI ELSE-IF writefln("Il numero %d è maggiore di 10", num); } else //...altrimenti, se il numero non è NE' maggiore di 10, NE' minore di 10 (quindi uguale) { //SE E' TRUE VERRANNO ECLUSI GLI ALTRI ELSE-IF writefln("Il numero è 10"); }
In conclusione: se bisogna fare una serie di controlli è consigliato if-else