Pages

Friday, 19 June 2015

Pembahasan Penggunaan Seleksi Bersarang pada Pemrograman C++

Seleksi Bersarang? Ada ya? Tentu saja ada, tadi baru saja saya sebutkan. Dalam berbagai persoalan kadang kita membutuhkan suatu seleksi bersarang/bertingkat/nested. Ya, terserah para pembaca mau menyebutnya apa. Yang jelas disini di dalam percabangan akan ada percabangan lagi. Biasanya yang sering dipakai adalah IF di dalam IF atau nested IF. Jarang orang menggunakan SWITCH di dalam SWITCH karena tidak efisien alias ribet. Tapi  ada juga yang menggunakan SWITCH di dalam IF atau sebaliknya. Ya terserah programmernya tentu saja mau menggunakan yang mana.

Ok, Bagaimana bentuk umum dari seleksi bersarang? Saya contohkan yang nested IF.




















Nah itu adalah bentuk umumnya, pusing? Saya juga. Ok, kita langsung ke contoh saja. Misalkan saja ada sebuah kasus menentukan komisi yang akan diberikan berdasarkan tingkat penjualan yang di capai oleh seorang sales. Jika penjualannya mencapai 200000 maka komisi yang dia dapatkan 20% dari total penjualannya. Jika penjualannya lebih dari 200000 maka komisi yang dia dapatkan bervariasi, mulai dari 30%,40%,dan 45% tergantung dari total penjualannya. Berikut source code dan outputnya.













































Ok, contoh lain. Disini kita akan membuat sebuah program penghitung luas. Di dalamnya ada luas persegi panjang dan luas lingkaran. Ok, langsung saja kita lihat seperti apa outputnya.





















Dari outputnya terlihat bahwa program akan terus berjalan jika kita memilih 1. Apa yang digunakan untuk membuat program ini?

Ok, program di atas selain menggunakan percabangan juga menggunakan fungsi goto; fungsi ini digunakan untuk meloncat ke statemen yang kita pilih. Meskipun goto; relatif mudah dan efektif namun penggunaannya harus diminimalisir karena menggunakannya terlalu sering akan membuat program kita bolak-balik atas ke bawah terus sedangkan di C++ pembacaan program itu berurutan dari atas sampai bawah atau dengan kata lain terstruktur.

Sepertinya cukup berkata-katanya, kita cek source code nya:

#include <iostream>
#include <conio.h>
using namespace std;

main() {
int l,p,r,pil,t;
float Luas,Kel;
const float phi=3.14;
bool jwb;

cek:
cout<<"Pilihan menu :\n";
cout<<"[1] Luas Lingkaran \n";
cout<<"[2] Luas Persegi Panjang\n"; 
cout<<"Masukkan pilihan anda : ";
cin>>pil;

switch (pil){
            case 1 :
            cout<<"Masukkan jari-jari : ";cin>>r;
      Luas=phi*(r*r);
      cout<<"\nLuas Lingkaran : "<<Luas<<endl<<endl;
      cout<<"Anda ingin pilih lagi?[1=ya,0=tdk] ";
              cin>>jwb;
                  if(jwb==1)
                    goto cek;
                  else
                    cout<<"Terima kasih";
                  break;

   case 2 :
            cout<<"Masukkan panjang : ";cin>>p;
      cout<<"Masukkan lebar : ";cin>>l;
      Luas=p*l;
      cout<<"\nLuas Persegi Panjang: "<<Luas<<endl<<endl;
      cout<<"Anda ingin pilih lagi?[1=ya,0=tdk] ";cin>>jwb;
                  if(jwb==1)
                    goto cek;
                  else
                    cout<<"Terima kasih";
      break;
  
   default :
            cout<<"Maaf pilihan menu yang anda inputkan tidak terdaftar ";
      cout<<"\nAnda ingin pilih lagi?[1=ya,0=tdk] ";cin>>jwb;
                  if(jwb==1)
                    goto cek;
                  else
                    cout<<"Terima kasih";
      break;
      }

getch();
}

Program diatas menggunakan selekse bersarang IF di dalam SWITCH.
Untuk menggunakan goto, kita harus membuat label terlebih dulu. Label ini diletakkan dimana kita ingin program itu berulang. Penamaan label mempunyai aturan yang tidak jauh berbeda dengan identifier. Kalau lupa bisa cek di post sebelumnya Identifier dan Tipe Data yang Digunakan pada Bahasa Pemrograman C++

Bentuk umum:
Nama_label:
statemen;
statemen;
goto Nama_label;

Program kali ini cukup panjang, makanya tidak saya print screen, hehe. Silakan bagi yang ingin mencoba. Jika menemukan error atau kebingungan bisa langsung comment. Terima Kasih, semoga postingan ini bisa membantu para pembaca yang mungkin sedang mendapatkan tugas untuk membuat program. See you in the next post.

No comments:

Post a Comment