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.