Anda di halaman 1dari 17

BAB 6

STRUKTUR KONTROL PERCABANGAN

Tujuan Intruksional :

 Siswa dapat menyebutkan berbagai jenis percabangan


 Pembaca memahami berbagai bentuk struktur percabangan
>if satu kondisi()
>if dua kondisi
>if multi kondisi
>switch-case
 Siswa mampu mengaplikasikan berbagai struktur percabangan dalam Java sesuai
permasalahan
 Siswa dapat mengerjakan soal-soal latihan yang berkaitan dengan percabangan baik
secara pseudocode maupun kode program java

Kontrol percabangan memungkinkan suatu instruksi/pernyataan dieksekusi hanya jika suatu


kondisi terpenuhi atau tidak terpenuhi dari ungkapan suatu ekspresi. Jika memiliki pernyataan
lebih dari satu, pernyataan-pernyataan tersebut wajib diblok ke dalam kurung kurawal {.....}
setelah kata if(ekspresi_boolean) maupun else.... Sementara itu, jika hanya satu pernyataan,
instruksi/ pernyataan tersebut boleh tidak menggunakan {.....} setelah kata if(...) maupun else....

 Ekspresi digunakan untuk memasukkan kondisi pengujian suatu nilai, biasanya


menggunakan simbol-simbol atau operator relasional (<, >, < >, ==, !=), logika: &&,
& (and), ||, | (or), ! (not) atau kombinasi penggabungan antara relasional dan logika.
6.1 IF SATU KONDISI: UNTUK MENGUJI KEBENARAN SATU KONDISI (TRUE)?

Kontrol if(ekspresi){..T...} memiliki syarat bahwa jika kondisi d dalam ekspresi terpenuhi atau
bernilai true, alur program akan masuk dan mengerjakan instruksi/pernyataan di dalam blok
true {..T..}. Jika tidak terpenuhi, alur program akan melewati ata mengabaikan blok true,
kemudian secara normal dan berurutan (sequence) melanjutkan rangkaian instruksi/pernyataan
bebas lanjutan di luar blok true (..T..)..disini...

Gambar 6.1 Diagram Alir dan bentuk umum if (....)


Keterangan:

 "pernyataan" atau "pernyataan1" adalah suatu pernyataan yang hanya akan dijalankan
jika telah memenuhi kondisi (benar atau true) dari nilai pengujian if(expres). Dengan
demikian, pernyataan ini bersifat tidak wajib, bergantung pada keadaan jika true
dijalankan atau false tidak dijalankan.
 "next/new statement" adalah suatu pernyataan di luar konteks if(...). Pernyataan ini tidak
masuk dalam kategori pengujian atau seleksi, sehingga jika alur program berjalan
secara normal (sequence/terurut), pernyataan ini sudah pasti akan dieksekusi (wajib).
Contoh Soal
Soal 1: Buatlah program dan deskripsi algoritma untuk menampilkan output dengan format:
"N= Bilangan Genap", jika N yang dimasukkan adalah bilangan genap.

Deskripsi Algoritma

Implementasi Program

Output
Masukkan Bilang:2 2= Bilangan Genap

Masukkan Bilangan: 1 {tidak ada output}


Penjelasan program:

1. Memanggil library java.util dari class Scanner yang menyediakan method input atau output.
2. Nama class program tersebut adalah: Seleksi1
3. Awal blok dari class Seleksi 1
4. Method utama untuk mengimplementasikan class seleksi
5. Awal blok dari method main().
6. Memperkenalkan atau menginisialisasi variabel: Bil, tipei nteger
7. Menampilkan keterangan dialog input: "Masukkan Bilangan:”
8. Mengimplementasikan class Scanner untuk mendapatkan method input data dari keyboard:
Scanner(System.in);
9. Menyimpan data yang dimasukkan dari keyboard ke dalam variabel Bil. Dengan catatan,
data yang dimasukkan harus angka bilangan bulat, karena inisialisasi tipe int.
10. Melakukan seleksi, apakah Bil yang dimasukkan jika dibagi 2 hasilnya sisa nol? Jika ya
(benar), program akan mengerjakan pernyataan nomor 11, yaitu menampilkan keterangan
"Bil = Bilangan Genap". Jika tidak, program akan beralih le nomor 12 (akhir dari blok
main), sehingga program tidak mengeluarkan keterangan apa pun. Selanjutnya, ke nomor
13 (akhir dari blok class seleksi1). Sisa bagi dikenal dengan fungs modulus, dalam java
modulus menggunakan lambang %.
11. Menampilkan output dengan format: Bil + = Bilangan Genap " Bil adalah variabel integer
yang menampung angka yang diinput, pencetakan output untuk variabel tidak boleh
mengenakan tanda kutip"". Tanda + selain sebagai simbol penjumlahan, bisa juga
digunakan untuk merangkai variabel dan string dalam tanda kutip " " String di sini adalah
keterangan "= Bilangan Genap".
12. Akhir dari blok method main()
13. Akhir dari blok class Seleksi1.

