Lewati ke isi
JRG++JRG++ v0.2.0

JRG 7 · Dasar JRG

Array & Teks

Menyimpan banyak nilai dalam satu nama, dan mengolah kalimat. Dua tipe yang paling sering kamu pakai sesudah angka.

koleksiArray: deretan nilai

array.jrg
pub fn main() {
    let nilai = [70, 85, 90, 65]
    wok(nilai)
    wok("Jumlah data:", len(nilai))
    wok("Yang pertama:", nilai[0])
    wok("Yang terakhir:", nilai[len(nilai) - 1])
}
[70, 85, 90, 65]
Jumlah data: 4
Yang pertama: 70
Yang terakhir: 65

JRG punya jalan pintas untuk posisi dari belakang: angka negatif.

negatif.jrg
pub fn main() {
    let a = [10, 20, 30, 40]
    wok(a[-1], a[-2])     // dari belakang
}
40 30
luar-batas.jrg
pub fn main() {
    let a = [10, 20]
    wok(a[5])
}
error: index [5] di luar batas — array ini isinya 2 elemen (index valid: 0..1, atau -1..-2 kalau mau hitung dari belakang)
 --> luar-batas.jrg:3:9
  |
3 |     wok(a[5])
  |         ^^^^
  |

Mengiris array

iris.jrg
pub fn main() {
    let a = [1, 2, 3, 4, 5, 6]
    wok(a[0:3])      // tiga pertama
    wok(a[3:])       // dari posisi 3 sampai habis
    wok(a[:2])       // sampai sebelum posisi 2
}
[1, 2, 3]
[4, 5, 6]
[1, 2]

Fungsi bawaan untuk array

FungsiHasilnyaCatatan
arr::sum(a)Jumlah semua isiint kalau isinya int
arr::mean(a)Rata-rataselalu float
arr::max(a) / minTerbesar / terkecilmempertahankan tipe
arr::sort(a)Urutan menaikmenghasilkan array baru
arr::contains(a, x)Ada isinya atau tidaktrue/false
arr::push(a, x)Array baru + satu elemenyang lama tidak berubah
arr.jrg
pub fn main() {
    let n = [8, 3, 10, 1]
    wok("Jumlah :", arr::sum(n))
    wok("Rata2  :", arr::mean(n))
    wok("Terbesar:", arr::max(n))
    wok("Urut   :", arr::sort(n))
    wok("Asli   :", n)
}
Jumlah : 22
Rata2  : 5.5
Terbesar: 10
Urut   : [1, 3, 8, 10]
Asli   : [8, 3, 10, 1]
tugaskan.jrg
pub fn main() {
    var n = [8, 3, 10, 1]
    n = arr::sort(n)
    n = arr::push(n, 99)
    wok(n)
}
[1, 3, 8, 10, 99]

Teks (string)

teks.jrg
pub fn main() {
    let s = "Belajar JRG"
    wok("Panjang     :", len(s))
    wok("Huruf besar :", str::upper(s))
    wok("Ada 'JRG'?  :", str::contains(s, "JRG"))
    wok("Ganti       :", str::replace(s, "JRG", "matematika"))
}
Panjang     : 11
Huruf besar : BELAJAR JRG
Ada 'JRG'?  : true
Ganti       : Belajar matematika

Menyambung teks memakai +. Kalau salah satu sisinya angka, angkanya diubah jadi teks.

sambung-teks.jrg
pub fn main() {
    let nama = "Sari"
    let umur = 17
    wok(nama + " berumur " + umur + " tahun")
}
Sari berumur 17 tahun

Menyusun teks rapi dengan str::format

Tanda {} diisi berurutan oleh nilai-nilai sesudahnya. Untuk membatasi angka di belakang koma, pakai {:.N}.

format.jrg
pub fn main() {
    let harga = 12500.0
    let jumlah = 3
    wok(str::format("{} barang x Rp{} = Rp{}", jumlah, harga, harga * 3.0))
    wok(str::format("Nilai rata-rata: {:.2}", 79.28571))
}
3 barang x Rp12500.0 = Rp37500.0
Nilai rata-rata: 79.29

Memecah dan menggabung

pecah.jrg
pub fn main() {
    let baris = "sari,budi,tono"
    let nama = str::split(baris, ",")
    wok(nama)
    wok("Ada", len(nama), "nama")
    wok(str::join(nama, " & "))
}
[sari, budi, tono]
Ada 3 nama
sari & budi & tono

Kuis 1

Posisi elemen pertama sebuah array adalah?

Kuis 2

Sesudah arr::sort(n), apakah isi n ikut terurut?

Kuis 3

Apa hasil str::format("{:.1}", 3.456)?

Latihan mandiri

1. Dari [12, 7, 25, 3], cetak selisih terbesar dan terkecil.

2. Hitung berapa huruf pada kalimat "Saya belajar JRG" tanpa menghitung spasi.

Jawaban 1: arr::max(a) - arr::min(a) → 22.
Jawaban 2: len(str::replace(s, " ", "")) → 14.