Rust - Processo decisionale

Le strutture decisionali richiedono che il programmatore specifichi una o più condizioni che devono essere valutate o testate dal programma, insieme a una o più istruzioni da eseguire se la condizione è determinata essere vera e, facoltativamente, altre istruzioni da eseguire se condizione è determinata essere falsa.

Di seguito è mostrata la forma generale di una tipica struttura decisionale presente nella maggior parte dei linguaggi di programmazione:

Suor n Dichiarazione e descrizione
1

if statement

Un'istruzione if è costituita da un'espressione booleana seguita da una o più istruzioni.

2

if...else statement

Un'istruzione if può essere seguita da un'istruzione else opzionale , che viene eseguita quando l'espressione booleana è falsa.

3

else...if and nested ifstatement

È possibile utilizzare un'istruzione if o else if all'interno di un'altra istruzione if o else if .

4

match statement

Un'istruzione match consente di verificare una variabile rispetto a un elenco di valori.

Istruzione If

Il costrutto if ... else valuta una condizione prima che venga eseguito un blocco di codice.

Sintassi

if boolean_expression {
   // statement(s) will execute if the boolean expression is true
}

Se l'espressione booleana restituisce true, verrà eseguito il blocco di codice all'interno dell'istruzione if. Se l'espressione booleana restituisce false, verrà eseguita la prima serie di codice dopo la fine dell'istruzione if (dopo la parentesi graffa di chiusura).

fn main(){
   let num:i32 = 5;
   if num > 0 {
      println!("number is positive") ;
   }
}

L'esempio sopra verrà stampato number is positive come la condizione specificata dal blocco if è vera.

if else dichiarazione

Un if può essere seguito da un optional elsebloccare. Il blocco else verrà eseguito se l'espressione booleana testata dall'istruzione if restituisce false.

Sintassi

if boolean_expression {
   // statement(s) will execute if the boolean expression is true
} else {
   // statement(s) will execute if the boolean expression is false
}

Diagramma di flusso

Il ifil blocco protegge l'espressione condizionale. Il blocco associato all'istruzione if viene eseguito se l'espressione booleana restituisce true.

Il blocco if può essere seguito da un'istruzione else opzionale. Il blocco di istruzioni associato al blocco else viene eseguito se l'espressione restituisce false.

Illustrazione - Semplice se… altro

fn main() {
   let num = 12;
   if num % 2==0 {
      println!("Even");
   } else {
      println!("Odd");
   }
}

L'esempio sopra mostra se il valore in una variabile è pari o dispari. Il blocco if controlla la divisibilità del valore per 2 per determinare lo stesso. Ecco l'output del codice sopra -

Even

Annidato If

Il else…ifladder è utile per testare più condizioni. La sintassi è come mostrato di seguito:

Sintassi

if boolean_expression1 {
   //statements if the expression1 evaluates to true
} else if boolean_expression2 {
   //statements if the expression2 evaluates to true
} else {
   //statements if both expression1 and expression2 result to false
}

Quando si usano le istruzioni if ​​... else ... if e else, ci sono alcuni punti da tenere a mente.

  • Un if può avere zero o un altro e deve venire dopo qualsiasi altro..if.
  • Un if può avere da zero a molti altri..if e devono venire prima dell'altro.
  • Una volta che un altro .. se ha successo, nessuno dei rimanenti altrimenti .. se o altro verrà testato.

Esempio: altro ... se scala

fn main() {
   let num = 2 ;
   if num > 0 {
      println!("{} is positive",num);
   } else if num < 0 {
      println!("{} is negative",num);
   } else {
      println!("{} is neither positive nor negative",num) ;
   }
}

Lo snippet mostra se il valore è positivo, negativo o zero.

Produzione

2 is positive

Istruzione Match

L'istruzione match controlla se un valore corrente corrisponde da un elenco di valori, questo è molto simile all'istruzione switch nel linguaggio C. In primo luogo, nota che l'espressione che segue la parola chiave match non deve essere racchiusa tra parentesi.

La sintassi è quella mostrata di seguito.

let expressionResult = match variable_expression {
   constant_expr1 => {
      //statements;
   },
   constant_expr2 => {
      //statements;
   },
   _ => {
      //default
   }
};

Nell'esempio riportato di seguito, state_code corrisponde a un elenco di valori MH, KL, KA, GA- se viene trovata una corrispondenza, un valore stringa viene restituito allo stato della variabile . Se non viene trovata alcuna corrispondenza, il caso predefinito _ corrisponde e viene restituito il valore Unkown .

fn main(){
   let state_code = "MH";
   let state = match state_code {
      "MH" => {println!("Found match for MH"); "Maharashtra"},
      "KL" => "Kerala",
      "KA" => "Karnadaka",
      "GA" => "Goa",
      _ => "Unknown"
   };
   println!("State name is {}",state);
}

Produzione

Found match for MH
State name is Maharashtra