MODUL V PERCABANGAN Percabangan digunakan untuk memecahkan persoalan untuk mengambil suatu keputusan diantara sekian pernyataan yang ada.
Pernyataan if Pernyataan if mempunyai pengertian, “Jika kondisi bernilai benar, maka perintah akan dikerjakan dan jika tidak memenuhi syarat maka akan diabaikan”. Dari pengertian tersebut dapat dilihat dari diagram alir berikut:
T Kondisi
Y Perintah
Bentuk Umum dari pernyataan if: if (kondisi) { // pernyataan } Contoh Program: /** * ------------------------------------* Program5-1.cpp : * ------------------------------------**/ #include
#include void main() { if (true) { cout << "Perintah ini akan dijalankan\n";
} if (!true) { cout << "Perintah ini TIDAK akan dijalankan\n"; } if (1+1 == 2 && 100 > 99) { cout << "Anda benar\n"; } getch(); } Pada contoh di atas, perintah akan dijalankan jika kondisi akhir bernilai benar. Berikut ini contoh program untuk menentukan besarnya potongan dari pembelian barang dengan kriteria: Tidak ada potongan jika total pembelian kurang dari Rp. 50.000,Jika total pembelian lebih dari atau sama dengan Rp. 50.000,- potongan yang diterima sebesar 20% dari total pembelian. /** * ------------------------------------* Program5-2.cpp : * contoh penggunakan if * ------------------------------------**/ #include #include void main() { double tot_beli, potongan = 0, jum_bayar = 0; cout << "Total pembelian Rp. "; cin >> tot_beli; if ( tot_beli >= 50000 ) { potongan = 0.2 * tot_beli; } cout << "Besarnya potongan Rp. " << potongan << endl; jum_bayar = tot_beli - potongan; cout << "Jumlah yang harus dibayarkan Rp . " << jum_bayar; getch(); }
Hasil Eksekusi: Total pembelian Rp. 70000 Besarnya potongan Rp. 14000 Jumlah yang harus dibayarkan Rp . 56000
Pernyataan if - else Pernyataan if mempunyai pengertian, “Jika kondisi bernilai benar, maka perintah-1 akan dikerjakan dan jika tidak memenuhi syarat maka akan mengerjakan perintah-2”. Dari pengertian tersebut dapat dilihat dari diagram alir berikut:
Kondisi
T
Y Perintah-1
Perintah-2
Bentuk Umum dari pernyataan if-else: if (kondisi) { // pernyataan 1 } else { // pernyataan 2 }
Berikut ini contoh program untuk menentukan besarnya potongan dari pembelian barang dengan kriteria: Jika total pembelian kurang dari Rp. 50.000,- maka potongan yang diterima sebesar 5% dari total pembelian. Jika total pembelian lebih dari atau sama dengan Rp. 50.000,- potongan yang diterima sebesar 20% dari total pembelian.
/** * ------------------------------------* Program5-3.cpp : * contoh penggunakan if-else * ------------------------------------**/ #include #include void main() { double tot_beli, potongan = 0, jum_bayar = 0; cout << "Total pembelian Rp. "; cin >> tot_beli; if ( tot_beli >= 50000 ) { potongan = 0.2 * tot_beli; } else { potongan = 0.05 * tot_beli; } cout << "Besarnya potongan Rp. " << potongan << endl; jum_bayar = tot_beli - potongan; cout << "Jumlah yang harus dibayarkan Rp . " << jum_bayar; getch(); } Hasil Eksekusi: Total pembelian Rp. 49000 Besarnya potongan Rp. 2450 Jumlah yang harus dibayarkan Rp . 46550
Pernyataan Nested if Nested if merupakan pernyataan if yang berada di dalam pernyataan if yang lain. Bentuk penulisan pernyataan nested if adalah: if (kondisi1) { if (kondisi2) {
// perintah } else { // perintah } } else { if (kondisi3) { // perintah } else { // perintah } }
Contoh Kasus: Suatu perusahaan memberikan komisi kepada para salesman dengan ketentuan sebagai berikut: Bila salesman dapat menjual barang hingga Rp. 2.000.000, - maka akan diberikan uang jasa sebesar Rp. 500.000,- ditambah dengan uang komisi Rp. 10% dari pendapatan yang diperoleh hari itu. Bila salesman dapat menjual barang di atas Rp. 2.000.000, - maka akan diberikan uang jasa sebesar Rp. 500.000,- ditambah dengan uang komisi Rp. 15% dari pendapatan yang diperoleh hari itu. Bila salesman dapat menjual barang di atas Rp. 5.000.000, - maka akan diberikan uang jasa sebesar Rp. 1.000.000,- ditambah dengan uang komisi Rp. 20% dari pendapatan yang diperoleh hari itu. /** * ------------------------------------* Program5-4.cpp : * contoh penggunakan nested if * ------------------------------------**/ #include #include void main() { long pendapatan, jasa = 0, komisi = 0, total = 0; cout << "Pendapatan hari ini Rp. "; cin >> pendapatan; if ( pendapatan > 0 && pendapatan <= 2000000) { jasa = 500000; komisi = 0.1 * pendapatan;
} else { if ( pendapatan <= 5000000 ) { jasa = 500000; komisi = 0.15 * pendapatan; } else { jasa = 1000000; komisi = 0.2 * pendapatan; } } total = cout << cout << cout << cout <<
komisi + jasa; "Uang jasa Rp. " << jasa << endl; "Uang Komisi Rp. " << komisi << endl; "------------------------------" << endl; "Hasil Total Rp. " << total << endl;
getch(); }
Hasil Eksekusi: Pendapatan hari ini Rp. 3500000 Uang jasa Rp. 500000 Uang Komisi Rp. 524999 -----------------------------Hasil Total Rp. 1024999
Pernyataan if-else Majemuk Bentuk dari if-else majemuk bertingkat sebenarnya mirip dengan nested if. Keuntungan penggunakan if-else bertingkat dibanding dengan nested if adalah bentuk penulisannya yang lebih sederhana. if (kondisi1) { // perintah 1 } else if (kondisi2) { // perintah 2 } else { // perintah N }
Berikut ini adalah penyederhanaan dari kasus sebelumnya dengan menggunakan if-else majemuk. /** * ------------------------------------* Program5-5.cpp : * contoh penggunakan if-else majemuk * ------------------------------------**/ #include #include void main() { long pendapatan, jasa = 0, komisi = 0, total = 0; cout << "Pendapatan hari ini Rp. "; cin >> pendapatan; if ( pendapatan > 0 && pendapatan <= 2000000) { jasa = 500000; komisi = 0.1 * pendapatan; } else if ( pendapatan <= 5000000 ) { jasa = 500000; komisi = 0.15 * pendapatan; } else { jasa = 1000000; komisi = 0.2 * pendapatan; } total = cout << cout << cout << cout << getch();
komisi + jasa; "Uang jasa Rp. " << jasa << endl; "Uang Komisi Rp. " << komisi << endl; "------------------------------" << endl; "Hasil Total Rp. " << total << endl;
}
Pernyataan switch - case Pernyataan switch – case memiliki kegunaan yang sama seperti if – else bertingkat, tetapi untuk memeriksa data yang bertipe karakter atau integer. Bentuk penulisannya seperti berikut: switch (ekspresi) { case kontanta-1: // pernyataan 1 break; case konstanta-2: // perintah 2 break; default: // perintah } Contoh Program: /** * ------------------------------------* Program5-5.cpp : * contoh penggunakan switch-case * ------------------------------------**/ #include #include void main() { int nHari; cout << "Masukkan No Hari [1..7] : "; cin >> nHari; cout << "Ini adalah hari "; switch (nHari) { case 1: cout << "Ahad"; break; case 2: cout << "Senin"; break; case 3: cout << "Selasa"; break;
case 4: cout << break; case 5: cout << break; case 6: cout << break; case 7: cout << break; default: cout <<
"Rabu";
"Kamis";
"Jum'at";
"Sabtu";
"Kiamat :))";
} getch(); } Hasil Eksekusi: Masukkan No Hari [1..7] : 5 Ini adalah hari Kamis Pernyataan break menunjukkan siap keluar dari switch. Jika pernyataan ini tidak ada, maka program akan diteruskan ke cabang-cabang yang lainnya. Contoh Program: /** * ------------------------------------* Program5-5.cpp : * contoh penggunakan switch-case * ------------------------------------**/ #include #include void main() { char jkl; cout << "Gender Anda (L/P) : "; cin >> jkl;
cout << "Anda adalah "; switch (jkl) { case 'p': case 'P': cout << "Perempuan"; break; case 'l': case 'L': cout << "Laki-laki"; break; default: cout << "Complecated"; } getch(); }
Hasil Eksekusi: Gender Anda (L/P) : l Anda adalah Laki-laki
Tugas Perusahaan DINGIN DAMAI, memberikan Honor tetap kepada karyawan kontraknya sebesar Rp.500.000,- per bulan, ditambah tunjangan sebagai berikut: Tunjangan Jabatan Golongan 1 2 3
Persentase 5% 10% 15%
Tunjangan Pendidikan Kode 1 2 3
Pendidikan SMU D3 S1
Persentase 2,5% 5% 7,5%
Honor Lembur Jumlah jam kerja normal sebanyak 8 jam. Honor lembur diberikan jika jumlah jam kerja lebih dari 8 jam. Kelebihan jam kerja tersebut dikalikan dengan honor lembur per jam sebesar Rp. Rp. 2.500,- untuk setiap kelebihan jam kerja per hari. Tampilan yang diinginkan adalah sebagai berikut:
Layar Masukan Program Hitung Honor Karyawan Kontrak PT. DINGIN DAMAI Nama Karyawan Golongan Pendidikan (1/2/3) Jumlah Jam kerja
: : : :
... ... ... ...
Layar Keluaran Karyawan yang bernama : .... Honor yang diterima Honor Tetap Rp. ... Tunjangan jabatan Rp. ... Tunjangan Pendidikan Rp. ... Honor Lembur Rp. ... -------------------------------Honor yang diterima Rp. ...