30 April 2020
BAB VI STRUKTUR PERCABANGAN
1. Percabangan 1 Kondisi
Struktur percabangan dengan satu kondisi pada Bahasa Pascal mempunyai sintaks
sebagai berikut.
if (kondisi) then
Pernyataan;
Jika pernyataan lebih dari satu maka dituliskan
if (kondisi) then
Begin
Pernyataan1;
Pernyataan2;
dst;
end;
Perhatikan permasalahan berikut.
a) Sebuah Toko Baju memberlakukan diskon akhir tahun sebesar 20% untuk semua koleksi yang dijual. Namun diskon akan dinaikkan menjadi 25% jika total belanjaan lebih dari 200ribu rupiah. Untuk itu toko tersebut membutuhkansebuah program untuk menghitung jumlah uang yang harus dibayarkan oleh pelanggan untuk baju-baju yang telah dibeli.
b) Di sebuah perusahaan gaji pegawai teridri dari gaji pokok, tunjangan keluarga dan dikurangi 30 ribu untuk asuransi kesehatan pekerja. Gaji pokok tiap pekerja berbeda-beda sehingga perlu diinputkan oleh operator, sedangkan tunjangan keluarga dihitung sama untuk semua karyawan, sebesar 10% dari gaji pokok. Khusus bagi karyawan dengan masa kerja lebih dari 20 tahun maka total gajinya akan ditambahkan dengan tunjangan pengabdian sebesar 500 ribu. Untuk itu persahaan tersebut membutuhkan program perhitungan gaji para karyawannya.
Jika dilihat pada permasalahan di atas, pada kasus 1, setiap pembelanjaan dapat diskon sebesar 20% dari harga normal. Namun jika total belanjaan lebih dari 200 ribu maka diskonnya menjadi 25%, maka hal ini dapat dinyatakan dalam algoritma sebagai berikut.
Pertama tentukan semua variabel terlebih, dahulu. Ada hargaTotalBelanja, prosentase diskon (skala 1-100), besar diskon, dan TotalBayar. Selanjutnya dibuat algoritma berikut.
Algoritma DiskonBaju
Variabel hargaNormal, ProsenDiskon,:integer
BesarDiskon, hargaAkhir:bilangan real
1) READ TotalBelanja
2) ProsenDiskon=20
3) IF (TotalBelanja>=200000) THEN
4) ProsenDiskon=25
5) BesarDiskon=(ProsenDiskon/100)*TotalBelanja
6) TotalBayar=TotalBelanja-BesarDiskon
7) WRITE TotalBayar
8) END
Mengapa data harga normal, prosen diskon dengan besar diskon dan harga akhir mempunyai tipe data yang berbeda? Hal ini dikarenakan, dalam perhitungan besar diskon melibatkan operasi / yang akan menghasilkan bilangan real, sedangkan harga akhir hasil mengurangkan harga normal (integer) dengan harga diskon (real) sehingga menghasilkan bilangan real juga. Selanjutnya algoritma di atas akan dikonveris ke dalam bahasa pemrograman Pascal.
Karena pseudocode yang kita bahas adalah pseudocode berbasis Pascal, maka tidak ada perubahan yang berarti. Dalam bahasa pascal, struktur percabangan dengan 1 kondisi dituliskan,
if (kondisi) then
Pernyataan;
Jika pernyataan lebih dari satu maka dituliskan
if (kondisi) then
Begin
Pernyataan1;
Pernyataan2;
dst;
end;
Sekarang kita lihat bagaimana menyajikan algoritma di atas dalam bahasa Pascal.
Program DiskonBaju;
Uses crt;
var hargaNormal, ProsenDiskon:integer;
BesarDiskon, hargaAkhir: real;
Begin
Clrscr;
write(‘Masukkan total harga pembelian: ‘ );
readln( TotalBelanja);
ProsenDiskon:=20;
if (TotalBelanja>=200000) then
ProsenDiskon:=25;
BesarDiskon=(ProsenDiskon/100)*TotalBelanja;
TotalBayar=TotalBelanja-BesarDiskon;
writeln(‘Total harga yang harus dibayar ad alah : ‘, TotalBayar:6:2);
end.
2. Percabangan Dengan 2 Kondisi
Bentuk umum struktur percabnagan dengan dua kondisi menggunakan bahasa Pascal adalah
sebagai berikut
If (syarat) then
Pernyataan1
else
Pernyataan2;
untuk pernyataan tunggal pada tiap syarat, atau
If (syarat1) then
begin
Pernyataan1;
Pernyataan2;
end
else
begin
Pernyataan3;
Pernyataan4;
End;
Untuk pernyataan lebih dari satu untuk tiap syarat.
Program DiskonBaju;
var hargaNormal, ProsenDiskon:integer;
BesarDiskon, hargaAkhir: real;
Begin
write(‘Masukkan total harga pembelian: ‘ );
readln( TotalBelanja);
if (TotalBelanja>=200000) then
ProsenDiskon:=25
Else
ProsenDiskon:=25;
BesarDiskon=(ProsenDiskon/100)*TotalBelanja;
TotalBayar=TotalBelanja-BesarDiskon;
writeln(‘Total harga yang harus dibayar adalah : ‘, TotalBayar:6:2);
end.
Pada dasarnya program di atas adalah program untuk menyelesaikan permasalahan yang sama, hanya beda dalam penyajian saja. Hal ini sebagaimna pembahasan pada semester 1, bahwa ada percabngan dengan 1 kondisi, 2 kondisi atau lebih.
Pada percabangan 1 kondisi, ketika kondisi dipenuhi maka proses tertentu akan dijalankan, jika tidak maka tidak dilakukan apa-apa. Padahal dalam kehidupann nyata, permasalahan seringkali terjadi melibatkan dua kondisi. Misalkan “Jika nilai lebih besar 60 maka lulus, jiak tidak, maka tidak lulus”; “Jika rajin belajar maka naik kelas, jika tidak maka tinggal kelas”; “Jika bobot truk>=100 ton maka tidak boleh lewat, jika kurang dari itu boleh lewat”. Kenyatannya seperti itu dalam kehidupan sehari-hari sehingga percabangan dengan dua kondisi lebih banyak digunakan.
Seperti halnya pada contoh di atas, sebenarnya mempunyai dua kondisi, jika total belanja <200 ribu maka diskonnya 20% jika lebih besar atau sama dengan 200 ribu maka diskonnya menjadi 25%. Oleh karena itu pada percabangan dengan 1 kondisi pernyataan Prosendiskon:=20 diletakkan sebelum struktur if then, karena digunakan sebagai nilai default dari prosen diskon.
Hal ini dapat disjajikan dalam bentuk yang lebih cocok menggunakan struktur if then else sebagai bentuk percabangan dengan dua kondisi. Dalam percabangan 2 kondisi ini digunakan struktur if then else
3. Percabangan Lebih Dari Dua Kondisi
Struktur if then else if
Dalam pseudocode, percabangan dengan lebih dari dua kondisi dituliskan sebagai berikut:
IF (kondisi1) THEN
Pernyataan1
ELSEIF (kondisi2) THEN
Pernytaan2
ELSE
Pernyataan3
Sehingga dapat dibuat flowchartnya dalam bentuk sebagai berikut:
Perhatikan masalah berikut :
1. Perhitungan Gaji
Misalkan di sebuah perusahaan yang bergerak di bidang pemasaran, gaji pegawai dihitung berdasarkan gaji pokok dan bonus dari omset penjualan
Jika Omset>100 juta maka bonusnya adalah 1.5%*Omset Penjualan
Jika Omset antara 50-100 juta, bonusny adalah 1% *OmsetPenjualan
Jika kurang dari 50 juta maka ia tidak mendapatkan bonus.
Bagaimana mengimplementasikan aturan tersebut dalam program komputer?
2. Persewaan Mobil
Sebuah persewaan mobil mempunyai 4 jenis koleksi mobil, Avanza, Xenia, Innova dan Alphard.
Biaya persewaan mobil terdiri dari dua komponen, yaitu Biaya Sewa dan Biaya Asuransi.
Berikut ini adalah Tabel biaya sewa mobil dan asuransi
Akan dirancang sebuah program untuk menghitung biaya persewan mobil. Algoritma akan meminta inputan berupa Jenis Mobil yang disewa, dan lama hari menyewa. Asuransi dihitung
sekali bayar untuk berapappun lama peminjaman. Biaya peersewaan dihitung dengan menjumlahkan total biaya sewa untuk n hari ditambah dengan biaya asuransi.
Dalam hal ini untuk kasus diatas dapat dituliskan flowchart percabangannya dalam bentuk berikut:
Demikian juga pada bahasa Pascal, kita bisa menyajikan permasalahan di atas dalam sitantks
sebagai berikut.
if (kondisi1) then
pernyataan1
else if (kondisi2) then
pernyataan2
else
pernyataan3;
sehingga untuk permasalahan 1, dapat dituliskan bagian percabngannya adalah
if (Omset_Jual>100000000) then
bonus:=(1.5/100)*Omset_Jual
else if (Omset_Jual>=50000000) then
bonus:=(1/100)*Omset_Jual
else
bonus:=0;
Bagaimana dengan permasalahan kedua? Pada permasalahan kedua ini, kondisi jauh lebih banyak, dalam hal ini ada 5 cabang atau kondisi sesuai dengan banyaknya jenis mobil. Selain itu dalam setiap cabang ada lebih dari satu pernyataan sehingga sehingga dapat dituliskan kode dalam Pascalnya adalah sebagai berikut.
If (jenis_Mobil=’Avanza’) then
Begin
Pernyataan1;
Pernyataan2;
End
Else if (jenis_Mobil=’Avanza’) then
Begin
Pernyataan1;
Pernyataan2;
End
Else if (jenis_mobil=’’Innova’) then
Begin
Pernyataan1;
Pernyataan2;
End
Else
Pernyataan1;
Pernyataan2;
Sehingga dapat dituliskan bentuk flowchartnya adalah sebagai berikut.
Struktur case of
Perhatikan permasalahan kedua, dengan 5 kondisi (percabngan) maka penyajian algoritma menjadi memanjang ke kanan. Dan ini akan menjadi kurang menarik dan efektif dalam penulisan meskipun hasilnya tetap sama. Alternatifnya adalah dengan menggunakan struktur case of sebagai mana pada pembahasan algoritma.
Secara umum, sintaks struktur case of adalah sebagai berikut.
Case (variabelpilihan) of
Nilai1: pernyataan1;
Nilai2:pernytaan2;
Nilai3:pernyataan3;
...
Else
PernyataanElse;
end;
Pada struktur case of, seluruh kemungkinan nilai didaftar dan diberikan pernyataan yang
sesuai dengan nilai yang dimilki variabel. Ini tentu akan lebih efektif dibandingkan menggunakan if
then else if secara berulang-ulang. Kekuranganya bahwa struktur ini hanya bekerja pada variabel
dengan tipe data ordinal, yaitu tipe data yang dapat dihitung, dlam hal ini adalah integer, karakter
atau tipe data set (tipe data terstruktur). Jika variabel yang akan diubah dalam bentuk case of
belum menjadi salah satu bentuk ini maka perlu diubah ke salah satu bentuk tipe data. Caranya?
Sudah kalian pelajari di pembahasan semester lalu.
Lihat kembali permasalah kedua, yaitu persewaan mobil. Kita bisa membuatkan menu
pilihan untuk mewakili setiap jenis mobil. Misalkan ditampilkan di awal program keterangan berikut.
Mobil yang disewakan:
1. Avanza
2. Xenia
3. Innova
4. Alphard
Masukkan nomor pilihan mobil: ..............{baca sebagai variabel var_pilih}
Selanjutnya kita bisa menggantikan setiap jenis dengan nilai var_pilih dari 1, 2, 3, atau 4 untuk
masing-masing kategori mobil. Dengan ini maka var_pilih bertipe ordinal, sehingga dapat
diterapkan struktur case sabagai berikut.
case (var_pilih) of
1: begin
Pernyataan1a;
Pernyataan1b;
end;
2: begin
Pernyataan2a;
Pernyataan2b;
end;
3:begin
Pernyataan 3a;
Pernyataan 3b;
End;
Else
Begin
PernyataanElse1;
PernyataanElse2;
End;
End;
Selain kondisi berupa data tunggal, struktur case of juga dapat diterapkan pada interval data ordinal, emisalkan sebagai berikut. Dalam algoritma penghitungan bonus karyawan berdasarkan omset jual di atas. Agar dapat diterapkan struktur case of, maka besar omset jual dituliskan sebagai variabel dengan tipe integer (pembulatan) di mana nilainya dalam satuan juta.
Shingga jika variabel omset_jual= 125 artinya 125 juta, sehingga bonusnya dihitung (1.5/100)*omset_jual*1000000. Sekali lagi, ini adalah salah satu bentuk strategi untuk memecahkan masalah. Dengan demikian kita bisa memberikan alternatif solusi kondisi percabangan adalah sebagai berikut:
readln(omset_jual); {dalam juta}
case (omset_jual) of
0..49 : bonus:=0;
50..100 :bonus:=(1/100)*omset_jual*1000000;
else
bonus:=(1.5/100)*omset_jual*1000000;
end;
Struktur di atas meberikan gambaran bahwa struktur case of dapat diterapkan pada rentang nilai
dari suatu data ordinal. Bisa juga dengan mengggunakan tipe data karakter seperti berikut.
case (karakter) of
'a'..'j' : pernyataan1;
'k'..'p' :pernyataan2;
‘q’..'u' : pernyataan3
else
PernyataanElse;
end;
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar