Koleksi

Koleksi adalah tipe data dengan kumpulan nilai. Pada contoh variabel sebelumnya kita hanya bisa menyimpan satu nilai (nilai tunggal) didalam variabel, dengan koleksi kita bisa menyimpan banyak nilai (nilai majemuk) yang diakses menggunakan index posisi yang dimulai dari 0 dan tipe data nilai yang disimpan dalam satu koleksi harus sama

let tunggal = 12
let majemuk = [1,2,3]

echo tunggal # 12

echo majemuk[0] 
# membaca index ke-0 
# dari varibel majemuk
# 1

echo majemuk[1] 
# sama seperti diatas 
# tapi index ke-1
# 2

Koleksi pada Nim terdapat 3 jenis : Array, Sequence dan string.

Koleksi Array

Array (dibacai arai) merupakan jenis koleksi yang menyimpan banyak data dengan jumlah yang tetap, artinya setelah dideklarasikan bersama jumlahnya ukuran tidak bisa bertambah.

let <nama> : array[<ukuran array>, <tipe data>] = [<nilai>,<nilai>]

# atau untuk deklarasi nilai berbentuk array

[<nilai>,<nilai>]

Contohnya seperti ini:

let isiDompet : array[2, string] = ["KTP","KTM"]

echo isiDompet[0] 
# KTP
echo isiDompet[1]

contoh diatas kita mengakses nilai dari isiDompet menggunakan index posisi:

IndexNilai
0KTP
1KTM

Looping dan Iterasi pada Koleksi

Untuk memroses isi koleksi akan cukup melelahkan bila kita menulis kode yang sama berulang untuk mengakses isi koleksi. Kita bisa gunakan perulangan yang sebelumnya telah dibahas:

let isiDompet : array[2, string] = ["KTP","KTM"]

# pendekatan _looping_
var index = 0
while index < 2:
  echo isiDompet[index]
  index =+ 1

# pendekatan iterasi
for isi in isiDompet:
  echo isi

Koleksi Sequence

Sequence (dibaca sekuens) merupakan jenis koleksi menyimpan banyak nilai dengan ukuran yang bisa berubah, artinya isi bisa bertambah atau berkurang, hal yang berkebalikan dengan Array.

Pola deklarasi sequence:

var <nama> : seq[<tipe data>] = @[<nilai>,<nilai>]

# atau untuk deklarasi nilai berbentuk sekuens

@[<nilai>,<nilai>]

Contoh seperti ini:

var isiDompet : seq[string] = @["KTP","KTM"]

Karena sekuens bisa diubah, kita bisa menambahkan data yang akan masuk ke posisi akhir koleksi mengunakan metod add milik tipe data sekuens. Metod add membutuhkan argumen nilai, add(<ini argumen>) yang sesuai dengan tipe data nilai di dalam sekuens.

var isiDompet : seq[string] = @["KTP","KTM"]

echo isiDompet
# @[KTP , KTM]

isiDompet.add("Rp. 10000")

echo isiDompet
# @[KTP,KTM,Rp. 10000]

Contoh kode diatas kita bisa kita lihat isiDompet bertambah satu elemen baru yaitu Rp. 10000. Jika kita gambarkan tabel index posisi dan nilai maka akan sepert ini:

IndexNilai
0KTP
1KTM
2Rp. 10000

Misalkan Rp. 10000 ingin kita hapus dari variabel isiDompet (anggap uangnya dipakai), kita bisa menggunakan metod delete. Metod delete menghapus isi sekuens berdasarkan index posisinya.

var isiDompet : seq[string] = @["KTP","KTM"]

echo isiDompet
# @[KTP , KTM]

isiDompet.add("Rp. 10000")

echo isiDompet
# @[KTP,KTM,Rp. 10000]

isiDompet.delete(2)

echo isiDompet 
# @[KTP,KTM]

Sekuens memiliki ukuran yang berubah-ubah bagaimana cara kita untuk tahu berapa ukuran sebuah sekuens ? caranya menguankan metod len, metod len berguna untuk mengetahui berapa banyak isi nilai dari sekuens.

var nama = @["Anya","Bella"]
nama.add("Citra")
nama.add("Delia")
nama.add("Elsa")

echo nama.len()
# 5

Peringantan: Sequence bersifat mutable, penggunanya harus mengunakan kata kunci var