Selain itu, struktur if(...) bisa dalam bentuk if tersarang (nested if), yaitu if yang berada di
dalam lingkungan statemen if yang lainnya.
Contoh dan bentuk penulisannya adalah:

6.2 IF DUA KONDISI : UNTUK MENGUJI KEBENARAN 2 KONDISI TRUE-FALSE


(IF...ELSE...);

Kontrol if_dua_kondisi: if(ekspresi){..T..} else {..F..} memiliki syarat bahwa jika kondisi
di dalam ekspresi terpenuhi atau bernilai true, alur program akan masuk dan mengerjakan
instruksi/pernyataan di dalam blok true {..T..}. Selanjutnya alur program akan melewati atau
mengabaikan blok {..F..}, dan langsung menjalankan rangkaian instruksi/pernyataan
lanjutan di luar konteks (ekspresi) tersebut, yakni {..T..} else {F}...disini.. Sementara itu,
jika tidak terpenuhi, alur program akan langsung melewati atau mengabaikan blok true,
tetapi beralih dan masuk ke dalam blok false {..F..}, sekaligus mengerjakan
instruksi/pernyataan di dalam blok false tersebut. Selanjutnya program menjalankan
rangkaian instruksi/pernyataan lanjutan di luar konteks (ekspresi) tersebut, yakni {..T..} else
{..F..)... disini...
Gambar 6.2 Diagram alir dan bentuk umum if....else..

Keterangan:
 Jika hasil cek (ekspresi) menghasilkan nilai true, alur program akan melaksanakan
instruksi/pernyataan pada bagian blok true, dalam hal ini "pernyataan1" kemudian
mengabaikan pernyataan di dalam else, yakni pernyatan2, dan melanjutkan pernyataan
di luar konteks ekspresi if..() else...
 Namun jika hasil cek (ekspresi) bernilai false, aliran program akan langsung menuju ke
blok false di bawah else, dalam hal ini pernyataan2, sambil mengabaikan seluruh
pernyataan di dalam blok true. Selanjutnya, program akan melanjutkan pernyataan di
luar konteks ekspresi if(...) else..
 Pada saat program dijalankan (run-time) maka hanya salah satu dari keduanya; entah
pernyataan-1 atau pernyataan-2 yang dieksekusi tetapi tidak kedua-duanya. Sebab hal
ini bergantung pada kondisi true dijalankan pernyataan-1, atau false dijalankan
pernyataan-2, atau sebaliknya bergantung pada urutan eksekusi yang merujuk kepada
(ekspresi). Dengan demikian, kedua pernyataan ini salah satunya dianggap pernyataan
tidak pasti (wajib) dieksekusi pada saat berjalannya program.
 "next/new pernyataan" adalah suatu pernyataan di luar konteks if(..) else... Pernyataan
ini tidak masuk dalam kategori pengujian atau seleksi, sehingga jika alur program
berjalan secara normal (sequence/terurut), pernyataan ini sudah pasti akan dieksekusi
(pasti).
Contoh Soal

Buatlah program dan deskripsi algoritma untuk menampilkan output dengan format N-
angka yang dimasukkan dari keyboard:
 "N=Bilangan Genap", jika N yang dimasukkan adalah bilangan genap;
 "N=Bilangan Ganjil", jika N yang dimasukkan adalah bilangan ganjil.

adalah perluasan atau modifikasi dari Soal-1.

Deskripsi Algoritma

