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:
Index | Nilai |
---|---|
0 | KTP |
1 | KTM |
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:
Index | Nilai |
---|---|
0 | KTP |
1 | KTM |
2 | Rp. 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