Perulangan
Perulangan serupa dengan memiliki pemilihan kondisi yaitu memiliki kondisi pembatas, tetapi berbedaanya perulangan bertugas untuk menjalankan baris kode berkali-kali selama kondisi pembatas masih terpenuhi sedangkan pemilihan hanya menentukan baris kode mana yang akan dijalankan.
Ada dua jenis perulangan yaitu looping dan iterasi. Looping menggunakan kondisi pembatas
berdasarkan logika seperti pernyataan if
. Iterasi mengunakan isi koleksi data sebagai kondisi pembatas yang akan dibahas lebih lanjut pada bagian Koleksi.
Nim memiliki pendekatan first class iterators, karena Nim mendukung iterasi inline dan iterasi klosure
Looping
Deklarasi sebuah looping pada Nim menggunakan pernyataan while
.
while <kondisi pembatas>:
<baris kode>
Contoh seperti ini:
var index = 0
while index < 5:
echo index
index += 1
# bentuk ringkas dari
# index = index + 1
Kode diatas kita memiliki variabel index
bernilai 0 lalu sebuah kondisi perulangan dengan batas
nilai variabel index
kurang dari 5. Jika nilai variabel index
kurang dari lima, maka perulangan
akan menjalankan baris kode dibawahnya yaitu
echo index
index += 1
echo index
bertugas menampilkan nilai variabel index
, variabel index disini berkerja sebagai
pembatas kondisi perulangan. index += 1
berfungsi untuk mengubah nilai variabel index
agar
membuat nilai variabel index
melewati kondisi pembatas yaitu angka yang lebih kecil dari 5,
jika kondisi pembatas terlewati, maka perulangan berhenti.
Peringatan: Kondisi pembatas looping sebaikanya menguji variabel mutable untuk mententukan batas operasi, karena looping bisa dihentikan dari dalam baris kode dengan mengubah nilai variabel. Bila tidak ada kemungkinan infinite loops, yang menyebabakan program membuat komputer menjadi hang karena perulangan tidak berhenti dapat menghabiskan resource komputer seperti RAM penuh atau CPU 100%.
Kata kunci break
Ada kalanya kita perlu berhenti dari perulangan tanpa harus memenuhi kondisi pembatas, di sini peran
dari kata kunci break
untuk menghentikan perulangan.
var index = 0
while true:
if (index >= 0) and (index < 10):
echo index
index += 1
else:
break
Peringatan: contoh ini mengunakan infinite loops dimana kondisi pembatas tidak pernah berubah karena menggunakan nilai langsung yang tidak bisa diubah.
Contoh infite loop diatas bisa ditangani dengan mengehentikan perulangan pada kondisi tertentu, kasus diatas ingin menampilkan nilai 0 sampai 10 dari infinite loop.
Engineering tips: Meskipun infinite loop terkesan mengerikan, tetapi memiliki kegunaan tersendiri seperti membuat
event loop
pada web server atau program yang memiliki tugas menunggu.
Iterasi
Nim memiliki fitur iterator yang unik, tetapi disini hanya akan membahas penggunaan yang sederhana
yaitu Pernyataan for. Pola pernyataan for
sebagai berikut
for <item> in <koleksi data>:
<baris kode>
item
adalah nilai yang ditelusuri oleh program jadi semua nilai dari <koleksi data>
akan dibaca
melalui index oleh baris kode dibawahnya, nama index
bebas seperti variabel.
for angka in [1,3,4,5]:
echo angka
Kapan pakai Looping dan iterasi ?
Penggunaan looping digunakan pada saat kondisi banyak bergantung pada operasi logika seperti mengurutkan data atau proses yang tidak menggunakan data secara langsung (sebagai contoh event loop
).
Iterasi digunakan untuk kondisi yang bergantung pada koleksi data seperti ingin mengubah isi koleksi keseluruhan atau sebagian atau mencari data.