Keputusan dengan if / else
Membuat program bercabang: if/else di AHA! Lang adalah ekspresi yang menghasilkan nilai.
Keputusan dengan if / else
Program yang menarik harus bisa mengambil keputusan: "jika hujan, bawa payung". Di AHA! Lang, keputusan ditulis dengan if dan else.
Bentuk Dasar
let nilai = 80;
if nilai >= 70 {
print_str("Lulus\n");
} else {
print_str("Tidak lulus\n");
}Struktur:
if <kondisi> {
...kode kalau kondisi benar...
} else {
...kode kalau kondisi salah...
}- Kondisi adalah sebuah ekspresi yang menghasilkan
1(benar) atau0(salah) — biasanya perbandingan. - Blok
elseboleh dihilangkan jika tidak dibutuhkan.
if / else adalah Ekspresi
Inilah keistimewaan AHA! Lang: if/else menghasilkan sebuah nilai. Nilai itu adalah hasil dari ekspresi terakhir di cabang yang dijalankan.
let x = 10;
let y = 20;
let terbesar = if x > y { x } else { y };
print(terbesar); // 20Tidak ada variabel yang diisi di dalam cabang — cabang menghasilkan nilainya langsung. Program jadi lebih pendek dan lebih jelas.
Bandingkan dengan gaya imperatif biasa (yang juga bisa):
let terbesar = 0;
if x > y {
terbesar = x;
} else {
terbesar = y;
}Kedua cara valid, tapi versi ekspresi tanpa terbesar-awal yang bisa salah dimengerti.
Cabang Bertingkat
Cabang else bisa berisi if lagi — untuk keputusan berjenjang:
let nilai = 85;
// nilai: A jika >= 85, B jika >= 70, selain itu C
let grade = if nilai >= 85 {
"A"
} else {
if nilai >= 70 {
"B"
} else {
"C"
}
};
print_str(grade + "\n"); // APerhatikan: setiap cabang mengembalikan string, jadi variabel grade bertipe String.
Menggabungkan Kondisi
Kombinasikan beberapa kondisi dengan && dan ||:
let umur = 20;
let punya_ktp = 1;
if umur >= 17 && punya_ktp == 1 {
print_str("Boleh membuat KTP\n");
}Sistem Nilai AHA! yang Komposisional
Karena if adalah ekspresi dan hasil logika adalah Int, semuanya bisa dirangkai dengan bebas:
let x = 42;
// Inspirasi "Fizz" dari FizzBuzz: kelipatan 3
let label = if x % 3 == 0 { "Fizz" } else { "Bukan Fizz" };
print_str(label + "\n");Ini adalah salah satu hal yang membuat AHA! Lang terasa seperti "alfabet yang bisa dikomposisikan".
Latihan
- Tulis program yang mencetak "Genap" atau "Ganjil" berdasarkan sebuah variabel angka (petunjuk:
angka % 2). - Buat fungsi
tanda(n)yang mengembalikan"Positif"jikan > 0,"Negatif"jikan < 0, dan"Nol"jikan == 0. (Petunjuk: cabang bertingkat.) - Gunakan
ifsebagai ekspresi: simpan dalam variabeldiskon—10jikatotal > 100000, selain itu0— lalu cetaktotal - diskon.
Lanjut ke Perulangan dengan while