percabanganif-elseswitchPemula5 mnt baca

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

dart
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:

dart
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:

dart
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, atau throw. 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:

dart
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.