Pernyataan if merupakan salah satu pernyataan percabangan pada Java, dengan bentuk umum seperti
if (suatu_kondisi) perintah1 else perintah2
Seperti biasa,
perintah1
dan perintah2
bisa berbentuk blok yang terdiri dari beberapa perintah. Pernyataan if
merupakan bentuk percabangan 2 arah. Bagian else
yang terdiri dari kata "else" dan perintah2 tidak selalu harus ada.
Perhatikan bahwa baik perintah1 dan perintah2 bisa merupakan pernyataan
if
itu sendiri. Ada beberapa hal menarik yang mungkin berguna. Ambil contoh dalam pernyataan berikutif (x > 0) if (y > 0) System.out.println("perintah1"); else System.out.println("perintah2");
Pertama-tama, komputer tidak peduli bagaimana Anda memformat paragraf dan indentasi dari pernyataan
if
tersebut. Java akan menganggap else
terkait dengan if
terdekat, sehingga kode di atas akan dianggap sepertiif (x > 0) if (y > 0) System.out.println("perintah1"); else System.out.println("perintah2");
else
di program di atas akan dianggap bagian dari pernyataan jika y > 0, padahal yang kita maksud adalah else jika x > 0. Untuk memperbaikinya, kita tambahkan tanda kurung {} sehingga menjadiif (x > 0) { if (y > 0) System.out.println("perintah1"); } else System.out.println("perintah2");
Kedua pernyataan tersebut memiliki arti yang berbeda. Jika x <= 0, pada kode pertama Java tidak mencetak apa-apa ke layar, sedangkan kode kedua java akan mencetak "perintah2".
Lebih menarik lagi, perhatikan kode berikut
if (kondisi_pertama) perintah1 else if (kondisi_kedua) perintah2 else perintah3
Lagi-lagi karena Java tidak membedakan indentasi penulisan, maka kode tersebut akan diterjemahkan Java seperti
if (kondisi_pertama) perintah1 else if (kondisi_kedua) perintah2 else perintah3
Dengan kata lain perintah tersebut lebih seperti percabangan 3 arah. Komputer akan mengeksekusi hanya salah satu dari
perintah1
, perintah2
, atau perintah3
. Komputer akan mengevaluasi kondisi_pertama
, jika true
, maka perintah1
dieksekusi sementara perintah2
dan perintah3
diabaikan. Jika false
, maka kondisi_kedua
akan dievaluasi. Jika true
, makaperintah2
akan dieksekusi dan perintah3
diabaikan. Jika false
, maka hanya perintah3
saja yang dieksekusi.
Berikut ini adalah contoh penggunaan percabangan 3 arah.
if (suhu < 20) System.out.println("Dingin"); else if (suhu < 30) System.out.println("Lumayan"); else System.out.println("Panas");
Kita bahkan dapat membentuk pernyataan if-else ini menjadi percabangan N arah, misalnya
if (kondisi_pertama) perintah1 else if (kondisi_kedua) perintah2 else if (kondisi_ketiga) perintah3 else if (kondisi_keempat) perintah4 . . . else if (kondisi_keNminus1) perintahNmin1 else perintahN
Contoh berikut ini adalah mengurutkan 3 bilangan dari kecil ke besar. Misalnya kita mempunyai 3 variabel a,b dan c. Bilangan yang paling kecil adalah bilangan yang lebih kecil dari kedua bilangan yang lain. Sekarang mari kita rangkai logika untuk menentukan urutan bilangan dari kecil ke besar. Mula-mula kita cek apakah a lebih kecil dari b dan c, yaitu dengan pernyataan
if (a < b && a <c)
Jika a betul merupakan bilangan terkecil, maka kita uji apakah b lebih kecil dari c dengan perintah
if (b < c)
Jika a bukan bilangan terkecil, maka b atau c, salah satunya bisa merupakan bilangan terkecil. Kita hanya perlu membandingkan apakah b lebih kecil dari c dengan
if (b < c)
Jika b lebih kecil dari c, berarti kita tahu bahwa b adalah bilangan terkecil. Tetapi kita belum tahu apakah bilangan terkecil berikutnya adalah a atau c, sehingga kita harus menguji lagi dengan
if (a < c)
Jika a lebih kecil dari c, maka urutannya adalah b, a, c. Jika tidak, maka urutannya adalah b, c, a.
Demikian halnya apabila jika b > c, maka kita bisa tentukan urutan bilangannya.
Keseluruhan logika ini, bisa kita tuangkan dalam bentuk :
if (a < b && a < c) { if (b < c) System.out.println(a + " " + b + " " + c); else System.out.println(a + " " + c + " " + b); } else if (b < c) { if (a < c) System.out.println(b + " " + a + " " + c); else System.out.println(b + " " + c + " " + a); } else { if (a < b) System.out.println(c + " " + a + " " + c); else System.out.println(c + " " + b + " " + a); }
Logika di atas bisa juga dituangkan dengan cara lain, yaitu melihat urutannya. Pertama kita cek apakah a < b. Jika ya, kita tahu bahwa urutannya pasti a terlebih dahulu baru b. Kemudian kita lihat apakah c berada di sebelah kiri a atau disebelah kanan b atau di tengah-tengah.
Demikian seterusnya jika urutannya b terlebih dahulu baru a. Sehingga kodenya bisa dituliskan dalam bentuk :
if (a < b) { if (c < a) System.out.println(c + " " + a + " " + b); else if (c > b) System.out.println(a + " " + b + " " + c); else System.out.println(a + " " + c + " " + b); } else { if (c < b) System.out.println(c + " " + b + " " + a); else if (c > a) System.out.println(b + " " + a + " " + c); else System.out.println(b + " " + c + " " + a); }
Tidak ada komentar:
Posting Komentar