Lompati ke konten utama
Modul 2 · Pelajaran 1 dari 23/14 dalam kursus~12 min
Pelajaran modul (1/2)

Kondisional dan Loop

Aliran kontrol di Rust berkisar pada dua konstruksi utama: ekspresi kondisional untuk memutuskan jalur eksekusi mana yang harus diambil, dan konstruksi loop untuk mengulangi instruksi.

Persyaratan: if sebagai Ekspresi

Di Rust, pernyataan if adalah ekspresi, yang berarti mengembalikan nilai. Kita dapat menggunakan if untuk secara langsung memberikan nilai ke variabel:

Rust
let condition = true;
let number = if condition { 5 } else { 6 }; // if/else as an expression

Loop dan Iterasi

Rust menyediakan tiga jenis loop asli: loop, while, dan for.

1. loop (Lingkaran Tak Terbatas)

Kata kunci loop membuat loop tak terbatas yang berlanjut hingga Anda secara eksplisit memerintahkannya untuk berhenti menggunakan break:

Rust
let mut count = 0;
loop {
    count += 1;
    if count == 10 {
        break; // Exit the loop
    }
}

Selain itu, Anda dapat mengembalikan nilai dari loop dengan menempatkannya tepat setelah break:

Rust
let result = loop {
    count += 1;
    if count == 10 {
        break count * 2; // Returns 20
    }
};

2. while (Loop Bersyarat)

Menjalankan blok kode selama kondisi boolean tetap benar:

Rust
let mut number = 3;
while number != 0 {
    println!("{}!", number);
    number -= 1;
}

3. for (Iterasi pada Koleksi dan Rentang)

Perulangan for adalah alat yang paling umum dan paling aman untuk melakukan iterasi pada elemen dalam kumpulan atau rentang angka:

Rust
// 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
}

Label Lingkaran

Saat menangani loop bersarang, pernyataan break dan continue berlaku untuk loop terdalam secara default. Rust memungkinkan Anda menggunakan label loop (ditulis sebagai 'label_name:) untuk secara eksplisit menghentikan atau melanjutkan loop luar:

Rust
let mut count = 0;
'outer: loop {
    loop {
        if count == 5 {
            break 'outer; // Exits the outer loop directly
        }
        count += 1;
    }
}

Cobalah sendiri

Latihan#rust.m2.l1.e1
Upaya: 0Memuat…

Deklarasikan variabel bernama angka dengan nilai 7. Selanjutnya, gunakan ekspresi if/else untuk menetapkan nilai 'lebih besar' pada pesan variabel jika angka lebih besar dari 5, atau 'lebih kecil' jika sebaliknya. Terakhir, cetak pesan menggunakan println!.

Memuat editor…
Tunjukkan petunjuk

Tulis `biarkan pesan = jika angka > 5 { 'lebih besar' } else { 'lebih kecil' };` dan teruskan ke `println!`.

Solusi tersedia setelah 3 upaya

Latihan#rust.m2.l1.e2
Upaya: 0Memuat…

Tulis perulangan for yang mencetak angka dari 1 hingga 5 inklusif (yaitu 1, 2, 3, 4, 5) menggunakan println! pada setiap iterasi.

Memuat editor…
Tunjukkan petunjuk

Gunakan sintaks rentang inklusif `for i in 1..=5` dan jalankan `println!('{}', i);` di dalam blok.

Solusi tersedia setelah 3 upaya

Latihan#rust.m2.l1.e3
Upaya: 0Memuat…

Tulis sebuah perulangan yang menambah penghitung variabel yang dapat diubah mulai dari 0. Ketika penghitung mencapai 10, keluar dari perulangan yang mengembalikan penghitung dikalikan dengan 5 menggunakan pernyataan break untuk menetapkan nilai ini ke hasil variabel yang tidak dapat diubah. Terakhir, cetak hasilnya.

Memuat editor…
Tunjukkan petunjuk

Gunakan `biarkan hasil = loop { ... };`. Di dalam loop, tambahkan `counter` dan tambahkan kondisi `if counter == 10 { break counter * 5; }`.

Solusi tersedia setelah 3 upaya