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