{tocify} $title={Daftar Isi}
Pendahuluan:
Pada sebuah program/aplikasi mungkin pernah kita jumpai terdapat pertanyaan dalam bentuk pilihan ganda yang nantinya menentukan hasil dari jawaban anda, di dalam pemrograman kita dapat menggunakan suatu teknik untuk membuat pertanyaan dalam bentuk pilihan ganda dan hasil jawaban anda akan ditentukan oleh program berdasarkan kondisi yang paling relevan, teknik tersebut dinamakan kondisi atau percabangan karena hasil jawaban anda akan dievaluasi oleh program untuk menentukan instruksi mana yang relevan dengan jawaban anda maka instruksi tersebut yang akan dieksekusi untuk dikembalikan sebagai hasilnya.
Percabangan:
Percabangan di dalam sebuah pemrograman komputer adalah instruksi yang akan mengeksekusi instruksi lainnya yang paling relevan bergantung pada boolean yang didefinisikan oleh pemrogram dalam mengevaluasi kondisi yang benar atau salah dari suatu nilai/ekspresi. Sebagai contoh, anda memiliki nilai/angka 1 dan terdapat beberapa kondisi berikut:
- Jika nilai/angka yang anda miliki adalah >0 (lebih besar dari nol) maka hasilnya "Positif"
- Jika nilai/angka yang anda miliki adalah <0 (lebih kecil dari nol) maka hasilnya "Negatif"
- Selain dari dua kondisi diatas, maka hasilnya adalah "Nol"
Dari contoh kondisi di atas asumsikan anda memiliki angka/nilai satu, lalu pada kondisi nomor berapakah yang paling relevan dari angka/nilai yang anda miliki? Maka tentu saja pilihan nomor satu di mana angka yang anda miliki lebih besar dari nol sehingga hasilnya adalah "Positif", begitulah suatu "kondisi" bekerja dan karena di sana terdapat lebih dari satu kondisi maka disebut sebagai "Percabangan".
Di bahasa pemrograman Dart sendiri terdapat beberapa bentuk percabangan, diantaranya:
- if
- if-else
- if-else if
- if-else if-else
- switch case
Percabangan if
if :
Percabangan if hanya memiliki satu kondisi dan hanya nilai/ekspresi yang relevan dengan kondisi yang akan dieksekusi, jika tidak ada nilai/ekspresi yang relevan dengan kondisi maka tidak ada kode lain yang dieksekusi, format dan contohnya sebagai berikut:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
///File ini berisikan contoh percabangan/kondisi bersarang di Bahasa Pemrograman Dart | |
///Dibuat oleh Bayu Radityo untuk geekasmedia.blogspot.com | |
///05 April 2022 | |
//Format dasar: | |
/* | |
if(kondisi) { | |
//Lakukan sesuatu | |
} | |
*/ | |
//Contoh: | |
main() { | |
//inisilasi nilai variabel a | |
int a = 10; | |
//kondisi yang relevan/bernilai true | |
if(a == 1) { | |
print("Satu"); | |
} | |
} |
Dari contoh diatas karena hanya memiliki satu kondisi di mana kondisi yang dinyatakan benar adalah hanya "jika" nilai variabel a sama dengan satu, namun disana nilai variabel a adalah sepuluh maka ketika code dieksekusi tidak akan menampilkan apapun bukan karena syntax error melainkan karena tidak ada kondisi yang relevan dengan variabel a dan tidak ada kondisi lain yang tersedia.
if-else
Percabangan if-else memiliki dua kondisi di mana jika tidak ada nilai/ekspresi yang relevan dengan kondisi pertama maka kondisi "else" yang akan di eksekusi, format dan contohnya sebagai berikut:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
///File ini berisikan contoh percabangan if-else di Bahasa Pemrograman Dart | |
///Dibuat oleh Bayu Radityo untuk geekasmedia.blogspot.com | |
///05 April 2022 | |
//Format dasar: | |
/* | |
if(kondisi) { | |
Lakukan Sesuatu | |
} | |
*/ | |
//Contoh: | |
void main() { | |
//inisialisasi nilai | |
int a = 10; | |
//jika kondisi terpenuhi | |
if (a <= 10) { | |
print("Sepuluh"); | |
} | |
//jika tidak ada kondisi yang terpenuhi | |
else { | |
print("Sama dengan / lebih dari sepuluh"); | |
} | |
} |
if-else if
Percabangan if-else if pada dasarnya terdapat dua kondisi di mana jika kondisi pertama tidak relevan maka akan mengevaluasi kondisi kedua namun jika kondisi kedua juga tidak relevan maka tidak ada kondisi yang dapat dieksekusi, format dan contohnya sebagai berikut:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
///File ini berisikan contoh percabangan if-else if di Bahasa Pemrograman Dart | |
///Dibuat oleh Bayu Radityo untuk geekasmedia.blogspot.com | |
///05 April 2022 | |
//Format sintaks: | |
/*if(kondisi) { | |
Lakukan sesuatu | |
} else if (kondisi) { | |
Lakukan sesuatu | |
} | |
*/ | |
//Contoh: | |
void main(){ | |
int a = 10; | |
//jika kondisi memenuhi | |
if(a < 10){ | |
print("Dibawah sepuluh"); | |
} | |
//kondisi lain jika terpenuhi | |
else if (a == 10){ | |
print("Sepuluh"); | |
} | |
//kondisi lain jika terpenuhi | |
else if (a >= 10){ | |
print("Lebih dari sepuluh"); | |
} | |
} |
if-else if-else
Pada percabangan if-else if-else pada dsarnya terdapat tiga kondisi, dua kondisi jika hasil evaluasi nilai/ekspresi dinyatakan relevan, dan else jika tidak ada nilai/ekspresi yang relevan dengan kondisi yang ada, format dan contohnya sebagai berikut:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
///File ini berisikan contoh percabangan if-else if-else di Bahasa Pemrograman Dart | |
///Dibuat oleh Bayu Radityo untuk geekasmedia.blogspot.com | |
///05 April 2022 | |
//Format sintaks: | |
/* | |
if(kondisi) { | |
//Lakukan sesuatu | |
} else if (kondisi) { | |
//Lakukan sesuatu | |
} else { | |
//Lakukan sesuatu | |
} | |
*/ | |
//Contoh: | |
void main(){ | |
int a = 150; | |
if(a < 0){ | |
print("Negatif"); | |
}else if (a == 0) { | |
print("Nol"); | |
}else if (a < 100){ | |
print("Sangat Rendah"); | |
}else if (a < 125){ | |
print("Rendah"); | |
}else if (a == 125){ | |
print("Sedang"); | |
}else if (a < 135){ | |
print("Tinggi"); | |
//jika tidak ada kondisi yang tepat | |
}else { | |
print("Sangat Tinggi"); | |
} | |
} |
Switch Case
Percabangan switch case tidak seperti dengan percabangan/kondisi if sebelumnya di mana pada switch case akan mengevaluasi nilai/ekspresi berdasarkan nilai/ekspresi yang digunakan hanya berupa karakter/integer kemudian hanya blok program yang sesuai dengan nilai/karakter yang akan dieksekusi, dalam kata lain switch case sama seperti sebuah menu yang berurutan dari 1-10 atau a-z dan hanya menu yang anda pilih yang akan dieksekusi. Setiap blok program akan dipisah dengan keyword "case" dan perlu diakhiri dengan keyword "break", format dan contohnya sebagai berikut:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
///File ini berisikan contoh percabangan/kondisi switch case di Bahasa Pemrograman Dart | |
///Dibuat oleh Bayu Radityo untuk geekasmedia.blogspot.com | |
///05 April 2022 | |
//Format dasar: | |
/* | |
switch(nilai/var) { | |
case pertama: { | |
//Lakukan sesuatu | |
break; | |
} | |
case n: { | |
//Lakukan sesuatu | |
break; | |
} | |
default: { | |
//Lakukan sesuatu | |
} | |
} | |
*/ | |
//Contoh: | |
main(){ | |
int pil = 1; | |
switch(pil) { | |
case 1: { | |
print("Satu"); | |
break; | |
} | |
case 2: { | |
print("Dua"); | |
break; | |
} | |
default: { | |
print("Kosong"); | |
} | |
} | |
} | |
//atau: | |
main(){ | |
String pil = "satu"; | |
switch(pil) { | |
case "satu": { | |
print("Satu"); | |
break; | |
} | |
case "dua": { | |
print("Dua"); | |
break; | |
} | |
default: { | |
print("Kosong"); | |
} | |
} | |
} |
Dari contoh di atas program hanya akan mengeksekusi blok program yang sesuai dengan masukan (input), dalam contoh di atas adalah 1 dan "satu".
If Bersarang (Nested If)
Suatu percabangan juga bisa dikatakan sebagai bersarang jika di dalam sebuah kondisi terdapat kondisi yang lain, contohnya sebagai berikut:
Nested-if
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//File ini berisikan contoh percabangan/kondisi bersarang di Bahasa Pemrograman Dart | |
///Dibuat oleh Bayu Radityo untuk geekasmedia.blogspot.com | |
///05 April 2022 | |
//format: | |
/* | |
main(){ | |
if(kondisi){ | |
if(kondisi){ | |
//lakukan sesuatu | |
} else { | |
//lakukan sesuatu | |
} | |
} else { | |
//lakukan sesuatu | |
} | |
} | |
*/ | |
//contoh: | |
main() { | |
String name = "Geekasmedia"; | |
if (name == "Geekasmedia") { | |
if (name.length > 5) { | |
print(name); | |
} else { | |
print("Something"); | |
} | |
} else { | |
print("Something"); | |
} | |
} |
Nested if dan switch case
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
///File ini berisikan contoh percabangan/kondisi bersarang di Bahasa Pemrograman Dart | |
///Dibuat oleh Bayu Radityo untuk geekasmedia.blogspot.com | |
///05 April 2022 | |
void main() { | |
int pil = 1; | |
int nil = 1; | |
String name = "Geekasmedia"; | |
switch (pil) { | |
case 1: | |
{ | |
if (name.length > 1) { | |
print("Nama = $name\nJumlah Karakter = " + name.length.toString()); | |
} else { | |
print("Lakukan Sesuatu"); | |
} | |
break; | |
} | |
case 2: | |
{ | |
//switch case didalam case | |
switch (nil) { | |
case 1: | |
{ | |
if (name.length == 0) { | |
print("Zonk"); | |
} else { | |
print(name); | |
} | |
break; | |
} | |
default: | |
{ | |
print("Lakukan sesuatu"); | |
} | |
} | |
break; | |
} | |
default: | |
{ | |
print("Do Nothing/Something"); | |
} | |
} | |
} |
Best Practice
Pada sebuah program/aplikasi biasanya sangat umum jika memiliki banyak kondisi dalam sebuah percabangan namun anda perlu mengikuti prinsip berdasarkan best practicenya jika membuat banyak kondisi, contohnya sebagai berikut:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
///File ini berisikan contoh best practice percabangan/kondisi di Bahasa Pemrograman Dart | |
///Dibuat oleh Bayu Radityo untuk geekasmedia.blogspot.com | |
///05 April 2022 | |
//Buruk: | |
if(warna == "merah"){ | |
print("merah") | |
}if(warna == "putih"){ | |
print("putih") | |
}if(warna == "biru"){ | |
print("biru") | |
}if(warna == "hijau"){ | |
print("abu") | |
}if(warna == "abu-abu"){ | |
print("abu") | |
}...... | |
//Buruk: | |
if(warna == "merah"){ | |
print("merah") | |
}else if(warna == "putih"){ | |
print("putih") | |
}else if(warna == "biru"){ | |
print("biru") | |
}else if(warna == "hijau"){ | |
print("abu") | |
}else if(warna == "abu-abu"){ | |
print("abu") | |
}...... | |
//Bagus: | |
if(warna == "merah"){ | |
print("merah") | |
}else if(warna == "putih"){ | |
print("putih") | |
}}else if(warna == "biru"){ | |
print("biru") | |
}else if(warna == "hijau"){ | |
print("abu") | |
}else if(warna == "abu-abu"){ | |
print("abu") | |
}else { | |
print("berwarna") | |
} |
Dari contoh di atas, walaupun anda dapat membuat banyak kondisi dengan menggunakan if atau if-else if saja namun pada best practicenya anda lebih disarankan menggunakan if-else if-else karena, tanpa ada kondisi "else" maka anda perlu membuat banyak "kemungkinan" kondisi yang dapat dihasilkan dari suatu nilai / ekspresi dan jika ada kemungkinan nilai/ekspresi tidak dapat menemukan kondisi yang relevan maka program tidak akan menampilkan / memproses apapun dan tentu hal tersebut bukanlah hal yang baik bagi program/aplikasi.