materi 4: strukur kendali seleksi (if – else dan switch) web viewmateri 4: strukur kendali...

12
4. Materi 4: Strukur Kendali Seleksi (if – else dan switch) 4.1. If – else dengan satu kondisi Seringkali instruksi - instruksi dilaksanakan bila suatu persyaratan dipenuhi, dalam struktur penyeleksian, suatu instruksi atau sekelompok instruksi dapat dilewati, sementara instruksi lain dijalankan. Penulisan struktur kendali seleksi dengan satu kondisi: if (ekspresi boolean) statement; atau: if (ekspresi boolean) { statement1; statement2; } Pernyataan (statement, statement1, dan statement2) akan dilaksanakan jika dan hanya jika kondisi yang diinginkan terpenuhi (ekspresi boolean bernilai true), jika tidak program tidak memberikan hasil apa-apa. Contoh, program untuk menentukan apakah suatu bilangan termasuk bilangan ganjil: output dari kode diatas adalah

Upload: hoangphuc

Post on 01-Feb-2018

313 views

Category:

Documents


5 download

TRANSCRIPT

4. Materi 4: Strukur Kendali Seleksi (if – else dan switch)

4.1. If – else dengan satu kondisi

Seringkali instruksi - instruksi dilaksanakan bila suatu persyaratan dipenuhi,

dalam struktur penyeleksian, suatu instruksi atau sekelompok instruksi dapat

dilewati, sementara instruksi lain dijalankan.

Penulisan struktur kendali seleksi dengan satu kondisi:if (ekspresi boolean) statement;

atau:if (ekspresi boolean){

statement1;statement2;

}Pernyataan (statement, statement1, dan statement2) akan dilaksanakan

jika dan hanya jika kondisi yang diinginkan terpenuhi (ekspresi boolean bernilai

true), jika tidak program tidak memberikan hasil apa-apa. Contoh, program untuk

menentukan apakah suatu bilangan termasuk bilangan ganjil:

output dari kode diatas adalah

Bagian ekspresi boolean tersebut bernilai true, karena sisa pembagian dari 10 dibagi

2 adalah 1. Karena ekspresi boolean bernilai true, maka statement berikutnya

dikerjakan.

4.2. If – else dengan dua kondisi atau lebih

Penulisan struktur kendali seleksi dengan dua kondisi:

if (ekspresi boolean) statement1;

else statement2;atau:

if (ekspresi boolean){

Statement3;Statement4;

}else{

Statement5;Statement6;

}

Jika ekspresi boolean menghasilkan nilai TRUE, maka statement1 dan blok

statement3 dan statement4 yang akan dilaksanakan, jika tidak (FALSE) maka

statement2 dan blok statement4 dan statement6 yang akan dilaksanakan.

Contohnya dalam program untuk menentukan nilai terbesar dari tiga buah bilangan:

Output:

If-else juga dapat dibentuk bertingkat (nested if) dengan penulisan sintaks berikut:if (ekspresi boolean1) statement1;else if (ekspresi boolean2) statement2;else if (ekspresi boolean3) statement3;.....else statementN;

Contoh, misalnya program untuk menentukan suatu bilangan yang dimasukkan

apakah termasuk bilangan positif, negatif,atau nol:

Output program:

4.3. Switch

Konstruksi ini digunakan sebagai pengganti konstruksi if-else, bila

konstruksi if-else bertingkat terlalu jauh, sehingga menjadi sulit dibaca.

Sintaks konstruksi switch-case :switch (ekspresi){

case constant_1 : statements_1; break;case constant_2 : statements_2;…case constant_N : statements_N; break;default : statements;

}

Hal – hal yang perlu diperhatikan adalah :1. Dibelakang keyword case harus diikuti oleh sebuah constant, tidak boleh

diikuti oleh ekspresi ataupun variable.2. Constant yang digunakan bertipe int atau char.3. Jika bentuknya seperti diatas maka apabila ekspresi sesuai dengan constant_2

