Usare le condizioni if/else

Completato

Una parte essenziale della programmazione consiste nel prendere decisioni basate sui dati. In questa unità si apprenderà come controllare le azioni del programma testando le condizioni.

È possibile creare rami condizionali nel codice usando le parole chiave if e else. Molti linguaggi di programmazione offrono questa funzionalità e usano una sintassi simile.

Le parole chiave if e else vengono usate con le espressioni per testare i valori ed eseguire azioni in base al risultato del test. Tutte le espressioni condizionali generano un valore booleano true o false.

Definire una condizione if/else

Ecco un esempio che verifica se due numeri sono uguali e genera un messaggio in base al risultato del test:

if 1 == 2 {
    println!("True, the numbers are equal."); // 
} else {
    println!("False, the numbers are not equal.");
}

In questo esempio la condizione if è l'espressione 1 == 2, che restituisce un tipo booleano con il valore false.

A differenza della maggior parte degli altri linguaggi, i blocchi if in Rust possono fungere anche da espressioni. Tutti i blocchi di esecuzione nei rami della condizione devono restituire lo stesso tipo per la compilazione del codice.

let formal = true;
let greeting = if formal { // if used here as an expression
    "Good day to you."     // return a String
} else {
    "Hey!"                 // return a String
};
println!("{}", greeting)   // prints "Good day to you."

In questo esempio viene assegnato un valore alla variabile greeting in base al risultato dell'espressione if formal. Se l'espressione if formal è true, il valore di greeting viene impostato sulla stringa "Good day to you". Se l'espressione è false, il valore di greeting viene impostato sulla stringa "Hey!". Poiché la variabile formal è stata inizializzata su true, anche il risultato dell'espressione if formal è true.

Combinare più condizioni di test

È possibile combinare if e else insieme per formare un'espressione else if. È possibile usare più condizioni else if dopo la condizione iniziale if e prima di una condizione else di chiusura, che è facoltativa.

Se un'espressione condizionale restituisce true, viene eseguito il blocco di azioni corrispondente. Tutti i blocchi else if o else seguenti vengono ignorati. Se un'espressione condizionale restituisce false, il blocco di azioni corrispondente viene ignorato. Qualsiasi condizione else if seguente viene valutata. Se tutte le condizioni if e else if restituiscono false, viene eseguito l'eventuale blocco else.

In questo esempio viene verificato se un numero rientra in un intervallo di valori consentiti. Si vuole eseguire un'elaborazione specifica quando il numero è minore di zero, uguale a zero o maggiore di 512. Viene dichiarata la variabile booleana out_of_range, ma il relativo valore viene impostato solo quando il programma immette l'espressione di test condizionale.

let num = 500; // num variable can be set at some point in the program
let out_of_range: bool;
if num < 0 {
    out_of_range = true;
} else if num == 0 {
    out_of_range = true;
} else if num > 512 {
    out_of_range = true;
} else {
    out_of_range = false;
}

Nei prossimi esercizi verranno usate le espressioni condizionali if e else.