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

JRG 4 · Dasar JRG

Percabangan: if & match

Membuat program memilih jalan. Dua cara: satu untuk syarat bebas, satu untuk mencocokkan nilai.

logikaif — kalau begini, lakukan itu

if.jrg
pub fn main() {
    let nilai = 82
    if nilai >= 75 {
        wok("Lulus")
    } else {
        wok("Belum lulus")
    }
}
Lulus

Beberapa cabang

elseif.jrg
fn grade(n: int) -> string {
    if n >= 90 { return "A" }
    else if n >= 80 { return "B" }
    else if n >= 70 { return "C" }
    else { return "D" }
}

pub fn main() {
    wok(95, "->", grade(95))
    wok(83, "->", grade(83))
    wok(60, "->", grade(60))
}
95 -> A
83 -> B
60 -> D

if juga menghasilkan nilai

Di JRG, if bukan cuma pernyataan — ia bisa dipakai langsung sebagai nilai.

if-nilai.jrg
pub fn main() {
    let umur = 20
    let status = if umur >= 17 { "dewasa" } else { "anak" }
    wok(status)
}
dewasa
ternary.jrg
pub fn main() {
    let n = 7
    wok(n % 2 == 0 $ "genap" : "ganjil")
}
ganjil

match — mencocokkan nilai

Kalau kamu membandingkan satu nilai dengan banyak kemungkinan, match jauh lebih rapi daripada tumpukan else if.

match.jrg
fn namaHari(n: int) -> string {
    return match n {
        1 => "Senin",
        2 => "Selasa",
        3 => "Rabu",
        6 | 7 => "Akhir pekan",
        _ => "Hari lain"
    }
}

pub fn main() {
    wok(namaHari(1))
    wok(namaHari(6))
    wok(namaHari(4))
}
Senin
Akhir pekan
Hari lain
PolaCocok dengan
3Nilai tepat 3
6 | 76 atau 7
1..=5Rentang 1 sampai 5
n if n > 100Nilai apa pun, asal lebih dari 100
_Apa pun — taruh paling bawah
match-rentang.jrg
fn kategori(n: int) -> string {
    return match n {
        0 => "kosong",
        1..=9 => "satuan",
        10..=99 => "puluhan",
        x if x < 0 => "negatif",
        _ => "besar"
    }
}

pub fn main() {
    wok(kategori(0), kategori(5), kategori(42))
    wok(kategori(-3), kategori(1000))
}
kosong satuan puluhan
negatif besar

Kuis 1

Apa hasil if 5 > 3 { "ya" } else { "tidak" }?

Kuis 2

Kenapa _ ditaruh paling bawah di match?

Kuis 3

Pembuka bentuk ringkas percabangan di JRG adalah?

Latihan mandiri

1. Tulis fungsi yang menerima angka dan mengembalikan "positif", "negatif", atau "nol".

2. Tulis ulang fungsi itu memakai match.

Jawaban 1: tiga cabang if/else if/else, periksa > 0 lalu < 0.
Jawaban 2: match n { 0 => "nol", x if x > 0 => "positif", _ => "negatif" }.