Masukkan Password
20 if else in Dart | Dart decision making | Dart tutorial Series #19
Transcript ini membahas Decision Making / percabangan kondisi di Dart. Ini adalah konsep yang sangat penting karena hampir semua program perlu mengambil keputusan:
“Kalau kondisinya begini, lakukan A. Kalau tidak, lakukan B.”
Di Dart, kita akan sering menggunakan if, else, else if, dan kombinasi-kombinasinya.
Saya jelaskan dari paling dasar sampai contoh yang lebih realistis.
1. Apa itu Decision Making?
Decision making berarti program bisa mengambil keputusan berdasarkan suatu kondisi.
Misalnya kita ingin membuat program:
Kalau umur >= 17
→ boleh membuat SIM
Kalau umur < 17
→ belum boleh membuat SIM
Program perlu memeriksa kondisi terlebih dahulu.
Di Dart, kita menggunakan:
if
else
else if
2. if — Percabangan paling dasar
Bentuk paling sederhana:
if (condition) {
// kode yang dijalankan
}
Contoh:
int age = 20;
if (age >= 17) {
print("Sudah cukup umur");
}
Karena:
age = 20
20 >= 17
↓
true
maka kode di dalam {} dijalankan:
Sudah cukup umur
3. Cara kerja if
Secara sederhana:
condition
↓
┌─────────┐
│ true? │
└─────────┘
↓ ↓
true false
↓ ↓
jalankan lewati
isi if isi if
Contoh:
int likes = 10;
if (likes > 0) {
print("Thanks for hitting like!");
}
Dart mengecek:
likes > 0
10 > 0
↓
true
Maka:
Thanks for hitting like!
akan dicetak.
4. Kondisi if harus menghasilkan bool
Ini penting.
Kondisi dalam if harus menghasilkan:
true
atau:
false
Contoh yang benar:
if (10 > 5) {
print("Benar");
}
Karena:
10 > 5
menghasilkan:
true
Contoh lainnya:
int age = 20;
if (age >= 18) {
print("Dewasa");
}
age >= 18 menghasilkan bool.
5. Tidak seperti JavaScript, Dart tidak menganggap angka sebagai boolean
Misalnya:
int x = 10;
if (x) {
print("Hello");
}
Ini tidak valid di Dart.
Dart tidak mengatakan:
10 → true
0 → false
Kondisi harus benar-benar bool.
Jadi harus seperti:
if (x > 0) {
print("x lebih besar dari 0");
}
6. Kurung kurawal {}
Secara bahasa Dart, kalau isi if hanya satu statement, kurung kurawal bisa saja tidak ditulis:
if (age >= 18)
print("Dewasa");
Tetapi sangat disarankan menggunakan {}:
if (age >= 18) {
print("Dewasa");
}
Kenapa?
Karena lebih aman dan mudah dibaca.
Terutama kalau nanti program berkembang:
if (age >= 18) {
print("Dewasa");
print("Boleh melakukan sesuatu");
print("Proses selesai");
}
Jadi biasakan dari awal:
if (condition) {
// kode
}
7. if tidak selalu melakukan sesuatu
Misalnya:
int likes = 0;
if (likes > 0) {
print("Thanks for hitting like!");
}
print("Thanks for watching");
Kondisinya:
0 > 0
↓
false
Maka:
print("Thanks for hitting like!");
dilewati.
Tetapi:
print("Thanks for watching");
tetap dijalankan karena berada di luar if.
Output:
Thanks for watching
Jadi ingat:
Kalau kondisi
iffalse, yang dilewati hanya kode di dalamif, bukan seluruh program.
8. if-else
Sekarang kita masuk ke if-else.
if-else digunakan ketika kita memiliki dua kemungkinan.
Contoh:
if (condition) {
// kalau true
} else {
// kalau false
}
Cara membacanya:
Kalau kondisi benar, lakukan A. Kalau salah, lakukan B.
9. Contoh menentukan bilangan genap atau ganjil
Misalnya:
int number = 10;
if (number % 2 == 0) {
print("Number is even");
} else {
print("Number is odd");
}
Perhatikan kondisi:
number % 2 == 0
Operator % menghasilkan sisa pembagian.
Untuk 10:
10 % 2
↓
0
Maka:
0 == 0
↓
true
Output:
Number is even
10. Kalau angkanya 5?
Ubah:
int number = 5;
Kemudian:
5 % 2
hasilnya:
1
Maka:
1 == 0
↓
false
Sehingga bagian else dijalankan:
Number is odd
11. Gambaran if-else
condition
↓
┌───────────┐
│ true / ? │
└───────────┘
↓ ↓
true false
↓ ↓
IF block ELSE block
Hanya salah satu yang dijalankan.
Misalnya:
if (age >= 18) {
print("Dewasa");
} else {
print("Belum dewasa");
}
Tidak mungkin dalam satu kali pemeriksaan kedua block tersebut dijalankan.
12. else if
Sekarang bagaimana kalau pilihannya bukan cuma dua?
Misalnya nilai ujian:
90–100 → A
80–89 → B
70–79 → C
60–69 → D
<60 → E
Kalau menggunakan if-else saja, kita akan kesulitan.
Untuk kondisi seperti ini kita menggunakan:
if
else if
else
Contoh:
int score = 85;
if (score >= 90) {
print("A");
} else if (score >= 80) {
print("B");
} else if (score >= 70) {
print("C");
} else if (score >= 60) {
print("D");
} else {
print("E");
}
13. Bagaimana else if bekerja?
Dart memeriksa kondisi dari atas ke bawah.
Untuk:
int score = 85;
Dart melakukan:
score >= 90?
85 >= 90
↓
false
Lanjut:
score >= 80?
85 >= 80
↓
true
Maka:
B
dijalankan.
Setelah menemukan kondisi yang benar, Dart berhenti memeriksa ladder tersebut.
Jadi kondisi berikutnya tidak perlu diperiksa.
14. Ini penting: urutan else if sangat berpengaruh
Misalnya:
int score = 95;
if (score >= 70) {
print("C");
} else if (score >= 90) {
print("A");
}
Mungkin kita berharap hasilnya A.
Tetapi hasilnya:
C
Kenapa?
Karena:
95 >= 70
↓
true
Dart langsung masuk ke block pertama.
Dia tidak melanjutkan ke:
else if (score >= 90)
Jadi biasanya kita menaruh kondisi yang lebih spesifik/lebih tinggi terlebih dahulu:
if (score >= 90) {
print("A");
} else if (score >= 70) {
print("C");
}
15. else adalah kondisi default
Bagian:
else {
// ...
}
akan dijalankan kalau semua kondisi sebelumnya false.
Contoh:
int score = 40;
if (score >= 90) {
print("A");
} else if (score >= 80) {
print("B");
} else if (score >= 70) {
print("C");
} else {
print("Tidak lulus");
}
Pengecekan:
40 >= 90 → false
40 >= 80 → false
40 >= 70 → false
semuanya false
↓
else
↓
Tidak lulus
Jadi else dapat dianggap sebagai:
“Kalau tidak ada satu pun kondisi di atas yang terpenuhi, lakukan ini.”
16. Nested if
Sekarang masuk ke bagian yang disebut transcript sebagai nested if.
Nested artinya:
if di dalam if.
Contoh:
if (condition1) {
if (condition2) {
print("Statement 1");
}
}
Jadi kita memiliki:
if
└── if
17. Cara kerja nested if
Contoh:
int age = 20;
bool hasTicket = true;
if (age >= 18) {
if (hasTicket) {
print("Boleh masuk");
}
}
Pertama Dart mengecek:
age >= 18?
20 >= 18
↓
true
Karena true, Dart masuk ke if pertama.
Kemudian mengecek:
hasTicket?
true
↓
true
Maka:
Boleh masuk
18. Kenapa nested if diperlukan?
Karena terkadang suatu kondisi hanya perlu diperiksa kalau kondisi sebelumnya terpenuhi.
Misalnya login.
Apakah user sudah login?
↓
YA
↓
Apakah user admin?
↓
YA
↓
Buka halaman admin
Implementasinya:
if (isLoggedIn) {
if (isAdmin) {
print("Open admin page");
}
}
Kalau user belum login, kita tidak perlu mengecek status admin.
19. Nested if dengan else
Kita juga bisa membuat:
if (condition1) {
if (condition2) {
print("Statement 1");
} else {
print("Statement 2");
}
} else {
if (condition3) {
print("Statement 3");
} else {
print("Statement 4");
}
}
Memang terlihat rumit, tetapi cara membacanya sebenarnya sederhana.
Pertama:
Apakah condition1 true?
Kalau true:
masuk ke bagian IF
↓
cek condition2
Kalau false:
masuk ke bagian ELSE
↓
cek condition3
20. Contoh mencari angka terbesar dari 3 angka
Ini contoh yang bagus untuk memahami nested if.
Misalnya:
int a = 10;
int b = 20;
int c = 15;
Kita ingin mencari yang terbesar.
Salah satu pendekatan nested if:
if (a > b) {
if (a > c) {
print("Largest number is $a");
} else {
print("Largest number is $c");
}
} else {
if (b > c) {
print("Largest number is $b");
} else {
print("Largest number is $c");
}
}
Mari kita jalankan secara manual.
21. Langkah pertama
Kita punya:
a = 10
b = 20
c = 15
Pertama:
a > b
yaitu:
10 > 20
↓
false
Maka kita tidak masuk ke block if pertama.
Kita masuk ke:
else
Di dalamnya ada:
if (b > c)
Sekarang:
20 > 15
↓
true
Maka:
Largest number is 20
Benar, karena 20 memang terbesar.
22. Kalau a = 200?
Sekarang:
a = 200;
b = 20;
c = 15;
Pertama:
200 > 20
↓
true
Masuk ke block pertama.
Kemudian:
200 > 15
↓
true
Maka:
Largest number is 200
23. Kalau c = 500?
Misalnya:
a = 10
b = 20
c = 500
Pertama:
10 > 20
↓
false
Masuk ke else.
Kemudian:
20 > 500
↓
false
Masuk ke else kedua.
Hasil:
Largest number is 500
24. Cara berpikir nested if
Jangan melihat nested if sebagai kode yang menakutkan.
Baca seperti pertanyaan berurutan:
Apakah A lebih besar dari B?
│
YA │ TIDAK
│
↓
Apakah A Apakah B
lebih besar lebih besar
dari C? dari C?
│ │
YA│ TIDAK YA │ TIDAK
↓ ↓ ↓ ↓
A C B C
Dengan cara berpikir seperti ini, nested if akan jauh lebih mudah.
25. else if sebenarnya bisa dianggap sebagai rantai kondisi
Sekarang kita masuk ke if-else ladder.
Misalnya:
if (condition1) {
// statement 1
} else if (condition2) {
// statement 2
} else if (condition3) {
// statement 3
} else {
// default statement
}
Bentuknya seperti tangga:
condition 1?
↓ false
condition 2?
↓ false
condition 3?
↓ false
condition 4?
↓ false
else/default
Dart akan berhenti pada kondisi pertama yang bernilai true.
26. Contoh menentukan nama hari
Misalnya:
int day = 3;
Kita ingin:
1 → Monday
2 → Tuesday
3 → Wednesday
4 → Thursday
5 → Friday
6 → Saturday
7 → Sunday
selain itu → Invalid day
Kita bisa membuat:
if (day == 1) {
print("Monday");
} else if (day == 2) {
print("Tuesday");
} else if (day == 3) {
print("Wednesday");
} else if (day == 4) {
print("Thursday");
} else if (day == 5) {
print("Friday");
} else if (day == 6) {
print("Saturday");
} else if (day == 7) {
print("Sunday");
} else {
print("Invalid day");
}
Karena:
day = 3;
maka:
day == 1 → false
day == 2 → false
day == 3 → true
Output:
Wednesday
27. Kalau day = 1
int day = 1;
Dart langsung menemukan:
day == 1
↓
true
Maka:
Monday
Kondisi lainnya tidak perlu diperiksa.
28. Kalau day = 7
int day = 7;
Pengecekan:
1 → false
2 → false
3 → false
4 → false
5 → false
6 → false
7 → true
Hasil:
Sunday
29. Kalau day = 9
int day = 9;
Semua kondisi:
day == 1 → false
day == 2 → false
day == 3 → false
...
day == 7 → false
Tidak ada yang cocok.
Maka:
else {
print("Invalid day");
}
dijalankan.
Output:
Invalid day
30. Bedakan if, if-else, dan else if
Ini wajib kamu kuasai.
if
Digunakan ketika:
Saya hanya perlu melakukan sesuatu kalau kondisi benar.
if (age >= 18) {
print("Dewasa");
}
Kalau false → tidak melakukan apa-apa.
if-else
Digunakan ketika:
Ada dua kemungkinan.
if (age >= 18) {
print("Dewasa");
} else {
print("Belum dewasa");
}
Pilih salah satu.
if-else if-else
Digunakan ketika:
Ada banyak kemungkinan.
if (score >= 90) {
print("A");
} else if (score >= 80) {
print("B");
} else if (score >= 70) {
print("C");
} else {
print("D");
}
Nested if
Digunakan ketika:
Satu keputusan bergantung pada keputusan sebelumnya.
if (isLoggedIn) {
if (isAdmin) {
print("Admin page");
}
}
31. Kesalahan umum pemula: menggunakan = bukannya ==
Ini sangat penting.
=
Artinya assignment / memberikan nilai.
int age = 20;
Artinya:
Masukkan
20ke dalamage.
==
Artinya membandingkan.
if (age == 20) {
print("Umurnya 20");
}
Artinya:
Apakah
agesama dengan20?
Jadi:
= → memberikan nilai
== → membandingkan nilai
Jangan tertukar.
32. Gunakan operator logika dalam if
Kondisi juga bisa digabungkan.
Misalnya:
int age = 20;
bool hasTicket = true;
Kita ingin:
Boleh masuk kalau umur minimal 18 dan memiliki tiket.
if (age >= 18 && hasTicket) {
print("Boleh masuk");
}
Di sini:
age >= 18
dan:
hasTicket
harus sama-sama true.
33. Menggunakan ||
Misalnya:
User boleh login menggunakan email atau username.
Konsepnya:
if (hasEmail || hasUsername) {
print("Bisa login");
}
|| berarti OR.
Cukup salah satu benar.
34. Menggunakan !
Misalnya:
bool isLoggedIn = false;
if (!isLoggedIn) {
print("Silakan login");
}
! membalik boolean:
isLoggedIn = false
!false
↓
true
Maka block dijalankan.
35. Contoh Decision Making yang lebih realistis
Misalnya kita punya sistem login:
bool isLoggedIn = true;
bool isAdmin = false;
if (!isLoggedIn) {
print("Silakan login");
} else if (isAdmin) {
print("Welcome Admin");
} else {
print("Welcome User");
}
Kalau:
isLoggedIn = true
isAdmin = false
maka:
!isLoggedIn
↓
false
Lanjut:
isAdmin
↓
false
Maka masuk ke:
else {
print("Welcome User");
}
Output:
Welcome User
36. Hubungan dengan Flutter
Decision making sangat sering digunakan di Flutter.
Contohnya kita punya kondisi:
bool isLoading = true;
Kita ingin:
kalau sedang loading
↓
tampilkan loading indicator
kalau selesai
↓
tampilkan data
Bisa menggunakan:
if (isLoading) {
// tampilkan loading
} else {
// tampilkan data
}
Bahkan dalam widget Flutter, kamu akan sering menggunakan ternary operator:
isLoading
? CircularProgressIndicator()
: Text("Data selesai");
Jadi konsep decision making dari Dart ini akan sangat berguna ketika nanti kamu membuat UI Flutter yang kondisional.
37. Hal penting: jangan membuat nested if terlalu dalam
Nested if memang berguna, tetapi kalau terlalu banyak:
if (...) {
if (...) {
if (...) {
if (...) {
if (...) {
// ...
}
}
}
}
}
kode menjadi sulit dibaca.
Kalau sudah seperti ini, biasanya kita perlu memikirkan ulang desain kode.
Kadang bisa menggunakan:
else if- early return
- function terpisah
switch- ternary untuk kondisi sederhana
Contoh sederhana:
if (!isLoggedIn) {
print("Silakan login");
return;
}
if (!isAdmin) {
print("Bukan admin");
return;
}
print("Welcome Admin");
Untuk kasus tertentu, pola seperti ini jauh lebih mudah dibaca daripada nested if yang sangat dalam.
38. Ringkasan alur if
Bayangkan selalu ada pertanyaan:
KONDISI
↓
Apakah true?
/ \
YA TIDAK
↓ ↓
jalankan skip
IF block IF block
Kalau ada else:
KONDISI
↓
Apakah true?
/ \
YA TIDAK
↓ ↓
IF block ELSE block
Kalau ada else if:
Condition 1?
│
├── true → jalankan → selesai
│
└── false
↓
Condition 2?
│
├── true → jalankan → selesai
│
└── false
↓
Condition 3?
│
└── ...
39. Cheat sheet
| Bentuk | Kapan digunakan |
|---|---|
if | Hanya perlu menjalankan kode jika kondisi true |
if-else | Ada 2 kemungkinan |
else if | Ada banyak kondisi yang saling berurutan |
else | Kondisi default jika semuanya false |
Nested if | Kondisi di dalam kondisi lain |
Contoh:
// IF
if (age >= 18) {
print("Dewasa");
}
// IF ELSE
if (age >= 18) {
print("Dewasa");
} else {
print("Belum dewasa");
}
// ELSE IF
if (score >= 90) {
print("A");
} else if (score >= 80) {
print("B");
} else {
print("C");
}
// NESTED IF
if (isLoggedIn) {
if (isAdmin) {
print("Admin");
}
}
40. Kesimpulan paling penting
Kalau disederhanakan, Decision Making di Dart sebenarnya hanya mengajarkan kita bagaimana program membuat keputusan.
if
“Kalau benar, lakukan ini.”
if (condition) {
// ...
}
if-else
“Kalau benar lakukan A, kalau salah lakukan B.”
if (condition) {
// A
} else {
// B
}
else if
“Kalau kondisi pertama salah, coba kondisi kedua, lalu ketiga, dan seterusnya.”
if (condition1) {
// ...
} else if (condition2) {
// ...
} else {
// default
}
Nested if
“Kalau kondisi pertama terpenuhi, lakukan pemeriksaan lain di dalamnya.”
if (condition1) {
if (condition2) {
// ...
}
}
Dan satu pola yang harus benar-benar kamu ingat:
if → satu kemungkinan utama
if-else → dua kemungkinan
else if → banyak kemungkinan berurutan
nested if → keputusan di dalam keputusan
Kalau konsep ini sudah kuat, langkah berikutnya yang sangat penting dalam Dart adalah switch-case, karena untuk kasus seperti menentukan hari berdasarkan angka 1–7, switch biasanya lebih rapi daripada else if yang panjang.