Implementasi program:
Penjelasan program:
1. Memanggil library java.util dari class Scanner yang me nyediakan method input atau
output.
2. Nama class program tersebut adalah: Seleksi2.
3. Awal blok dari class Seleksi2.
4. Method utama untuk mengimplementasikan class seleksi2
5. Awal blok dari method main().
6. Memperkenalkan atau menginisialisasi variabel: Bil, tipe integer.
7. Menampilkan keterangan dialog input: "Masukkan Bilangan
8. Mengimplementasikan class Scanner untuk mendapatkan method input data dari
keyboard: Scanner(System.in);
9. Menyimpan data yang dimasukkan dari keyboard ke dalam variabel Bil. Dengan
catatan data yang dimasukkan harus angka bilangan bulat.
10. Melakukan seleksi, apakah Bil yang dimasukkan jika bagi hasilnya sisa nol? Jika ya
(benar), program akan mengerjakan pernyataan nomor 11, yaitu menampilkan
keterangan "Bil-Bilangan Genap", kemudian menuju ke akhir blok main, yaitu 14.
11. Menampilkan keterangan: Bil-Bilangan Genap. Selanjutnya ke nomor 14 (akhir dari
blok class Seleksi2) dan 15, sambil mengabaikan baris 12 dan 13.
12. Jika kondisi baris 10 tidak sesuai, program akan mengabaikan baris 11, langsung
menuju dan melaksanakan instruksi baris 13. Selanjutnya, ke nomor 14 (akhir dari blok
class seleksi2) dan akhirnya ke akhir blok class baris 15.
13. Menampilkan keterangan: Bil-Bilangan Ganjil.
14. Akhir dari blok method main().
15. Akhir dari blok class Seleksi2.

6.3 IF_MULTI_KONDISI: UNTUK MENGUJI KEBENARAN LEBIH DARI DUA


KONDISI TRUE FALSE (IF...ELSE IF...ELSE..)

Kontrol percabangan if_multi_kondisi merupakan jenis pengujian atau seleksi yang


memiliki (ekspresi) lebih dari dua kondisi, dan masing-masing kondisi yang bernilai true,
memiliki blok instruksi/ pernyataan yang unik (berbeda satu sama lain). Jika (ekspresi)
yang pertama tidak terpenuhi (false), dilanjutkan kembali dengan pengecekan ekspresi
berikutnya, dan seterusnya hingga ekspresi ke n. Apabila semua ekspresi (ekspresi-1
sampai dengan ekspresi-n) tetap bernilai false, maka akan mengerjakan instruksi/
pernyataan paling terakhir di bawah else, yakni pada blok false {..F..}. Selanjutnya, aliran
program akan keluar dari konteks rangkaian if(...) else...multi kondisi, dan melanjutkan
instruksi/ pernyataan lanjutan.

Gambar 6.3 Diagram Alir dan bentuk umum if(....) else.... multi kondisi
Contoh Soal: Test Kode
Buatlah deskripsi algoritma, flowchart, dan program Java, untuk melakukan proses
penyeleksian input kode jabatan, kemudian menampilkan kode, jabatan, dan gaji dengan
ketentuan sebagai berikut.

Langkah Algoritma dan Diagram Alir

Implementasi Program
6.4 SWITCH-CASE MULTI_VALUE
Kontrol percabangan switch-case merupakan bentuk pemilihan (selector) terhadap
berbagai nilai yang dikandung oleh suatu variabel. Jika kontrol if berisi tentang ekspresi,
kontrol switch berisi tentang besaran nilai (value) dari suatu variabel. Perlu diperhatikan,
variabel yang menjadi pilihan adalah variabel bertipe int, byte, short, dan char. Bentuk
penulisannya adalah seperti berikut ini.

a. Bentuk Umum switch(variabel) case nilai:


------------------------------------------------------------------------------
switch (variabel)
{
case nilai-1; pernyataan-1; break;
case nilai-2: pernyataan-2; break;
...
...
case nilai-n: pernyataan-n; break;
default : pernyataan x, selain Nilai-n
}
------------------------------------------------------------------------------

b. Diagram alir switch(variabel) case nilai:

Gambar 6.4 Diagram alir switch - case


