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
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: 65JRG punya jalan pintas untuk posisi dari belakang: angka negatif.
pub fn main() {
let a = [10, 20, 30, 40]
wok(a[-1], a[-2]) // dari belakang
}40 30pub 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
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
| Fungsi | Hasilnya | Catatan |
|---|---|---|
arr::sum(a) | Jumlah semua isi | int kalau isinya int |
arr::mean(a) | Rata-rata | selalu float |
arr::max(a) / min | Terbesar / terkecil | mempertahankan tipe |
arr::sort(a) | Urutan menaik | menghasilkan array baru |
arr::contains(a, x) | Ada isinya atau tidak | true/false |
arr::push(a, x) | Array baru + satu elemen | yang lama tidak berubah |
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]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)
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 matematikaMenyambung teks memakai +. Kalau salah satu sisinya angka, angkanya diubah jadi teks.
pub fn main() {
let nama = "Sari"
let umur = 17
wok(nama + " berumur " + umur + " tahun")
}Sari berumur 17 tahunMenyusun teks rapi dengan str::format
Tanda {} diisi berurutan oleh nilai-nilai sesudahnya. Untuk membatasi angka di belakang koma, pakai {:.N}.
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.29Memecah dan menggabung
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 & tonoKuis 1
Posisi elemen pertama sebuah array adalah?
Tepat. Elemen pertama ada di posisi 0.
Di JRG (seperti kebanyakan bahasa) penomoran dimulai dari nol.
Kuis 2
Sesudah arr::sort(n), apakah isi n ikut terurut?
Betul. Simpan hasilnya kalau kamu memerlukannya: n = arr::sort(n).
Coba jalankan contoh arr.jrg di atas dan lihat baris terakhirnya.
Kuis 3
Apa hasil str::format("{:.1}", 3.456)?
Tepat — satu angka di belakang koma, dan nilainya dibulatkan.
{:.1} membulatkan ke satu angka di belakang koma.
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.
arr::max(a) - arr::min(a) → 22.len(str::replace(s, " ", "")) → 14.