Dalam kehidupan sehari-hari terkadang kita sering dihadapkan pada kondisi dimana kita harus memilih suatu tindakan atau bahkan pilihan yang rumit (bercabang). Begitu juga dalam membuat program, kita akan sedikit banyak berurusan dengan pilihan dalam pemrograman.
Pernyataan Percabangan/Decision biasa juga disebut dengan Pilihan atau Penyeleksian, berfungsi untuk memecahkan persoalan dan mengambil satu keputusan sesuai kondisi yang sedang dialami program. Pernyataan tunggal atau pernyataan majemuk akan dieksekusi jika kondisi kebutuhan tersebut terpenuhi.
Alur pembacaan program akan mengalir dari atas ke bawah, akan dieksekusi oleh CPU satu demi satu. Ketika CPU menemukan pernyataan penyeleksian, sebelum CPU memilih dan mengekseskusi pilihan yang ada, program akan memeriksa kondisi dari program saat itu juga. Jika salah satu kondisi dari pilihan pernyataan penyeleksian sesuai dengan kondisi program maka pilihan tersebutlah yang akan diekseskusi.
Untuk ekspresi dari kondisi (hasil) merupakan bilangan Boolean atau berupa sebuah ekspresi yang menghasilkan bilangan Boolean, 1 (true) atau 0 (false), jika kondisi penyeleksian bernilai true maka akan menjalankan pilihan yang ada dan jika semua pilihan bernilai 0 (false) maka akan diabaikan atau memilih pilihan cadangan (else).]
1. Pernyataan if
Pernyataan if mempunyai bentuk umum :
if (kondisi) { // Kode yang akan dieksekusi jika kondisi bernilai true }
- Kondisi diuji dulu, nilainya TRUE ataukah FALSE
- Jika nilainya TRUE, maka pernyataan yang mengikutinya akan dieksekusi.
- Jika nilai FALSE, maka pernyataan yang mengikutinya akan diabaikan
Pernyataan-pernyataan yang berada di antara tanda kurung { dan } akan dijalankan hanya jika kondisi if bernilai TRUE.
Bentuk flowchart pernyataan if :
Contoh program :
using System; class Program { static void Main() { string hujan; Console.Write("Apakah hari ini hujan (Y/N) ? "); hujan = Console.ReadLine(); Console.WriteLine(); // Untuk pindah baris setelah input if (hujan == "Y" || hujan == "y") { Console.WriteLine("Saya diam di rumah"); Console.WriteLine("Tidur sepuasnya"); Console.WriteLine("Masak Indomie"); } } }
2. Pernyataan if–else
Untuk ekspresi dari konPernyataan if – else mempunyai bentuk umum :
if (kondisi) { // Kode yang akan dieksekusi jika kondisi bernilai true } else { // Kode yang akan dieksekusi jika kondisi bernilai false }
- Kondisi diuji dulu, nilainya TRUE ataukah FALSE
- Jika nilainya TRUE, maka pernyataan yang mengikutinya (pernyataanTrue) akan dieksekusi, sedangkan (pernyataanFalse) akan diabaikan
- Jika nilai FALSE, maka pernyataan yang mengikuti else (pernyataanFalse) akan dieksekusi, sedangkan (pernyataanTrue) akan diabaikan
Pernyataan-pernyataan pada blok if akan dijalankan hanya jika kondisi ifbernilai TRUE. Pernyataan-pernyataan pada blok else akan dijalankan hanya jika kondisi if bernilai FALSE.
Bentuk flowchart pernyataan if-else :
Contoh program :
using System; class Program { static void Main() { string hujan; Console.Write("Apakah hari ini hujan (Y/N) ? "); hujan = Console.ReadLine(); Console.WriteLine(); // Untuk pindah baris setelah input if (hujan == "Y" || hujan == "y") { Console.WriteLine("Saya diam di rumah"); Console.WriteLine("Tidur sepuasnya"); Console.WriteLine("Masak Indomie"); } else { Console.WriteLine("Saya jalan-jalan"); Console.WriteLine("Mau shoping di mall"); Console.WriteLine("Di mall makan di foodcourt"); } } }
3. Pernyataan Nested if
Nested if atau dalam bahasa sederhananya fungsi if di dalam fungsi if. Struktur percabangan if bersarang / nested if merupakan struktur if yang paling komplek, karena merupakan perluasan dan kombinasi dari berbagai struktur if lainnya. Konsep dari percabangan ini adalah terdapat Struktur If yang berada didalam Struktur If lainnya. Artinya dalam pernyataan If bersarang jika kondisi If yang paling luar (paling atas) bernilai benar, maka kondisi If yang berada didalamnya baru akan dilihat (di cek).
Bentuk umum dari struktur If bersarang / struktur if yang berada di dalam struktur if lainnya adalah sebagai berikut:
if(kondisi1) { if(kondisi_2) { Statemen jika kondisi_1 dan kondisi_2 terpenuhi (TRUE); if(kondisi_3) { Statemen jika kondisi_1, kondisi_2 dan kondisi_3 terpenuhi (TRUE); } else { Statemen jika kondisi_3 tidak terpenuhi (FALSE); } else { Statemen jika kondisi_2 tidak terpenuhi (FALSE); } else { Statemen jika kondisi_1 tidak terpenuhi (FALSE); }
Bentuk flowchart pernyataan Nested if :
Untuk lebih memahami konsep dari Struktur If Bersarang / Nested If, berikut contoh soal yang mengimplementasikan hal tersebut :
Pada Penerimaan Peserta Didik Baru (PPDB) suatu SMK ditentukan beberapa kriteria pendaftaran, yang terdiri dari :
- Nilai total Ujian Nasional minimal 200
- Tidak buta warna
- Tinggi badan minimal 160 cm
- Tidak bertato
Buatkan program PPDB tersebut menggunakan bahasa pemograman C++ !
Penyelesaian :
using System; class Program { static void Main() { int nilaiun, tinggi; string butawarna, tato; Console.WriteLine("======================================"); Console.WriteLine("Aplikasi Penerimaan Peserta Didik Baru"); Console.WriteLine("======================================"); Console.Write("Nilai Ujian Nasional : "); nilaiun = int.Parse(Console.ReadLine() ?? "0"); // Handle potential null input if (nilaiun >= 200) { Console.Write("Apakah anda buta warna (Y/N) : "); butawarna = (Console.ReadLine() ?? "").ToUpper(); // Convert input to uppercase if (butawarna == "N") { Console.Write("Tinggi badan : "); tinggi = int.Parse(Console.ReadLine()); // Handle potential null input if (tinggi >= 160) { Console.Write("Apakah anda bertato (Y/N) : "); tato = (Console.ReadLine()).ToUpper(); // Convert input to uppercase if (tato == "N") { Console.WriteLine("Selamat anda diterima di Sekolah Kami"); } else { Console.WriteLine("Maaf siswa bertato tidak dapat diterima di Sekolah Kami"); } } else { Console.WriteLine("Maaf tinggi anda kurang dari 160cm, tidak dapat diterima di Sekolah Kami"); } } else { Console.WriteLine("Maaf anda buta warna, tidak dapat diterima di Sekolah Kami"); } } else { Console.WriteLine("Maaf nilai Ujian Nasional anda dibawah 200, tidak dapat diterima di Sekolah Kami"); } Console.WriteLine("Tekan sembarang tombol untuk keluar..."); Console.ReadKey(); } }
Berikut penjelasannya :
- Pada saat program berjalan kita akan di perintahkan untuk memasukkan Nilai Ujian Nasional, apabila Nilai Ujian Nasional lebih besar atau sama dengan 200, maka program akan melanjutkan ke pertanyaan berikutnya. Jika di bawah 200, maka program akan menampilkan Maaf nilai Ujian Naional anda dibawah 200, tidak dapat diterima di Sekolah Kami, dan program selesai
- Jika Nilai Ujian Nasional lebih dari atau sama dengan 200, selanjutnya program akan menanyakan apakah siswa buta warna atau tidak, jika tidak diinput dengan huruf N atau n, maka program akan melanjutkan ke pertanyaan berikutnya, jika buta warna diinput dengan huruf Y atau y, maka program akan menampilkan Maaf anda buta warna, tidak dapat diterima di Sekolah Kami, dan program selesai
- Jika siswa tidak buta warna, selanjutnya program akan menanyakan apakah tinggi badan siswa lebih dari atau sama dengan 160 cm, jika lebih dari atau sama dengan 160 cm, maka program akan melanjutkan ke pertanyaan berikutnya, jika tinggi badan di bawah160cm, maka program akan menampilkan Maaf tinggi anda kurang dari 160cm, tidak dapat diterima di Sekolah Kami, dan program selesai
- Jika tinggi badan siswa lebih dari atau sama dengan 160 cm, maka program akan melanjutkan ke pertanyaan selanjutnya, yaitu apakah siswa bertato, jika tidak diinput dengan huruf N atau n, maka program akan menampilkan Selamat anda diterima di Sekolah Kami , jika bertato diinput dengan huruf Y atau y, maka program akan menampilkan , dan program selesai.
4. Pernyataan else-if
Didalam fungsi pernyataan if ada juga fungsi tambahan else if (jika tidak), else if berfungsi untuk membuat fungsi lain seperti fungsi if seperti pernyataan tambahan atau fungsi pernyataan kedua jika fungsi if tidak memenuhi syarat. Else if biasanya digunakan untuk membuat program yang membutuhkan persyaratan tertentu dan berbeda-beda.
Bentuk flowchart pernyataan else-if :
Sebenarnya kita bisa saja menggunakan IF saja langsung menggantikan else if tetapi itu adalah cara yang salah karena jika menggunakan fungsi if berarti kita membuat pilihan yang berbeda dari fungsi pernyataan if sebelumnya, lebih jelasnya seperti contoh berikut ini :
using System; class Program { static void Main() { int pilihan; string nama; Console.Write("Masukkan nama Anda: "); nama = Console.ReadLine(); Console.WriteLine($"Selamat datang di restoran kami, {nama}"); Console.WriteLine("Silakan masukkan pilihanmu:"); Console.WriteLine("1. Ayam goreng"); Console.WriteLine("2. Nila bakar"); Console.WriteLine("3. Cah kangkung"); Console.Write("Silakan memilih: "); pilihan = int.Parse(Console.ReadLine()); if (pilihan == 1) { Console.WriteLine("Selamat, Anda memilih pilihan nomor satu."); } else if (pilihan == 2) { Console.WriteLine("Wah, selera Anda cukup menggiurkan."); } else if (pilihan == 3) { Console.WriteLine("Wah, memang menu ini lagi top di sini."); } else { Console.WriteLine("Wah, sepertinya Anda kurang bisa membaca ya?"); } } }
5. Pernyataan Switch
Pernyataan swich adalah pernyataan yang di gunakan untuk menjalankan salah satu pernyataan dari beberapa kemungkinan pernyataan, berdasarkan nilai dari sebuah ungkapan dan nilai penyeleksian. Pernyataan if…else if jamak dapat dibangun dengan pernyataan switch.
Pernyataan switch adalah adalah pernyataan penyeleksian untuk memanipulasi jalanya aliran program berdasarkan conditional expression, Mengendalikan aliran program agar dapat berjalan secara fleksibel atas keadaan program dan keinginan user. Pernyataan ini akan memilih solusi / pilihan yang sesuai dengan ekspresi kondisi.
Pada umumnya penyataan switch tidak jauh berbeda seperti pernyataan penyeleksian IF, yang berbeda adalah switch dikhususkan untuk penyeleksian berdasarkan nilai dari ekspresi. Jika if mengevaluasi kebenaran dari sebuah ekspresi seperti operasi logika, relasi dan perbandingan yang menghasilkan bilangan boolean 1 (benar) atau 0 (salah).
Dalam pernyataan switch, penyeleksian dilakukan dengan memeriksa kondisi (lebih tepatnya nilai) dari suatu variabel bertipe integer, char atau enum dan menemukan kesamaan data yang dicari oleh salah satu label case yang ada.
Bentuk Umumnya :
switch(ekspresi) { case konstanta1 : pernyataan1_1; pernyataan1_2; ... pernyataan1_n; break ; case konstanta2 : pernyataan2_1; pernyataan2_2; ... pernyataan2_n; break ; case konstanta3 : pernyataan2_1; pernyataan2_2; ... pernyataan2_n; break ; ... case konstantaN : pernyataanN_1; pernyataan2_2; ... pernyataan2_n; break ; default : pernyataanlain; }
Aturan-aturan pada pernyataan switch
- Ekspresi pada switch (serta value pada case) bisa dengan integer, karakter,
string
,enum
, dan tipe data lain (termasuk beberapa tipe non-primitif seperti tuple pada versi modern C#). Nilai padacase
harus berupa konstanta atau nilai yang dapat dihitung sebagai konstanta selama kompilasi (const
ataureadonly
). - Urutan dari pernyataan case tidak penting, namun jika ada tumpang tindih nilai
case
(misalnya duacase
memiliki nilai yang sama), maka akan terjadi error kompilasi. - Klausa default boleh diletakkan di awal (secara konvensi diletakkan terakhir)
- Keyword break harus disertakan pada akhir dari setiap pernyataan case, digunakan untuk melompat ke akhir dari blok switch.
- Klausa default bersifat optional, akan dieksekusi HANYA JIKA tidak ada satupun nilai case yang cocok.
- Pola
switch
Modern (C# 8.0 ke atas), C# mendukung switch expression dan pattern matching yang memungkinkan penggunaan lebih fleksibel. Kita dapat mencocokkan berdasarkan kondisi tambahan, misalnya : object input = “Hai”;using System; class Program { static void Main() { object input="Hai"; switch (input) { case int i when i > 0: Console.WriteLine("Positive number"); break; case string s when s.Length > 5: Console.WriteLine("Long string"); break; default: Console.WriteLine("Other case"); break; } } }
- Blok
case
dapat berisi pernyataan yang kompleks. Dalam C#, setiap blokcase
tidak harus hanya berisi satu pernyataan; Anda dapat menggunakan blok kode{}
untuk menampung logika lebih kompleks , contoh :using System; class Program { static void Main() { int angka = 2; switch (angka) { case 1: Console.WriteLine("Angka adalah satu"); break; case 2: Console.WriteLine("Angka adalah dua"); break; case 3: Console.WriteLine("Angka adalah tiga"); break; default: Console.WriteLine("Angka tidak dikenal"); break; } } }
Bentuk flowchart pernyataan switch case :
Contoh program :
using System; class Program { static void Main() { // Deklarasi variabel int bulan; // Menampilkan ke monitor Console.WriteLine("--- PROGRAM MENENTUKAN BULAN DENGAN SWITCH CASE ---"); Console.Write("Bulan ke-: "); bulan = int.Parse(Console.ReadLine()); // Proses switch switch (bulan) { case 1: Console.WriteLine("Bulan ke-1 adalah JANUARI"); break; case 2: Console.WriteLine("Bulan ke-2 adalah FEBRUARI"); break; case 3: Console.WriteLine("Bulan ke-3 adalah MARET"); break; case 4: Console.WriteLine("Bulan ke-4 adalah APRIL"); break; case 5: Console.WriteLine("Bulan ke-5 adalah MEI"); break; case 6: Console.WriteLine("Bulan ke-6 adalah JUNI"); break; case 7: Console.WriteLine("Bulan ke-7 adalah JULI"); break; case 8: Console.WriteLine("Bulan ke-8 adalah AGUSTUS"); break; case 9: Console.WriteLine("Bulan ke-9 adalah SEPTEMBER"); break; case 10: Console.WriteLine("Bulan ke-10 adalah OKTOBER"); break; case 11: Console.WriteLine("Bulan ke-11 adalah NOVEMBER"); break; case 12: Console.WriteLine("Bulan ke-12 adalah DESEMBER"); break; default: Console.WriteLine("Maaf, kode salah."); break; } } }
Demikian tutorial tentang Percabangan/Decision pada C#, jika ada pertanyaan silahkan tuliskan dikolom komentar. Selanjutnya kita akan mempelajari tentang :