Kesimpulan: case dan if akan memiliki fungsi yang sama, jika mengacu pada proses
seleksi nilai atau pencarian nilai yang tersimpan dalam suatu variabel. Perbedaannya,
coding case akan kelihatan lebih apik dan sederhana jika kemungkinan harga/nilai
yang dicari semakin banyak. Sementara itu, if akan semakin tidak efisien karena
penulisan coding sejalan dengan meningkatnya jumlah kemungkinan nilai yang
diseleksi. Meskipun hasil akhirnya sama, tetapi bagi programmer akan lebih mudah
mengontrol suatu alur program yang sederhana.

Contoh Soal: Test Kode; memodifikasi contoh soal if-else dengan metode seleksi
switch-case.

Implementasi Program
6.5 LAMPIRAN TABEL KEPUTUSAN
1. Pendahuluan
Tabel keputusan (decision table) adalah tabel yang digunakan sebagai alat bantu
untuk menyelesaikan logika di dalam program. Algoritma yang berisi keputusan
bertingkat yang banyak sekali sangat sulit untuk digambarkan langsung dengan
Structured English atau pseudocode dan dapat dibuat terlebih dahulu dengan
menggunakan tabel keputusan. Dengan demikian, tabel keputusan efektif
digunakan bilamana kondisi yang akan diseleksi di dalam program jumlahnya
cukup banyak dan rumit.
2. Struktur dan Tabel Keputusan
Struktur dan tabel keputusan terdiri dan empat bagian utama, yaitu condition stub,
condition entry, action stub, dan action entry seperti tampak pada tabel berikut ini.

Tabel 6.1 Struktur dan Tabel Keputusan


Rules
1 2 3 4.... ........ N
condition stub C o n d ition–Entry
action stub A c t i on-Entry

Condition stub berisi kondisi yang akan diseleksi condition entry berisi kemungkinan-
kemungkinan dan kondisi yang diseleksi, yaitu terpenuhi (diberi simbol 'Y') dan tidak
terpenuhi (diberi simbol 'T'). Setiap kondisi yang diseleksi akan mempunyai dua
kemungkinan kejadian, yaitu terpenuhi dan tidak terpenuhi. Bila ada x kondisi yang
diseleksi, akan terdapat N kemungkinan kejadian, yaitu sebesar N2. Action stub berisi
pernyataan-pernyataan yang akan dikerjakan baik kondisi yang diseleksi terpenuhi
maupun tidak terpenuhi. Action entry digunakan untuk memberi tanda tindakan mana
yang akan dilakukan dan mana yang tidak akan dilakukan.

3. Langkah-Langkah Membuat Tabel Keputusan


Untuk menjelaskan langkah-langkah yang dapat dilakukan untuk membuat tabel
keputusan, berikut ini akan diilustrasikan dengan sebuah contoh. Jika unit yang dipesan
untuk suatu barang tertentu sama atau melebihi jumlah minimum yang mendapatkan
potongan dan pemesannya adalah dealer, akan mendapatkan potongan. Sebaliknya bila
unit yang dipesan kurang dan unit minimum yang mendapatkan potongan, walaupun
yang membeli dealer, tidak akan mendapatkan potongan. Bila unit barang persediaan
di gudang tidak mencukupi, yang dikirim adalah unit yang ada dan kemudian dibuat
catatan mengenai kekurangannya (back-order). Kalau unit persediaan mencukupi,
semua pesanan dikirim. Masalah ini akan dibuat tabel keputusannya. Langkah langkah
dalam pembuatan tabel keputusan ini adalah sebagai berikut ini.
1) Menentukan kondisi yang akan diseleksi.
Dari permasalahan tersebut, terdapat tiga buah kondisi yang akan diseleksi, yaitu:
a. Apakah unit dipesan >= unit minimum potongan?
b. Apakah pemesannya dealer?
c. Apakah unit persediaan mencukupi?

2) Menentukan jumlah kemungkinan kejadian yang akan terjadi, yaitu sebanyak S.


3) Menentukan tindakan yang akan dilakukan. Berdasarkan permasalahan tersebut,
terdapat lima buah tindakan yang akan dilakukan, yaitu:
a. Mendapatkan potongan.
b. Tidak mendapatkan potongan.
c. Kirim semua yang dipesan.
d. Kirim yang ada saja.
e. Buat catatan kekurangannya
4) Mengisi condition entry. Condition entry diisi sedemikian rupa, sehingga semua
kemungkinan kejadian bisa terwakili, sebagai berikut.

a. Apakah unit dipesan unit minimum potongan? Y Y Y Y T T T T


b. Apakah pemesannya dealer? Y Y T T Y Y T T
c. Apakah unit persediaan mencukupi? Y T Y T Y T Y T
a. Mendapatkan potongan
b. Tidak mendapatkan potongan
c. Kirim semua yang dipesan
d. Kirim yang ada saja
e. Buat catatan kekurangannya.

5) Mengisi action entry


Action entry diisi kolom demi kolom dan kolom pertama sampai kolom ke N.
Misalnya untuk kolom yang pertama, semua kondisi terpenuhi, yaitu unit yang
dipesan melebihi unit minimum potongan, pemesannya adalah dealer dan unit
persediaan mencukupi maka tindakan yang akan dilakukan adalah mendapatkan
potongan dan kirim semua yang dipesan. Pada kolom pertama ini, kemudian band
tindakan mendapatkan potongan dan band tindakan kirim semua yang dipesan
diberi tanda sembarang (misalnya 'X'). Lakukanlah dengan cara yang sama sampai
kolom ke N. Akhirnya tabel keputusan tersebut akan berisi sebagai berikut.
1 2 3 4 5 6 7 8
a. Apakah unit yang dipesan >= unit minumum potongan? Y Y Y Y T T T T
b. Apakah pemesannya dealer? Y Y T T Y Y T T
c. Apakah unit persediaan mencukupi? Y T Y T Y T Y T
a. Mendapatkan potongan X X - - - - - -
b. Tidak mendapatkan potongan - - X X X X X X
c. Kirim semua yang dipesan X - X - X - X -
d. Kirim yang ada saja - X - X - X - X
e. Buat catatan kekurangannya. - X - X - X - X

Kolom nomor 5 dan 7 dapat digabung, karena tindakannya sama. Demikian juga kolom 6 dan
8 dapat juga digabung, sehingga tabel keputusan menjadi:
1 2 3 4 5&7 6&8
a. Apakah unit yang dipesan >= unit minumum potongan? Y Y Y Y T T
b. Apakah pemesannya dealer? Y Y T T - -
c. Apakah unit persediaan mencukupi? Y T Y T Y T
a. Mendapatkan potongan X X - - - -
b. Tidak mendapatkan potongan - - X X X X
c. Kirim semua yang dipesan X - X - X -
d. Kirim yang ada saja - X - X - X
e. Buat catatan kekurangannya. - X - X - X

Tampak kolom 5 & 7 serta kolom 6 & 8 hasil gabungan menunjukkan baik itu dealer maupun
tidak sudah tidak berpengaruh lagi, karena unit yang dipesan sudah lebih kecil dan unit
minimum yang mendapatkan potongan. Berdasarkan hasil tabel keputusan tersebut, bila akan
dibuat structured English atau structured Indonesia atau pseudocode akan lebih mudah.
Structured Indonesia untuk tabel keputusan ini dapat berupa:

JIKA MAKA
unit dipesan >= unit minimum potongan dan mendapatkan potongan
pemesannya dealer dan unit persediaan mencukupi. kirim semua yang dipesan
unit dipesan >= unit minimum potongan dan mendapatkan potongan
pemesannya dealer dan unit persediaan tidak kirim yang ada saja
mencukupi buat catatan kekurangannya
unit dipesan >= unit minimum potongan dan tidak mendapatkan potongan
pemesannya bukan dealer dan unit persediaan kirim semua yang dipesan
mencukupi
unit dipesan >= unit minimum potongan dan tidak mendapatkan potongan
pemesanannya bukan dealer dan unit persediaan kirim yang ada saja
tidak mencukupi buat catatan kekurangannya
unit dipesan < unit minimum potongan dan unit tidak mendapatkan potongan
persediaan mencukupi kirim semua yang dipesan
unit dipesan < unit minimum potongan dan unit tidak mendapatkan potongan
persediaan tidak mencukupi kirim yang ada saja
buat catatan kekurangannya.

Anda mungkin juga menyukai