Lecții din modul (1/2)
Condiționale și bucle
Fluxul de control în Rust se învârte în jurul a două constructe principale: expresii condiționate pentru a decide ce cale de execuție să urmeze și constructe în buclă pentru a repeta instrucțiunile.
Condiționale: if ca expresie
În Rust, instrucțiunea if este o expresie, ceea ce înseamnă că returnează o valoare. Putem folosi if pentru a atribui direct o valoare unei variabile:
let condition = true;
let number = if condition { 5 } else { 6 }; // if/else as an expressionBucle și iterații
Rust oferă trei tipuri de bucle native: loop, while și for.
1. loop (buclă infinită)
Cuvântul cheie loop creează o buclă infinită care continuă până când îi spuneți în mod explicit să nu mai folosească break:
let mut count = 0;
loop {
count += 1;
if count == 10 {
break; // Exit the loop
}
}În plus, puteți returna o valoare dintr-un loop plasându-l imediat după break:
let result = loop {
count += 1;
if count == 10 {
break count * 2; // Returns 20
}
};2. while (Bucla condiționată)
Rulează un bloc de cod atâta timp cât o condiție booleană rămâne adevărată:
let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}3. for (Iterație peste colecții și intervale)
Bucla for este cea mai comună și mai sigură unealtă pentru iterarea elementelor dintr-o colecție sau dintr-o serie de numere:
// Iterates over numbers 1 through 3 (excluding 4)
for number in 1..4 {
println!("Valore: {}", number);
}
// Iterates including the right boundary using '='
for number in 1..=3 {
println!("Valore: {}", number); // Prints 1, 2 and 3
}Etichete bucle
Când aveți de-a face cu bucle imbricate, instrucțiunile break și continue se aplică în mod implicit buclei cele mai interioare. Rust vă permite să utilizați o etichetă de buclă (scrisă ca 'label_name:) pentru a termina sau continua în mod explicit o buclă exterioară:
let mut count = 0;
'outer: loop {
loop {
if count == 5 {
break 'outer; // Exits the outer loop directly
}
count += 1;
}
}Încercați-l singur
Declarați o variabilă numită număr cu o valoare de 7. Apoi, utilizați o expresie if/else pentru a atribui valoarea „mai mare” mesajului variabilă dacă numărul este mai mare de 5 sau „mai mic” în caz contrar. În cele din urmă, tipăriți mesajul folosind println!.
Afișează indiciu
Scrieți `let message = if number > 5 { 'greater' } else { 'smaller' };` și transmiteți-l la `println!`.
Soluție disponibilă după 3 încercări
Scrieți o buclă for care imprimă numerele de la 1 la 5 inclusiv (adică 1, 2, 3, 4, 5) folosind println! la fiecare iterație.
Afișează indiciu
Utilizați sintaxa intervalului inclusiv `for i in 1..=5` și rulați `println!('{}', i);` în interiorul blocului.
Soluție disponibilă după 3 încercări
Scrieți o buclă care incrementează un numărător de variabile mutabile începând de la 0. Când contorul ajunge la 10, ieșiți din contorul care returnează bucla înmulțit cu 5 utilizând instrucțiunea break pentru a atribui această valoare unui rezultat variabil imuabil. În sfârșit, imprimați rezultatul.
Afișează indiciu
Folosiți `let result = loop { ... };`. În interiorul buclei incrementează `counter` și adaugă condiția `if counter == 10 { break counter * 5; }`.
Soluție disponibilă după 3 încercări