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 pemograman.
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)
pernyataan;
- 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
Untuk pernyataan if yang diikuti dengan pernyataan majemuk, bentuknya adalah sebagai berikut :
if (kondisi)
{ //tanda awal pernyataan majemuk
pernyataan_1;
pernyataan_2;
...
pernyataan_n;
} //tanda akhir pernyataan majemuk
Pernyataan-pernyataan yang berada di antara tanda kurung { dan } akan dijalankan hanya jika kondisi if bernilai TRUE.
Bentuk flowchart pernyataan if :

Contoh program :
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
char hujan;
cout<<"Apakah hari ini hujan ? ";
cin>>hujan;
if(hujan=='Y' || hujan=='y')
{
cout<<"Saya diam di rumah"<<endl;
cout<<"Tidur sepuasnya"<<endl;
cout<<"Masak Omdomie"<<endl;
}
system("pause");
return 0;
}
2. Pernyataan if–else
Untuk ekspresi dari konPernyataan if – else mempunyai bentuk umum :
if (kondisi)
pernyataanTrue;
else
pernyataanFalse;
- 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
Untuk pernyataan if-else yang diikuti dengan pernyataan majemuk, bentuknya adalah sebagai berikut :
if (kondisi)
{ //tanda awal pernyataan majemuk if
pernyataanTrue_1;
pernyataanTrue_2;
...
pernyataan_n;
} //tanda akhir pernyataan majemuk if
else
{ //tanda awal pernyataan majemuk else
pernyataanTrue_1;
pernyataanTrue_2;
...
pernyataan_n;
} //tanda akhir pernyataan majemuk else
Pernyataan-pernyataan pada blok if akan dijalankan hanya jika kondisi if bernilai TRUE. Pernyataan-pernyataan pada blok else akan dijalankan hanya jika kondisi if bernilai FALSE.
Bentuk flowchart pernyataan if-else :

Contoh program :
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
char hujan;
cout<<"Apakah hari ini hujan ? ";
cin>>hujan;
if(hujan=='Y' || hujan=='y')
{
cout<<"Saya diam di rumah"<<endl;
cout<<"Tidur sepuasnya"<<endl;
cout<<"Masak Omdomie"<<endl;
}
else
{
cout<<"Saya jalan-jalan"<<endl;
cout<<"Mau shoping di mall"<<endl;
cout<<"Di mall makan di foodcourt"<<endl;
}
system("pause");
return 0;
}
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 :
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int nilaiun, tinggi; char butawarna, tato;
cout<<"======================================"<<endl;
cout<<"Aplikasi Penerimaan Peserta Didik Baru"<<endl;
cout<<"======================================"<<endl;
cout<<"Nilai Ujian Nasional : ";
cin>>nilaiun;
if(nilaiun>=200)
{
cout<<"Apakah anda buta warna : ";
cin>>butawarna;
if(butawarna=='N' || butawarna=='n')
{
cout<<"Tingggi badan : ";
cin>>tinggi;
if(tinggi>=160)
{
cout<<"Apakah anda bertato : ";
cin>>tato;
if(tato=='N' || tato=='n')
{
cout<<"Selamat anda diterima di Sekolah Kami"<<endl;
}
else
{
cout<<"Maaf siswa bertato tidak dapat diterima di Sekolah Kami"<<endl;
}
}
else
{
cout<<"Maaf tinggi anda kurang dari 160cm, tidak dapat diterima di Sekolah Kami"<<endl;
}
}
else
{
cout<<"Maaf anda buta warna, tidak dapat diterima di Sekolah Kami"<<endl;
}
}
else
{
cout<<"Maaf nilai Ujian Naional anda dibawah 200, tidak dapat diterima di Sekolah Kami"<<endl;
}
system("pause");
return 0;
}
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 :
#include <iostream>
#include <string>
using namespace std;
int main ()
{
int pilihan;
string nama;
cout<<"masukkan nama anda: ";
cin>> nama;
cout<<"selamat datang di restoran kami "<<nama<<endl;
cout<<"silahkan masukkan pilihanmu "<<endl;
cout<<"1. Ayam goreng "<<endl;
cout<<"2. Nila bakar"<< endl;
cout<<"3. Cah kangkung "<<endl;
cout<<"silahan memilih "<<endl;
cin>>pilihan;
if (pilihan==1)
{
cout << “selamat, anda memilih plihan nomor satu "<<endl;
}
else
if (pilhan==2)
{
cout<< “wah, selera anda cukup menggiurkan "<<endl;
}
else
if (pilihan==3)
{
cout<<"wah, memang menu ini lagi top di sini "<<endl;
}
else
{
cout<<"wah, sepertinya anda kurang bisa membaca ya? "<<endl;
}
system("pause");
return 0;
}
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) harus berupa nilai integer atau karakter, tidak boleh float dan tidak boleh range (pada konversi nilai angka kenilai huruf)
- Urutan dari pernyataan case tidak penting.
- 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.
Bentuk flowchart pernyataan switch case :

Contoh program :
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
//deklarasi variable
int bulan;
//menampilkan ke monitor
cout<<"---PROGRAM MENENTUKAN BULAN DENGAN SWITCH CASE---"<<endl;
cout<<"Bulan ke- : ";
cin>>bulan;
//proses switch
switch(bulan)
{
case 1:
cout<<"Bulan ke-1 adalah JANUARI"<<endl;
break;
case 2:
cout<<"Bulan ke-2 adalah FEBRUARI"<<endl;
break;
case 3:
cout<<"Bulan ke-3 adalah MARET"<<endl;
break;
case 4:
cout<<"Bulan ke-4 adalah APRIL"<<endl;
break;
case 5:
cout<<"Bulan ke-5 adalah MEI"<<endl;
break;
case 6:
cout<<"Bulan ke-6 adalah JUNI"<<endl;
break;
case 7:
cout<<"Bulan ke-7 adalah JULI"<<endl;
break;
case 8:
cout<<"Bulan ke-8 adalah AGUSTUS"<<endl;
break;
case 9:
cout<<"Bulan ke-9 adalah SEPTEMBER"<<endl;
break;
case 10:
cout<<"Bulan ke-10 adalah OKTOBER"<<endl;
break;
case 11:
cout<<"Bulan ke-11 adalah NOVEMBER"<<endl;
break;
case 12:
cout<<"Bulan ke-12 adalah DESEMBER"<<endl;
break;
default:
cout<<"maaf kode salah"<<endl;
break;
}
system("pause");
return 0;
}