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.

fn main() {
    for number in 1..=10 {
        println!("{}", number);
    }
}

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.

© Copyright 2024. Tots els drets reservats