Percabangan: if, else, dan switch
Membuat program mengambil keputusan dengan if-else, else-if, switch, dan ternary.
Program yang bisa berpikir
Tanpa percabangan, program hanya jalan lurus dari atas ke bawah. Percabangan membuat program bisa memilih jalan berdasarkan kondisi.
if dan else
void main() {
int nilai = 85;
if (nilai >= 90) {
print('A, luar biasa!');
} else if (nilai >= 75) {
print('B, bagus!');
} else if (nilai >= 60) {
print('C, cukup.');
} else {
print('Belajar lagi ya.');
}
}Dart mengecek dari atas ke bawah dan berhenti di kondisi pertama yang true. Karena 85 masuk rentang >= 75, outputnya B, bagus!.
Ternary: if-else satu baris
Untuk pilihan sederhana antara dua nilai, ada sintaks ringkas:
void main() {
int umur = 17;
String status = umur >= 17 ? 'Dewasa' : 'Anak-anak';
print(status); // Dewasa
}Pola kondisi ? nilaiJikaTrue : nilaiJikaFalse ini sangat sering muncul di Flutter, mis. menentukan warna atau teks widget berdasarkan state.
switch: banyak pilihan rapi
Kalau pilihannya banyak dan membandingkan satu nilai yang sama, switch lebih rapi dari else if berlapis:
void main() {
String hari = 'Sabtu';
switch (hari) {
case 'Senin':
print('Awal minggu, semangat!');
break;
case 'Sabtu':
case 'Minggu':
print('Akhir pekan!');
break;
default:
print('Hari biasa.');
}
}Setiap case butuh break (atau return/continue) supaya tidak "bocor" ke case berikutnya. Beberapa case boleh digabung seperti Sabtu dan Minggu di atas.
Catatan teknis: Berbeda dengan C atau Java, Dart tidak mengizinkan fall-through kosong. Setiap case yang tidak kosong wajib diakhiri
break,return,continue, atauthrow. Kalau lupa, compiler langsung protes. Ini fitur keamanan, bukan kekurangan.
Switch modern (Dart 3+)
Dart versi baru punya switch expression yang bisa mengembalikan nilai langsung:
void main() {
int nilai = 85;
String grade = switch (nilai) {
>= 90 => 'A',
>= 75 => 'B',
>= 60 => 'C',
_ => 'D',
};
print(grade); // B
}Tanda _ adalah wildcard untuk "sisanya". Sintaks ini ringkas tapi butuh Dart 3 ke atas. DartPad selalu pakai versi terbaru, jadi aman dicoba.
Kapan pakai yang mana?
- if/else: kondisi bervariasi, perbandingan kompleks
- ternary: pilih satu dari dua nilai, cocok untuk assignment singkat
- switch: satu variabel dibandingkan dengan banyak nilai tetap
Aturan praktis: kalau else if-nya sudah lebih dari tiga dan semuanya membandingkan variabel yang sama, pindahkan ke switch. Kode langsung terlihat lebih bersih.