Perulangan — selama

Perulangan digunakan untuk mengeksekusi blok kode berulang kali selama kondisi terpenuhi.

Sintaks Dasar

Sintaks
selama kondisi {
    // kode yang diulang
}

Perulangan dengan Counter

Contoh — Hitungan 1 sampai 5
buat i = 1
selama i <= 5 {
    tampilkan("Hitungan:", i)
    i += 1
}
Output
Hitungan: 1
Hitungan: 2
Hitungan: 3
Hitungan: 4
Hitungan: 5

Iterasi melalui Array

Contoh
buat buah = ["Apel", "Mangga", "Pepaya", "Durian"]
buat i = 0

selama i < panjang(buah) {
    tampilkan(i + 1, ".", buah[i])
    i += 1
}
Output
1 . Apel
2 . Mangga
3 . Pepaya
4 . Durian

Menghentikan Loop — putus

Contoh
buat i = 1
selama i <= 10 {
    jika i == 6 {
        tampilkan("Berhenti di:", i)
        putus    // keluar dari loop
    }
    tampilkan(i)
    i += 1
}
Output
1
2
3
4
5
Berhenti di: 6

Lewati Iterasi — lanjut

Contoh — Cetak bilangan ganjil saja
buat i = 1
selama i <= 10 {
    jika i % 2 == 0 {
        i += 1
        lanjut   // lewati iterasi ini
    }
    tampilkan(i, "(ganjil)")
    i += 1
}
Output
1 (ganjil)
3 (ganjil)
5 (ganjil)
7 (ganjil)
9 (ganjil)

Loop Akumulasi

Contoh — Jumlah 1 + 2 + ... + 100
buat i = 1
buat jumlah = 0

selama i <= 100 {
    jumlah += i
    i += 1
}

tampilkan("Jumlah 1 s.d. 100 =", jumlah)
Output
Jumlah 1 s.d. 100 = 5050

Loop Bersarang (Nested Loop)

Contoh — Tabel Perkalian
buat i = 1
selama i <= 3 {
    buat j = 1
    selama j <= 3 {
        tampilkan(ke_teks(i) + " x " + ke_teks(j) + " = " + ke_teks(i * j))
        j += 1
    }
    i += 1
}
Output
1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
Pastikan kondisi loop akan menjadi salah pada suatu saat, atau gunakan putus, untuk menghindari infinite loop yang membuat program tidak berhenti.

For-Each — untuk ... dalam

NusaScript mendukung loop for-each yang lebih ekspresif untuk iterasi array, peta, string, dan range bilangan.

SintaksDeskripsi
untuk x dalam array { }Iterasi setiap elemen
untuk i, x dalam array { }Iterasi dengan indeks
untuk n dalam 10 { }Iterasi range 0..9
untuk k, v dalam peta { }Iterasi kunci dan nilai peta
untuk c dalam "teks" { }Iterasi per karakter
Contoh — Iterasi Array
buat buah = ["apel", "mangga", "jeruk"]

// Cara lama (selama)
// buat i = 0
// selama i < panjang(buah) { tampilkan(buah[i]); i += 1 }

// Cara baru (untuk...dalam) — jauh lebih ringkas
untuk b dalam buah {
    tampilkan("Buah:", b)
}
Output
Buah: apel
Buah: mangga
Buah: jeruk
Contoh — Dengan Indeks
buat kota = ["Jakarta", "Surabaya", "Bandung"]

untuk i, k dalam kota {
    tampilkan("[" + i + "] " + k)
}
Output
[0] Jakarta
[1] Surabaya
[2] Bandung
Contoh — Range Bilangan
// Iterasi 0 sampai 4
untuk n dalam 5 {
    tampilkan("n =", n)
}
Output
n = 0
n = 1
n = 2
n = 3
n = 4
Contoh — Iterasi Peta
buat profil = peta("nama", "Budi", "kota", "Jakarta", "umur", 25)

untuk kunci, nilai dalam profil {
    tampilkan(kunci + ": " + nilai)
}
Output
nama: Budi
kota: Jakarta
umur: 25
Contoh — Iterasi String
untuk c dalam "Nusa" {
    tampilkan(c)
}
Output
N
u
s
a

String Interpolation — ${...}

Sisipkan variabel atau ekspresi langsung di dalam string menggunakan ${}.

Contoh — Interpolasi Variabel & Ekspresi
buat nama = "Dewi"
buat umur = 22
buat kota = "Bandung"

// Tanpa interpolasi (cara lama)
tampilkan("Halo " + nama + ", umur " + umur + " dari " + kota)

// Dengan interpolasi (jauh lebih bersih!)
tampilkan("Halo ${nama}, umur ${umur} dari ${kota}")

// Ekspresi langsung di dalam ${}
buat harga = 50000
buat qty = 3
tampilkan("Total: Rp ${harga * qty}")
tampilkan("Huruf besar: ${huruf_besar(nama)}")
Output
Halo Dewi, umur 22 dari Bandung
Halo Dewi, umur 22 dari Bandung
Total: Rp 150000
Huruf besar: DEWI