maka statement_2, statement_3 sampai dengan pernyataan lain dieksekusi. Untuk mencegah hal tersebut, gunakan keyword break;. Jika keyword break digunakan maka setelah statement_2 dieksekusi program langsung keluar dari pernyataan switch. Selain digunakan dalam switch, keyword break banyak digunakan untuk keluar dari pernyataan yang berulang ( looping ).

4. Baris default akan dieksekusi jika constant_1 sampai constant_N tidak ada yang memenuhi ekspresi.

Penggunaan switch - case dalam program sangat banyak, salah satunya adalah untuk

membuat menu program, berikut contohnya:

Output program:

#include <iostream.h>#include <conio.h>#include <stdio.h>

using namespace std;

int main(){ int menu;

cout << "*******************************" << endl; cout << "* SELAMAT DATANG DI PROGRAMKU *" << endl; cout << "* *" << endl; cout << "* silahkan pilih menu: *" << endl; cout << "*******************************" << endl << endl;

cout << "1. Input Data" << endl; cout << "2. Lihat Data" << endl; cout << "3. Hapus Data" << endl; cout << "4. Edit Data" << endl; cout << "5. EXIT" << endl << endl; cout << "pilih menu: "; cin >> menu;

switch(menu) { case 1: cout << "menu input data dipilih"; break; case 2: cout << "menu lihat data dipilih"; break; case 3: cout << "menu hapus data dipilih"; break; case 4: cout << "menu edit data dipilih"; break; case 5: exit(0); }

getch();}

4.4. Contoh penggunaan seleksi

1. Program cek tahun kabisat

Problem: buatlah program untuk mengecek apakah tahun yang dimasukan

user merupakan tahun kabisat atau bukan.

Solve: tahun kabisat adalah tahun yang habis dibagi 4. Jadi sisa pembagian

antara tahun dan 4 adalah 0.

Jika tahun%4 = 0, maka tahun adalah tahun kabisat.

Jika tahun%4 ≠ 0, maka tahun bukan tahun kabisat.

Program:

Output:

2. Menghitung indeks nilai mahasiswa

Problem: nilai indeks mahasiswa ditentukan berdasarkan nilai ujian yang

diraih. Ketentuan pemberian nili indeks adalah:

Jika nilai ujian lebih dari sama dengan 80 maka indeks adalah A. Jika nilai

ujian lebih dari sama dengan 70 dan kurang dari 80 maka indeks adalah B.

Jika nilai lebih dari sama dengan 60 dan kurang dari 70 maka indeks adalah

C. Sedangkan jika kurang dari 60 maka indeks adalah D.

Solve: penentuan indeks dapat menggunakan if-else berikut:

if(nilai >= 80) indeks = ‘A’;

if(nilai>=70 && nilai<80) indeks = ‘B’;

if(nilai>=60 && nilai<70) indeks = ‘C’;

if(nilai<60) indeks = ‘D’;

Program:

Output program:

3. Menentukan upah karyawan berdasarkan golongan

Problem: misalkan karyawan PT ABCD dikelompokkan berdasarkan

golongan. Upah per jam tiap karyawan bergantung pada golongan gaji

golongan A adalah Rp 40000/jam, golongan B adalah Rp 50000/jam,

golongan C adalah Rp 60000/jam, dan golongan D adalah Rp 70000/jam.

Jumlah jam kerja yang normal selama seminggu adalah 48 jam. Kelebihan

jam kerja dianggap lembur dengan upah lembur adalah Rp 30000/jam

untuk semua golongan. Buatlah program yang membaca nama karyawan,

golongan, dan jumlah jam kerja. Ouput:

/*program mencari indeks mahasiswa*/

#include <iostream.h>#include <conio.h>

using namespace std;

int main(){ string nama_mahasiswa; float nilai; char indeks; cout << "input nama mahasiswa -> "; cin >> nama_mahasiswa; cout << "input nilai -> "; cin >> nilai; if(nilai >= 80) indeks = 'A'; if(nilai>=70 && nilai<80) indeks = 'B'; if(nilai>=60 && nilai<70) indeks = 'C'; if(nilai<60) indeks = 'D'; cout << "indeks nilai untuk " << nama_mahasiswa << " adalah \'" << indeks << "\'"; getch();

}

Solve:

switch(golongan)

{

case 'A' : gaji_pokok = 40000; break;

case 'B' : gaji_pokok = 50000; break;

case 'C' : gaji_pokok = 60000; break;

case 'D' : gaji_pokok = 70000; break;

}

if(jam_kerja > jam_kerja_normal)

gaji_lembur = (jam_kerja - jam_kerja_normal) * 30000;

else

gaji_lembur = 0;

Program:

Lanjut di halaman berikutnya

/*program penggajian karyawan berdasarkan golongan*/

#include <iostream.h>#include <conio.h>

using namespace std;

const int jam_kerja_normal = 48;

int main(){ string nama; char golongan; int jam_kerja; long gaji_pokok; long total_gaji; long gaji_lembur; cout << "input nama: "; cin >> nama; cout << "input golongan (A, B, C, atau D): "; cin >> golongan; cout << "input jam kerja: "; cin >> jam_kerja; //menentukan gaji golongan switch(golongan) { case 'A' : gaji_pokok = 40000; break; case 'B' : gaji_pokok = 50000; break; case 'C' : gaji_pokok = 60000; break; case 'D' : gaji_pokok = 70000; break; }

Output:

4.5. Exercise

1. Buatlah program kalulator sederhana untuk menjumlah, mengurang,

mengali, dan membagi. Input dari program ada tiga, yaitu: operand1,

operator (op), dan operand 2. (Gunakan switch-case atau if-else).

2. Buatlah program login untuk mengecek username dan password yang

diinputkan user. Username dan password sudah default dari program,

misalnya username = useradmin, password = passwordadmin. Jika

username dan password yang diinputkan user benar maka akan tertulis

“LOGIN BERHASIL”, jika salah maka akan tertulis “LOGIN GAGAL”.

3. Mini market XYZ memberikan hadiah bagi pembeli berdasarkan jumlah

nilai belanjanya. Jika total belanja lebih dari 100.000 akan mendapatkan

pemanas air elektrik. Jika total belanja antara 50.000 hingga 100.000 akan

mendapatkn piring. Jika total belanja kurang dari 50.000 pembeli tidak

mendapatkan hadiah. Buatlah program yang akan menginformasikan

hadiah yang diperoleh oleh pembeli. Input program hanyalah jumlah nilai

belanja pembeli.

//menentukan gaji lembur if(jam_kerja > jam_kerja_normal) gaji_lembur = (jam_kerja - jam_kerja_normal) * 30000; else gaji_lembur = 0; //menentukan total gaji total_gaji = gaji_pokok + gaji_lembur; //cetak cout << endl; cout << "Nama Karyawan: " << nama << endl; cout << "Jam kerja: " << jam_kerja << endl; cout << "Gaji pokok: Rp " << gaji_pokok << endl; cout << "Gaji lembur: Rp " << gaji_lembur << endl; cout << "Jumlah total gaji: Rp " << total_gaji << endl; getch(); }

4. Suatu sistem penggajian di sebuah perusahaan memiliki ketentuan bahwa

besarnya tunjangan yang akan diterima pegawai tergantung dari jumlah

anaknya. Jika seorang pegawai memiliki anak kurang dari 3, maka

tunjangannya sebesar 20% dari gaji kotor. Jika jumlah anak lebih besar dari

3 maka besarnya tunjangan adalah 30% dari gaji kotor. Selain itu juga

terdapat potongan untuk keperluan asuransi. Besarnya potongan sebesar

5% dari gaji kotor jika memiliki anak sama atau kurang dari dua, dan

potongan sebesar 7% jika memiliki anak lebih dari 2. Buatlah program

untuk kasus tersebut. (analisis terlebih dahulu input program yang

dibutuhkan, variable yang digunakan, dan algoritmanya).

5. Buatlah program untuk membilang dalam bahasa indonesia dari suatu

bilangan yang diinputkan user. Bilangan yang boleh diinputkan adalah

antara 1 hingga 20. Contoh, jika user menginputkan angka “19” maka

output adalah “sembilan belas”.