Masukkan Password
18 2.4 Switch Case in Dart Programming Language | Condition in Dart | Learn Dart Language | Dart Course
Kali ini kita masuk ke switch-case di Dart. Materi ini masih berkaitan erat dengan if, else if, dan else, karena semuanya digunakan untuk mengontrol alur program berdasarkan suatu kondisi/nilai.
Ada beberapa kesalahan transkripsi di caption seperti “do programming” yang maksudnya Dart programming, dan “mail/female” yang maksudnya male/female. Saya akan menggunakan istilah dan kode Dart yang benar.
1. Apa itu switch-case?
Secara sederhana:
switch-casedigunakan ketika kita ingin membandingkan satu nilai dengan beberapa kemungkinan nilai.
Misalnya kita mempunyai:
int day = 2;
Kita ingin mengatakan:
kalau day = 1 → Sunday
kalau day = 2 → Monday
kalau day = 3 → Tuesday
kalau selain itu → Invalid
Dengan if-else if, kita bisa menulis:
if (day == 1) {
print("Sunday");
} else if (day == 2) {
print("Monday");
} else if (day == 3) {
print("Tuesday");
} else {
print("Invalid");
}
Tetapi kita juga bisa menggunakan switch-case:
switch (day) {
case 1:
print("Sunday");
break;
case 2:
print("Monday");
break;
case 3:
print("Tuesday");
break;
default:
print("Invalid");
}
Jadi switch-case bisa menjadi cara yang lebih terstruktur ketika kita mempunyai satu nilai dengan banyak kemungkinan.
2. Bentuk dasar switch-case
Bentuk sederhananya:
switch (expression) {
case value1:
// kode
break;
case value2:
// kode
break;
case value3:
// kode
break;
default:
// kode jika tidak ada yang cocok
}
Mari kita pecah.
switch
switch (expression)
Artinya:
“Saya ingin memeriksa nilai dari expression ini.”
Misalnya:
switch (day)
Berarti Dart akan melihat nilai day.
case
case 1:
Artinya:
“Kalau nilai yang diperiksa sama dengan
1, jalankan bagian ini.”
Kemudian:
case 2:
berarti:
“Kalau nilainya
2, jalankan bagian ini.”
Dan seterusnya.
default
default:
Artinya:
“Kalau tidak ada
caseyang cocok, jalankan bagian ini.”
Ini mirip dengan else pada if.
3. Contoh paling sederhana
Mari kita mulai dengan contoh yang sangat sederhana:
void main() {
int day = 1;
switch (day) {
case 1:
print("Sunday");
break;
case 2:
print("Monday");
break;
case 3:
print("Tuesday");
break;
default:
print("Invalid day");
}
}
Karena:
day = 1;
Dart mencari:
case 1
case 2
case 3
Yang cocok adalah:
case 1
Maka output:
Sunday
4. Kalau nilainya 2
Sekarang:
int day = 2;
Dart akan mencari case yang cocok.
day = 2
↓
case 1 ❌
case 2 ✅
case 3 ❌
Maka:
Monday
5. Kalau nilainya 3
int day = 3;
Maka:
case 1 ❌
case 2 ❌
case 3 ✅
Output:
Tuesday
6. Apa fungsi default?
Sekarang misalnya:
int day = 100;
Kita hanya mempunyai:
case 1
case 2
case 3
Tidak ada yang cocok.
Maka Dart menjalankan:
default:
Contoh:
switch (day) {
case 1:
print("Sunday");
break;
case 2:
print("Monday");
break;
case 3:
print("Tuesday");
break;
default:
print("Invalid day");
}
Output:
Invalid day
Jadi default bisa kita anggap seperti else.
7. Analogi sederhana
Bayangkan kamu punya sebuah mesin pilihan.
Kamu memasukkan angka:
2
Mesin akan mencari:
Apakah 2?
↓
case 1 → ❌
case 2 → ✅
↓
Monday
Kalau kamu memasukkan:
100
mesin mencari:
case 1 → ❌
case 2 → ❌
case 3 → ❌
↓
default
↓
Invalid day
Jadi cara berpikirnya:
switchmelihat satu nilai, lalu mencaricaseyang nilainya cocok.
8. switch-case dengan Boolean
Video juga memberikan contoh Boolean.
Misalnya:
bool isMale = true;
Karena Boolean hanya mempunyai dua kemungkinan:
true
false
kita bisa membuat:
switch (isMale) {
case true:
print("Male");
break;
case false:
print("Female");
break;
}
Kalau:
isMale = true;
output:
Male
Kalau:
isMale = false;
output:
Female
9. Tapi apakah switch selalu pilihan terbaik untuk Boolean?
Tidak selalu.
Untuk kasus sesederhana:
bool isMale = true;
biasanya if-else lebih natural:
if (isMale) {
print("Male");
} else {
print("Female");
}
Jadi jangan berpikir:
“Kalau bisa menggunakan switch, berarti harus menggunakan switch.”
Tidak.
Kita memilih struktur yang membuat kode lebih mudah dibaca dan dipahami.
10. switch dengan String
switch juga bisa digunakan untuk String.
Misalnya:
String name = "Ali";
Kemudian:
switch (name) {
case "Ahad":
print("Hello Ahad");
break;
case "Ali":
print("Hello Ali");
break;
default:
print("Unknown name");
}
Karena:
name = "Ali"
maka:
case "Ahad" → ❌
case "Ali" → ✅
Output:
Hello Ali
11. Perbandingan switch dengan String
Misalnya:
String name = "Ahad";
switch (name) {
case "Ahad":
print("Name is Ahad");
break;
case "Ali":
print("Name is Ali");
break;
default:
print("Unknown name");
}
Kalau name adalah:
Ahad
maka case "Ahad" yang dijalankan.
Kalau:
Ali
maka case "Ali".
Kalau:
Budi
maka tidak ada yang cocok dan masuk:
default
12. switch bukan membandingkan “lebih besar” atau “lebih kecil”
Ini perbedaan penting dengan if.
Dengan if, kita bisa menulis:
if (age >= 18) {
print("Adult");
}
Kita membandingkan:
>=
Tetapi switch-case pada pola dasar seperti yang dibahas di video lebih cocok untuk mencocokkan nilai tertentu:
case 18:
case 19:
case 20:
Jadi misalnya kamu ingin:
Jika umur lebih besar atau sama dengan 18 → Adult.
if lebih cocok:
if (age >= 18) {
print("Adult");
}
Sedangkan switch cocok ketika pilihan nilainya sudah jelas:
1 → Sunday
2 → Monday
3 → Tuesday
13. switch vs if-else if
Misalnya kita ingin menentukan hari.
Dengan if-else if
if (day == 1) {
print("Sunday");
} else if (day == 2) {
print("Monday");
} else if (day == 3) {
print("Tuesday");
} else {
print("Invalid");
}
Dengan switch
switch (day) {
case 1:
print("Sunday");
break;
case 2:
print("Monday");
break;
case 3:
print("Tuesday");
break;
default:
print("Invalid");
}
Untuk kondisi seperti ini, switch sering terasa lebih rapi karena kita memang sedang memilih berdasarkan satu nilai day.
14. Bagian paling penting: break
Video cukup banyak membahas break.
Dalam bentuk klasik switch, break digunakan untuk mengatakan:
“Case ini sudah selesai. Jangan lanjut ke case berikutnya.”
Contoh:
switch (day) {
case 1:
print("Sunday");
break;
case 2:
print("Monday");
break;
case 3:
print("Tuesday");
break;
}
Kalau day = 2:
case 1 → tidak cocok
case 2 → cocok
print("Monday")
break
break menghentikan proses switch.
15. Mengapa break penting?
Dalam Dart modern, aturan switch tidak persis sama dengan beberapa bahasa seperti C/C++/Java yang melakukan automatic fall-through. Untuk pola case biasa, Dart mengharuskan case selesai secara eksplisit, misalnya dengan break, return, throw, atau bentuk kontrol lain yang valid.
Ada juga bentuk khusus seperti empty case yang sengaja melakukan fall-through, yang dibahas dalam konsep lanjutan Dart.
Jadi bagian caption yang mengatakan:
“Kalau case kosong maka otomatis masuk ke case berikutnya”
perlu diberi catatan.
Untuk pemula, jangan menganggap semua case Dart otomatis jatuh ke case berikutnya. Gunakan break untuk mengakhiri case biasa, dan pahami aturan fall-through Dart secara khusus ketika sudah masuk materi lanjutan.
16. Contoh break
int day = 1;
switch (day) {
case 1:
print("Sunday");
break;
case 2:
print("Monday");
break;
case 3:
print("Tuesday");
break;
default:
print("Invalid");
}
Output:
Sunday
Setelah:
print("Sunday");
dijalankan:
break;
mengakhiri switch.
Program tidak perlu memproses case berikutnya.
17. break juga kita kenal dari materi loop
Nanti ketika belajar loop, kamu akan bertemu lagi dengan:
break;
Konsep umumnya:
break= hentikan struktur yang sedang berjalan.
Contoh dalam switch:
case 1:
print("Sunday");
break;
Artinya keluar dari switch.
Nanti dalam loop:
for (...) {
if (...) {
break;
}
}
artinya keluar dari loop.
Jadi mulai biasakan memahami break sebagai:
“Berhenti dari struktur ini.”
18. default seperti else
Ada hubungan yang cukup mudah diingat:
if → kondisi pertama
else if → kondisi berikutnya
else → tidak ada yang cocok
Sedangkan:
switch → nilai yang diperiksa
case → kemungkinan nilai
default → tidak ada case yang cocok
Contohnya:
if (day == 1) {
print("Sunday");
} else if (day == 2) {
print("Monday");
} else {
print("Invalid");
}
Kurang lebih konsepnya sama dengan:
switch (day) {
case 1:
print("Sunday");
break;
case 2:
print("Monday");
break;
default:
print("Invalid");
}
19. Contoh aplikasi: menu
Ini salah satu penggunaan switch yang sangat umum.
Misalnya aplikasi mempunyai menu:
1. Profile
2. Settings
3. Logout
Kita bisa membuat:
int menu = 2;
switch (menu) {
case 1:
print("Opening profile...");
break;
case 2:
print("Opening settings...");
break;
case 3:
print("Logging out...");
break;
default:
print("Invalid menu");
}
Karena:
menu = 2
output:
Opening settings...
20. Contoh dengan input user
Sekarang kita gabungkan dengan materi user input yang sudah kita pelajari.
import 'dart:io';
void main() {
print("Choose a menu:");
print("1. Profile");
print("2. Settings");
print("3. Logout");
int menu = int.parse(stdin.readLineSync()!);
switch (menu) {
case 1:
print("Opening profile...");
break;
case 2:
print("Opening settings...");
break;
case 3:
print("Logging out...");
break;
default:
print("Invalid menu");
}
}
Misalnya user memasukkan:
2
maka:
Opening settings...
21. Perhatikan hubungan dengan materi sebelumnya
Di sini kita menggunakan beberapa materi sekaligus:
dart:io
import 'dart:io';
Untuk input user.
stdin.readLineSync()
stdin.readLineSync()!
Untuk membaca input.
int.parse()
int.parse(...)
Untuk mengubah String menjadi int.
Variable
int menu
Untuk menyimpan pilihan.
switch
switch (menu)
Untuk menentukan tindakan.
case
case 1:
case 2:
case 3:
Untuk menentukan pilihan.
break
Untuk mengakhiri case.
default
Untuk menangani pilihan yang tidak tersedia.
Ini menunjukkan bahwa materi Dart mulai saling terhubung.
22. Contoh aplikasi: pilihan bahasa
Misalnya:
String language = "id";
switch (language) {
case "id":
print("Bahasa Indonesia");
break;
case "en":
print("English");
break;
case "jp":
print("Japanese");
break;
default:
print("Unknown language");
}
Kalau:
language = "id"
output:
Bahasa Indonesia
Kalau:
language = "en"
output:
English
23. switch sangat cocok untuk pilihan yang jelas
Misalnya:
Status:
1 → Pending
2 → Processing
3 → Completed
4 → Cancelled
Ini sangat cocok dengan switch:
int status = 3;
switch (status) {
case 1:
print("Pending");
break;
case 2:
print("Processing");
break;
case 3:
print("Completed");
break;
case 4:
print("Cancelled");
break;
default:
print("Unknown status");
}
Output:
Completed
24. Kapan sebaiknya menggunakan if?
Gunakan if ketika kondisinya berupa rentang atau perbandingan.
Misalnya:
int score = 85;
if (score >= 80) {
print("A");
} else if (score >= 60) {
print("B");
} else {
print("C");
}
Di sini kita menggunakan:
>=
dan terdapat rentang nilai.
if-else if sangat cocok untuk situasi seperti ini.
25. Kapan sebaiknya menggunakan switch?
Gunakan switch ketika kamu memiliki satu nilai dengan beberapa pilihan yang spesifik.
Contohnya:
day = 1
day = 2
day = 3
...
atau:
menu = 1
menu = 2
menu = 3
atau:
status = "pending"
status = "completed"
status = "cancelled"
Pola pikirnya:
Satu nilai
↓
punya banyak kemungkinan spesifik
↓
switch-case
26. Perbandingan if dan switch
if-else | switch-case | ||
|---|---|---|---|
| Cocok untuk kondisi kompleks | Cocok untuk pilihan nilai spesifik | ||
Bisa >, <, >=, <= | Cocok untuk mencocokkan nilai | ||
Bisa menggunakan &&, ` | ` | Berpusat pada expression yang diperiksa | |
| Cocok untuk rentang | Cocok untuk pilihan | ||
else | default | ||
Kondisi → true/false | Nilai → dicocokkan dengan case |
Contoh if:
if (age >= 18) {
print("Adult");
}
Contoh switch:
switch (day) {
case 1:
print("Sunday");
break;
}
27. Kesalahan yang sering dilakukan pemula
Kesalahan 1 — Lupa break
Untuk case biasa, biasakan menulis:
case 1:
print("Sunday");
break;
Jangan asal menghilangkan break.
Kesalahan 2 — Menggunakan = bukannya nilai/case yang benar
Ingat:
=
adalah assignment.
Sedangkan dalam pembandingan nilai sebelumnya kita mengenal:
==
Namun pada case, kamu tidak menulis:
case day == 1:
Melainkan:
case 1:
Karena switch sudah membandingkan expression dengan nilai case.
Kesalahan 3 — Mengira default wajib
Tidak selalu.
Contoh:
switch (day) {
case 1:
print("Sunday");
break;
case 2:
print("Monday");
break;
}
default boleh ada dan biasanya berguna untuk menangani nilai yang tidak dikenal, tetapi bukan berarti setiap switch harus selalu mempunyai default.
Kesalahan 4 — Menggunakan switch untuk semua kondisi
Tidak semua kondisi cocok dengan switch.
Misalnya:
if (temperature > 30) {
print("Hot");
}
lebih natural menggunakan if.
Jangan memaksakan switch hanya karena baru mempelajarinya.
28. Cara membaca switch dengan mudah
Kalau melihat:
switch (day) {
case 1:
print("Sunday");
break;
case 2:
print("Monday");
break;
default:
print("Invalid");
}
bacalah dalam bahasa manusia:
“Lihat nilai
day.”
Kemudian:
“Kalau
dayadalah 1, cetak Sunday.”
“Kalau
dayadalah 2, cetak Monday.”
“Kalau tidak ada yang cocok, cetak Invalid.”
Itulah inti switch-case.
29. Contoh lengkap dengan 7 hari
Sekarang kita buat contoh yang lebih lengkap:
int day = 5;
switch (day) {
case 1:
print("Sunday");
break;
case 2:
print("Monday");
break;
case 3:
print("Tuesday");
break;
case 4:
print("Wednesday");
break;
case 5:
print("Thursday");
break;
case 6:
print("Friday");
break;
case 7:
print("Saturday");
break;
default:
print("Invalid day");
}
Karena:
day = 5
maka output:
Thursday
30. Gambarkan alurnya seperti ini
day
↓
┌──── switch ────┐
│ │
↓ ↓
case 1? case 2?
│ │
❌ ❌
│ │
└──────┬─────────┘
↓
case 3?
│
❌
↓
...
↓
case 5?
│
✅
↓
print("Thursday")
↓
break
Kalau semua case tidak cocok:
case 1 ❌
case 2 ❌
case 3 ❌
...
case 7 ❌
↓
default
↓
"Invalid day"
31. Ringkasan konsep
Materi video ini bisa diringkas menjadi:
switch (nilai) {
case kemungkinan1:
// lakukan sesuatu
break;
case kemungkinan2:
// lakukan sesuatu
break;
default:
// jika tidak ada yang cocok
}
switch
Menentukan nilai yang akan diperiksa.
case
Kemungkinan nilai yang dicari.
break
Mengakhiri case/switch yang sedang dijalankan.
default
Dijalankan ketika tidak ada case yang cocok.
32. Cheat sheet
| Keyword | Fungsi sederhana |
|---|---|
switch | Memeriksa satu expression/nilai |
case | Menentukan kemungkinan nilai |
break | Mengakhiri case/switch |
default | Menangani kondisi ketika tidak ada case yang cocok |
Cara mengingatnya:
switch= pilih berdasarkan nilai.
Contohnya:
day = 1 → Sunday
day = 2 → Monday
day = 3 → Tuesday
lainnya → Invalid
33. Latihan
Coba tebak output sebelum menjalankannya.
Latihan 1
int number = 2;
switch (number) {
case 1:
print("A");
break;
case 2:
print("B");
break;
case 3:
print("C");
break;
default:
print("D");
}
Apa outputnya?
Latihan 2
String fruit = "Apple";
switch (fruit) {
case "Apple":
print("Red fruit");
break;
case "Banana":
print("Yellow fruit");
break;
default:
print("Unknown fruit");
}
Apa outputnya?
Latihan 3
int menu = 5;
switch (menu) {
case 1:
print("Profile");
break;
case 2:
print("Settings");
break;
case 3:
print("Logout");
break;
default:
print("Invalid menu");
}
Apa outputnya?
Latihan 4
Coba ubah program ini:
int day = 1;
switch (day) {
case 1:
print("Sunday");
break;
case 2:
print("Monday");
break;
case 3:
print("Tuesday");
break;
default:
print("Invalid");
}
menjadi program yang menerima day dari user menggunakan:
stdin.readLineSync()
dan:
int.parse()
Inti yang harus benar-benar kamu pahami
Jangan hanya menghafal syntax. Pahami kapan menggunakan switch.
Kalau kamu punya:
nilai → banyak pilihan spesifik
maka switch sangat cocok.
Misalnya:
1 → Sunday
2 → Monday
3 → Tuesday
Tetapi kalau kamu punya:
nilai >= 80
nilai >= 60
nilai >= 40
maka if-else if biasanya lebih cocok.
Jadi:
if
↓
"Apakah kondisi ini benar?"
switch
↓
"Nilai ini termasuk pilihan yang mana?"
Dan satu catatan penting dari video: jangan membawa aturan fall-through dari bahasa lain ke Dart secara mentah. Untuk case biasa, gunakan break/akhir kontrol yang valid; perilaku fall-through di Dart memiliki aturan khusus dan sebaiknya dipelajari sebagai materi lanjutan.