En aquest tema, explorarem com controlar el flux d'execució dels nostres programes en Rust. Aprendrem a utilitzar condicions, bucles i altres estructures de control per crear programes més dinàmics i flexibles.
Continguts
Condicionals
if
i else
Els condicionals if
i else
ens permeten executar diferents blocs de codi basant-nos en condicions booleans.
fn main() { let x = 5; if x > 0 { println!("x és positiu"); } else if x < 0 { println!("x és negatiu"); } else { println!("x és zero"); } }
if
com a expressió
En Rust, if
pot ser utilitzat com a expressió, el que significa que pot retornar un valor.
fn main() { let condition = true; let number = if condition { 5 } else { 6 }; println!("El valor de number és: {}", number); }
Bucles
loop
El bucle loop
executa un bloc de codi repetidament fins que es trobi una instrucció break
.
fn main() { let mut count = 0; loop { count += 1; println!("Count és: {}", count); if count == 5 { break; } } }
while
El bucle while
executa un bloc de codi mentre una condició sigui certa.
fn main() { let mut number = 3; while number != 0 { println!("{}!", number); number -= 1; } println!("Despegueu!"); }
for
El bucle for
és utilitzat per iterar sobre una col·lecció d'elements.
fn main() { let a = [10, 20, 30, 40, 50]; for element in a.iter() { println!("El valor és: {}", element); } }
Expressions match
L'expressió match
és una manera poderosa de controlar el flux basant-se en el valor d'una variable. És similar a una estructura switch
en altres llenguatges.
fn main() { let number = 6; match number { 1 => println!("One!"), 2 => println!("Two!"), 3 => println!("Three!"), 4 => println!("Four!"), 5 => println!("Five!"), _ => println!("Something else!"), } }
Exercicis Pràctics
Exercici 1: Condicionals
Escriu un programa que demani a l'usuari un número i imprimeixi si el número és positiu, negatiu o zero.
use std::io; fn main() { println!("Introdueix un número:"); let mut input = String::new(); io::stdin().read_line(&mut input).expect("Failed to read line"); let number: i32 = input.trim().parse().expect("Please type a number!"); if number > 0 { println!("El número és positiu"); } else if number < 0 { println!("El número és negatiu"); } else { println!("El número és zero"); } }
Exercici 2: Bucles
Escriu un programa que imprimeixi els números de l'1 al 10 utilitzant un bucle for
.
Exercici 3: match
Escriu un programa que demani a l'usuari un dia de la setmana (com a número) i imprimeixi el nom del dia utilitzant una expressió match
.
use std::io; fn main() { println!("Introdueix un número del 1 al 7:"); let mut input = String::new(); io::stdin().read_line(&mut input).expect("Failed to read line"); let day: u32 = input.trim().parse().expect("Please type a number!"); match day { 1 => println!("Dilluns"), 2 => println!("Dimarts"), 3 => println!("Dimecres"), 4 => println!("Dijous"), 5 => println!("Divendres"), 6 => println!("Dissabte"), 7 => println!("Diumenge"), _ => println!("Número invàlid"), } }
Conclusió
En aquesta secció, hem après com utilitzar estructures de control de flux en Rust, incloent condicionals, bucles i l'expressió match
. Aquestes eines són fonamentals per escriure programes dinàmics i flexibles. A la següent secció, explorarem la propietat i el préstec, conceptes clau en la gestió de memòria en Rust.