Skip to main content

A.10. Perulangan ➜ while

Di Rust ada beberapa cara untuk melakukan perulangan, salah satunya adalah dengan menggunakan keyword while, dan pada chapter ini kita akan mempelajarinya.

Perulangan sendiri merupakan teknik untuk mengulang-ulang eksekusi blok kode dengan kondisi tertentu. Perulangan akan terus menerus dieksekusi ketika kondisi perulangan nilainya true, dan hanya akan berhenti kita nilainya false.

A.10.1. Keyword while

Perulangan menggunakan while mengharuskan kondisi perulangan dituliskan di awal dengan notasi penulisan sebagai berikut:

while kondisi {

}

Contoh berikut adalah penerapan while untuk operasi perulangan yang isinya menampilkan angka i dengan kondisi i dibawah max.

let mut i = 0;
let max = 5;

while i < max {
println!("nilai: {i}");
i += 1;
}

keyword while

Variabel i pada contoh di atas menjadi penentu kapan perulangan berhenti. Di dalam blok kode while (yang dimana akan dieksekusi setiap kondisi menghasilkan nilai true), nilai variabel i di-increment, membuat variabel i nilainya selalu bertambah 1 setiap kali perulangan. Perulangan akan berhenti ketika nilai i sudah tidak dibawah max lagi.

A.10.2. Nested while

Penerapan nested while (atau while di dalam while) cukup mudah, tulis saja statement while di dalam while sesuai kebutuhan. Contoh bisa dilihat pada kode berikut, yaitu penerapan teknik nested while untuk print karakter * membuat bentuk segitiga.

let mut i = 0;
let max = 5;

while i < max {
let mut j = 0;
let max_inner = i;

while j <= max_inner {
print!("* ");
j += 1;
}

println!();
i += 1;
}

nested while

◉ Macro print

Macro print kegunaannya mirip dengan println, hanya saja tanpa newline atau baris baru. Jadi semua string yang di-print menggunakan macro print akan muncul menyamping ke kanan dan tidak di baris baru. Contoh:

print!("* ");
print!("* ");
print!("* ");
print!("* ");

Akan menghasilkan output:

* * * * 

A.10.3. Keyword while let

Kita akan bahas keyword while let pada chapter Pattern Matching.

A.10.4. Menambahkan delay dalam perulangan

Eksekusi statement perulangan pada program sangatlah cepat. Bisa jadi dalam 1 detik ada ribuan (atau bahkan jauh lebih banyak) statement dalam perulangan yang dieksekusi. Di-tiap eksekusinya, delay bisa saja ditambahkan, misalnya 1 detik, dan pada contoh di bawah ini kita akan coba mengaplikasikannya.

Silakan tulis kode program berikut:

use std::thread::sleep;
use std::time::Duration;

fn main() {
let mut i = 0;
let max = 5;

while i < max {
println!("nilai: {i}");
i += 1;

sleep(Duration::from_secs(1));
}
}

Ada beberapa keyword baru dipergunakan pada source code di atas. Untuk sekarang coba jalankan terlebih dahulu program yang baru dibuat, kemudian stop. Text nilai: {i} akan muncul di console setiap satu detik, dan hanya akan berhenti ketika program di stop.

Selanjutnya kita akan beberapa sintaks baru di atas.

◉ Keyword use dan module dalam Rust

Keyword use memiliki banyak kegunaan. Pada contoh ini use difungsikan untuk import module, yang di bahasa Rust dikenal dengan istilah import paths.

Notasi penulisan module path di Rust dinotasikan dengan separator ::, contohnya seperti std::thread::sleep dan std::time::Duration.

  • Statement use std::thread::sleep artinya path std::thread::sleep digunakan dalam kode program. sleep adalah sebuah fungsi yang gunanya untuk menambahkan jeda dengan durasi sesuai keinginan, contohnya, 1 detik, 30 menit, dst.

  • Statement use std::time::Duration artinya path std::time::Duration digunakan dalam kode program. Duration merupakan sebuah struct yang isinya banyak hal untuk keperluan yang berhubungan dengan waktu atau duration.

Pada contoh di atas, fungsi sleep dipanggil dalam blok kode perulangan agar ada jeda ditiap eksekusinya. Sedangkan durasi jedanya sendiri ditentukan oleh argument Duration::from_secs(1) yang artinya durasi 1 detik. Dengan ini durasi delay adalah 1 detik.

Jika ingin jeda durasi yang lebih lama, ubah saja angka 1 pada Duration::from_secs(1). Contoh: Duration::from_secs(5) berarti jeda 5 detik.


Catatan chapter 📑

◉ Source code praktik

github.com/novalagung/dasarpemrogramanrust-example/../perulangan_while

◉ Referensi