Pemilihan(Selection)
Kita dapat menggunakan struktur kontrol pilihan dalam pseudocode untuk menggambarkan sebuah
pilihan diantara dua atau lebih tindakan, tergantung kepada sebuah kondisi
adalah benar atau salah. Kondisi ini berdasarkan pada
sebuah perbandingan 2 hal, dan biasanya diekspresikan dengan salah satu operator hubungan/relational berikut ini :
< kurang dari
= sama
dengan
>= lebih
besar atau sama
> lebih dari
<= kurang atau sama dengan<> tidak sama
Struktur pemilihan ini merupakan suatu
implementasi algoritma dalam pemecahan suatu masalah dengan berbagai alternatif
jawaban yang tersedia dan Anda harus mengambil keputusan untuk memilih salah
satu jawaban yang tepat.
C++ menyediakan dua perintah pengambilan keputusan
yaitu perintah IF dan perintah SWITCH yang disertai dengan CASE
- Perintah IF –
Tanpa Else
Bentuk
Umum Algoritma
If kondisi then
Pernyataan (jika kondisi
bernilai benar)
End if
Dalam Bahasa Pemrograman C++
if (kondisi)
pernyataan;
Hal paling penting dalam penggunaan IF adalah pemahaman soal yang
selanjutnya diterjemahkan dalam kondisi,
yaitu membuat formula perbandingan dengan menggunakan operator hubungan.
Contoh:
IF jenis_kelamin = ‘w’ THEN
jumlah_wanita = jumlah_wanita + 1
END IF
Atau dalam C++
if (jenis_kelamin ==’w’)
{ jumlah_wanita=jumlah
_wanita +1;}
Pasangan kurung kurawal
(paranthesis) untuk pernyataan yang jumlahnya satu adalah optinal namun apabila pernyataan majemuk(lebih dari satu wajib, digunakan tanda { untuk mengawalinya dan tanda } untuk mengakhiri
pernyataaan pada perintah IF.
if (kondisi)
{
pernyataan1;
pernyataan2;
pernyataan3;
…..
pernyataan ke n;
}
- Perintah IF.. Else
Bentuk
umum IF...Else
IF kondisi THEN
Pernyataan1;
ELSE
Pernyataan2;
END IF
Dalam Bahasa C++
if (kondisi)
Pernyataan1;
else
Pernyataan2;
Sedangkan untuk majemuk (lebih dari satu pernyataan)
if (kondisi)
{
Pernyataan_1;
Pernyataan_2
...
Pernyataan_n;
}
else
{
Pernyataan_5;
Pernyataan_6;
.....
Pernyataan_n;
}
Bentuk ini mempunyai arti jika kondisi benar maka pernyataan 1 akan dikerjakan dan jika kondisi salah (tidak terpenuhi)
maka pernyataan 2 yang akan dikerjakan.
Kasus 4.1:
Algoritma mencetak bilangan terbesar dari dua bilangan
- Masukkan bilangan1
- Masukkan bilangan2
- IF bilangan1 > bilangan2 THEN
Cetak “Bilangan terbesar
adalah bilangan1”
Cetak bilangan1
ELSE
Cetak “Bilangan terbesar adalah
bilangan2”
Cetak bilangan2
END
IF
- Selesai
Untuk kasus di atas dipecahkan dalam program
sebagai berikut:
#include
<iostream.h>
#include
<conio.h>
void
main()
{
int bil1, bil2;
cout<<"Masukan
bilangan 1:";
cin>>bil1;
cout<<"Masukan
bilangan 2:";
cin>>bil2;
if
(bil1>bil2)
cout<<"Bilangan
terbesar yang Anda masukkan adalah :"<<bil1;
else
cout<<"Bilangan
terbesar yang Anda masukkan adalah :"<<bil2;
}
Kasus
4.2 IF ..Else dengan pernyataan yang
dikalkulasi
Warung “Murah Meriah” memberikan diskon menarik untuk pelanggannya
jika pembelian mencapai Rp. 2.000.000 maka mendapat diskon 5%, dan Bonus = Kaos.
- Masukkan pembelian
- Jika
pembelian lebih besar sama dengan Rp. 2.000.000, maka Dis = 5%*2.000.000
dan Bonus = Kaos.
- Tampilkan Pembelian
- Tampilkan diskon
- Tampilkan total
- Tampilkan Bonus
Program untuk kasus di atas adalah:
#include
<iostream.h>
#include
<conio.h>
void
main()
{
long pembelian,disk, total;
disk = 0;
total = 0;
cout<<"Masukan pembelian:";
cin>>pembelian;
if (pembelian>=2000000)
disk=0.05*pembelian;
total = pembelian-disk;
cout<<"Jumlah
Pembelian:"<<pembelian<<endl;
cout<<"Jumlah diskon
:"<<disk<<endl;
cout<<"Jumlah yang
dibayar:"<<total<<endl;
}
- NESTED
IF – IF Bersarang LINIER (IF dengan kondisi lebih dari satu)
Kombinasi pernyataan IF adalah pernyataan IF yang berisi banyak
kondisi dan sejenis. Untuk lebih
jelasnya perhatikan contoh kasus 4.3.
Kasus 4.3 dengan menggunakan lebih dari satu kondisi
Algoritma untuk mencetak warna, bila diketahui warna kuning untuk
kode 1, Biru untuk kode 2 sedangkan ungu untuk kode 3
- Masukkan Kode warna
- IF Kode_warna = 1 THEN
Cetak “
Kuning”
ELSE IF Kode_warna = 2 THEN
Cetak “Biru”
ELSE
CETAK
“Ungu”
- Selesai
Program untuk masalah di atas adalah:
#include
<iostream.h>
#include
<conio.h>
void
main()
{
int kode;
cout<<"Masukan
Kode Warna:";
cin>>kode;
if (kode ==1)
cout<<"Warna
yang Anda sukai adalah Kuning";
else if (kode ==2)
cout<<"Warna yang Anda sukai
adalah Biru";
else
cout<<" Warna yang Anda sukai
adalah Ungu";
}
Lakukan perubahan program bila kode warna yang
dimasukkan selain angaka 1, 2, dan 3, maka akan tercetak pernyataan “Kode yang
Anda masukkan salah”
- NESTED IF – IF Bersarang NON-LINIER
Kombinasi pernyataan IF adalah pernyataan IF yang berisi banyak
kondisi dan beda untuk jenis
kondisinya. Setiap pernyataan bisa menggunakan operator
logika AND (DAN) atau OR (ATAU). Jika kondisi dikombinasikan dengan menggunakan
penghubung AND, kedua kondisi harus bernilai benar untuk membuat kondisi
kombinasi bernilai benar. Jika
kondisi dikombinasikan dengna menggunakan penghubung OR, salah satu dari
konsidi bernilai benar maka pernyataan bisa dikerjakan.
Perintah ini sering disebut dengan nested-if (if bersarang). Perintah
ini bentuk umumnya adalah:
IF kondisi THEN
IF kondisi2 THEN
Pernyataan1;
Else
Pernyataan2;
Kasus 4.4
Suatu rental VCD memberlakukan ketentuan sebagai berikut:
Bila menyewa lebih dari atau sama dengan 10 dan
menjadi anggota tetap maka mendapat diskon 0.10 tapi bila bukan member dia
mendapatkan diskon 0.05.
Bila menyewa lebih dari atau sama dengan 5 dan
menjadi anggota tetap maka mendapat diskon 0.05 dan bila bukan member tidak
mendapatkan diskon, selainnya itu maka
tidak mendapatkan diskon.
Petunjuk:
Bila menjadi Anggota kode yang dimasukkan 1
Bila bukan Anggota kode yang dimasukkan 2
Algoritma untuk masalah tersebut adalah:
Masukan kode_anggota
Masukan jumlah_CD
IF jumlah_cd >= 10 THEN
IF kode_anggota = 1 THEN
Diskon = 0.1
ELSE
Diskon = 0.05
END IF
ELSE IF jumlah_cd>=5 THEN
IF kode_anggota = 1 THEN
Diskon = 0.05
ELSE
Diskon = 0
END IF
ELSE
Diskon =0
Kasus tersebut dapat dipecahkan dengan
menggunakan operator logika “AND”, algoritmanya menjadi
IF jumlah_cd >= 10 AND IF kode_anggota = 1 THEN
Diskon = 0.1
ELSE IF jumlah_cd >= 10 AND IF kode_anggota = 2 THEN
Diskon = 0.05
ELSE IF jumlah_cd>=5 AND IF
kode_anggota = 1 THEN
Diskon = 0.05
ELSE
Diskon =0
Untuk kasus di atas bila dipecahkan dalam c++
adalah:
#include
<iostream.h>
#include
<conio.h>
void
main()
{
int jml_sewa, kd_anggota;
float harga,disk,bayar, tot;
harga = 3000;
disk = 0;
cout<<"Masukan Jumlah Kaset yang Disewa:";
cin>>jml_sewa;
cout<<"Masukan Kode Anggota:";
cin>>kd_anggota;
bayar =
jml_sewa * harga;
if
(jml_sewa >= 10)
if (kd_anggota == 1)
{
cout<<"Anda diskon 10
%";
disk = bayar * 0.1;
}
else
{
cout<<"Anda diskon 5
%";
disk = bayar * 0.05;
}
else if
(jml_sewa >= 5)
if (kd_anggota == 1)
{
cout<<"Anda diskon 5 %";
disk = bayar * 0.05;
}
else
cout<<"Anda Tidak
Diskon";
else
cout<<"Anda Tidak
Diskon";
tot = bayar - disk;
cout<<"\nHarga Sewa sebelum didiskon;"<<bayar;
cout<<"\nHarga Sewa setelah didiskon;"<<tot;
}
Perhatikan program berikut ini untuk menyelesaikan
kasus 5.4 tunjukkan perbedaannya dan jelaskan
#include
<iostream.h>
#include
<conio.h>
void main()
{
int jml_sewa, kd_anggota;
float harga,disk,bayar, tot;
harga = 3000;
disk = 0;
cout<<"Masukan Jumlah Kaset yang Disewa:";
cin>>jml_sewa;
cout<<"Masukan Kode Anggota:";
cin>>kd_anggota;
bayar = jml_sewa * harga;
if
(jml_sewa >= 10 && kd_anggota == 1)
{
cout<<"Anda diskon 10 %";
disk = bayar * 0.1;
}
else if
(jml_sewa >= 10 && kd_anggota == 2)
{
cout<<"Anda diskon 5 %";
disk = bayar * 0.05;
}
else if
(jml_sewa >= 5 && kd_anggota == 1)
{
cout<<"Anda diskon 5 %";
disk = bayar * 0.05;
}
else if
(jml_sewa >= 5 && kd_anggota == 2)
cout<<"Anda Tidak Diskon";
else
cout<<"Anda Tidak
Diskon";
tot = bayar - disk;
cout<<"\nHarga Sewa sebelum didiskon;"<<bayar;
cout<<"\nHarga Sewa setelah didiskon;"<<tot;
}
Perintah SWITCH
Perintah SWITCH merupakan pernyataaan yang dirancang untuk menangani
pengambilan keputusan yang melibatkan sejumlah alternatif yang diantaranya
untuk menggantikan pernyataan IF bersarang
LINIER dengan menggunakan operator hubungan “=”
atau “samadengan” saja.
Bentuk Umum
Switch (ekspresi)
{
Case konstanta1:
Pernyataan1;
Break;
Case konstanta2:
Pernyataan2;
Break;
Case konstanta3:
Pernyataan3;
Break;
…….
…….
Case konstanta ke n:
Pernyataan ke n;
Break;
Default:
Pernyataan x
}
Bentuk ekspresi dapat bertipe integer atau
karakter begitu juga untuk konstanta.
Pengujian pada switch akan dimulai dari
konstanta1. Apabila nilainya cocok dengan ekspresi maka pernyataan1 akan
dijalankan. Kalau tidak cocok maka akan beralih ke pernyataaan2 dan seterusnya
sampai hasil yang diinginkan.
Perintah break menyebabkan eksekusi
menyebabkan ekskursi diarahkan ke akhir switch kalau nilai konstanta1 tidak
sama dengan nilai ekspresi dan kemudian baru diteruskan pengujian dengna
konstanta2 dan seterusnya. Jika sampai pada pengujian akhir tidak ada yang
cocok maka default akan dijalankan.
Jika pernyataan break tidak diikutsertakan
pada setiap case maka walupun konstanta cocok dengan ekspresi, maka setelah
pernyataan pada case tersebut dikerjakan akan dilanjutkan ke case berikutnya
sampai ditemui pernyataan break pada akhir switch.
Kasus 5.4
Misalkan ada permasalahan dimana Anda
diminta untuk membuat algoritma dan pemrograman untuk menentukan menu makanan
berdasakan kose yang dimasukkan. Adapun kode yang dimasukkan mulai dari A, B,
C, D, E, F dan G. Input dari permasalahan di atas adalah kode dan keluaranya
adalah menu makanana. Untuk lebih jelasnya perhatikan keterangna berikut:
Jika kode = A, maka menu = Yogya
Jika kode = B, maka menu = Padang
Jika kode = C, maka menu = Cina
Jika kode = D, maka menu = Jawa Timur
Jika kode = E, maka menu = Eropa
Jika kode = F, maka menu = Laut
Jika kode = G, maka menu = Jepang
Algoritma untuk kasus di atas adalah:
- Masukkan
kode
- Jika kode = A, maka menu = Yogya
- Jika kode = B, maka menu = Padang
- Jika kode = C, maka menu = Cina
- Jika kode = D, maka menu = Jawa Timur
- Jika kode = E, maka menu = Eropa
- Jika kode = F, maka menu = Laut
- Jika kode = G, maka menu = Jepang
- Tampilkan
kode dan hari
Program untuk kasus di atas dipecahakan
dengan if adalah:
#include
<iostream.h>
#include
<conio.h>
#include
<ctype.h>
void
main()
{
char kdmenu;
cout<<"Masukkan Kode Menu [A - G]:";
cin>>kdmenu;
kdmenu = toupper(kdmenu);
if
(kdmenu =='A')
cout<<"Khas Yogya";
else
if (kdmenu =='B')
cout<<"Khas Padang";
else
if (kdmenu =='C')
cout<<"Khas Cina";
else
if (kdmenu =='D')
cout<<"Khas Jawa Timur";
else
if (kdmenu =='E')
cout<<"Khas Eropa";
else
if (kdmenu =='F')
cout<<"Khas Laut";
else if
(kdmenu =='G')
cout<<"Khas Jepang";
else
cout<<"Kode yang Anda
Masukkan Salah";
}
Program untuk kasus di atas dipecahakan dengan case adalah:
#include
<iostream.h>
#include
<conio.h>
#include
<ctype.h>
void
main()
{
char kdmenu;
cout<<"Masukkan Kode Menu [A - G]:";
cin>>kdmenu;
kdmenu = toupper(kdmenu);
switch
(kdmenu)
{
case
'A':
cout<<"Khas
Yogya";
break;
case
'B':
cout<<"Khas
Padang";
break;
case
'C':
cout<<"Khas
Cina";
break;
case
'D':
cout<<"Khas
Jawa Timur";
break;
case
'E':
cout<<"Khas
Eropa";
break;
case
'F':
cout<<"Khas
Laut";
break;
case
'G':
cout<<"Khas
Jepang";
break;
default:
cout<<"Kode
yang Anda Masukkan Salah";
}
}