Site icon agussuratna.net

Tutorial C++ : #8 Percabangan / Decision pada C++

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;

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;

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 :

  1. Nilai total Ujian Nasional minimal 200
  2. Tidak buta warna
  3. Tinggi badan minimal 160 cm
  4. 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 :

 

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

  1. 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)
  2. Urutan dari pernyataan case tidak penting.
  3. Klausa default boleh diletakkan di awal (secara konvensi diletakkan terakhir)
  4. Keyword break harus disertakan pada akhir dari setiap pernyataan case, digunakan untuk melompat ke akhir dari blok switch.
  5. 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;
}

 

Exit mobile version