Anda di halaman 1dari 11

1

Seleksi
Pernyataan Seleksi tunggal if

Program menggunakan pernyataan seleksi untuk memilih di antara tindakan


alternatif. Misalnya, nilai kelulusan pada ujian adalah 60. Pernyataan pseudocode
if < nilai lebih besar atau sama dengan 60 >
begin
Cetak “Lulus”
end
endif

Jika digambar dalam bentuk flowchart

Ini kalau ditulis dalam Java menjadi


if ( nilai >= 60 )
System.out.println"Lulus");

Contoh lain, untuk menghitung luas lingkaran dengan syarat radius harus lebih dari
0.
2

Dalam Java menjadi


if ( radius >= 0 ) {
luas = radius * radius * PHI;
System.out.println("Luas lingkaran = " + luas);
}

Pernyataan Seleksi Ganda if...else

Pernyataan pilihan tunggal if melakukan tindakan yang ditunjukkan hanya


jika kondisinya benar; jika tidak, tindakan akan dilewati. Pernyataan pemilihan
ganda if…else memungkinkan Anda untuk menentukan tindakan yang akan
dilakukan ketika kondisinya benar dan tindakan yang berbeda ketika kondisinya
salah. Misalnya, pernyataan pseudocode
If < nilai lebih besar atau sama dengan 60 >
Cetak “Lulus”
else
Cetak “Gagal”
endif

Pseudocode ini dapat ditulis dengan Java


if ( nilai >= 60 )
System.out.println( "Lulus" );
else
System.out.println( "Gagal" );

Dalam bentuk flowchart, dapat digambarkan


3

Catatan:

Jika pernyataan yang dikerjakan dalam bodi if lebih dari satu pernyataan,
sekelompok pernyataan itu harus diapit dengan tanda kurung kurawal ({ }). Contoh
di atas menjadi seperti berikut.
if ( nilai >= 60 ) {
System.out.println( "Lulus" );
System.out.println( "Selamat, terus dipertahankan" );
}
else {
System.out.println( "Gagal" );
System.out.println( "Jangan putus asa, belajar lagi" );
}

Operator Kondisional

Java menyediakan operator kondisional (?:) yang dapat digunakan sebagai


pengganti pernyataan if… else. Ini adalah satu-satunya operator ternary Java
(operator yang membutuhkan tiga operan). Bersama-sama, operan dan simbol ?:
membentuk ekspresi kondisional. Operan pertama (di sebelah kiri ?) adalah ekspresi
boolean (yaitu, kondisi yang dievaluasi ke nilai boolean — true atau false), operan
kedua (antara ? dan :) adalah nilai ekspresi kondisional jika ekspresi boolean adalah
true dan operan ketiga (di sebelah kanan :) adalah nilai dari ekspresi kondisional jika
ekspresi boolean bernilai false. Misalnya, pernyataan
System.out.println( nilai >= 60 ? "Lulus" : "Gagal" );
4

mencetak nilai argumen ekspresi kondisional println. Ekspresi bersyarat dalam


pernyataan ini mengevaluasi ke string "Lulus" jika ekspresi boolean nilai >= 60
benar dan ke string "Gagal" jika salah. Jadi, pernyataan ini dengan operator
bersyarat pada dasarnya menjalankan fungsi yang sama seperti pernyataan if…else
yang ditunjukkan sebelumnya di bagian ini. Prioritas operator kondisional rendah,
jadi seluruh ekspresi kondisional biasanya ditempatkan dalam tanda kurung. Kita
akan melihat ekspresi kondisional dapat digunakan dalam beberapa situasi di mana
pernyataan if… else tidak bisa.

Pernyataan Bersarang if...else

Sebuah program dapat menguji beberapa kasus dengan menempatkan pernyataan


if… else di dalam pernyataan if… else lainnya untuk membuat pernyataan bersarang
if… else. Misalnya, pseudocode berikut mewakili if… else yang mencetak A untuk
nilai ujian lebih besar dari atau sama dengan 90, B untuk kelas 80 hingga 89, C untuk
kelas 70 hingga 79, D untuk kelas 60 hingga 69, dan F untuk semua lainnya nilai:
if nilai mhs lebih dari atau sama dengan 90
Cetak “A”
else
if nilai mhs lebih dari atau sama dengan 80
Cetak “B”
else
if nilai mhs lebih dari atau sama dengan 70
Cetak “C”
else
if nilai mhs lebih dari atau sama dengan 60
Cetak “D”
else
Cetak “E”

Pseudocode ini dapat ditulis dalam Java:


if ( nilaiMhs >= 90 )
System.out.println( "A" );
else
if (nilaiMhs >= 80 )
System.out.println( "B" );
else
if (nilaiMhs >= 70 )
System.out.println( "C" );
else
if (nilaiMhs >= 60 )
5

System.out.println( "D" );
else
System.out.println( "E" );

Jika variabel nilaiMhs lebih besar dari atau sama dengan 90, empat kondisi pertama
dalam pernyataan if… else bersarang akan benar, tetapi hanya pernyataan di
bagian if dari pernyataan if… else pertama yang akan dijalankan. Setelah
pernyataan itu dijalankan, bagian lain dari pernyataan "terluar" if…else dilewati.
Banyak programmer lebih suka menulis pernyataan bertingkat sebelumnya if… else
seperti berikut.
if ( studentGrade >= 90 )
System.out.println( "A" );
else if ( studentGrade >= 80 )
System.out.println( "B" );
else if ( studentGrade >= 70 )
System.out.println( "C" );
else if ( studentGrade >= 60 )
System.out.println( "D" );
else
System.out.println( "F" );

Kedua bentuk ini identik kecuali spasi dan indentasi, yang diabaikan oleh compiler.
Bentuk terakhir menghindari lekukan kode di sebelah kanan. Lekukan seperti itu
sering menyisakan sedikit ruang pada baris kode sumber, memaksa baris untuk
dipisahkan.

Masalah else Menggantung

Compiler Java selalu mengaitkan else dengan if yang mendahuluinya, kecuali


diperintahkan untuk melakukan sebaliknya dengan penempatan tanda kurung ({
dan }). Perilaku ini dapat mengarah pada apa yang disebut sebagai masalah else
menggantung. Sebagai contoh,
if ( x > 5 )
if ( y > 5 )
System.out.println( "x dan y adalah > 5" );
else
System.out.println( "x adaalah <= 5" );

muncul untuk menunjukkan bahwa jika x lebih besar dari 5, pernyataan if bersarang
menentukan apakah y juga lebih besar dari 5. Jika demikian, string "x dan y adalah >
6

5" akan ditampilkan. Sebaliknya, tampak bahwa jika x tidak lebih besar dari 5,
bagian else dari if…else mengeluarkan string "x adalah <= 5". Awas! Pernyataan
bertingkat if… else ini tidak dijalankan seperti yang terlihat. Kompilator sebenarnya
mengartikan pernyataan itu sebagai
if ( x > 5 )
if ( y > 5 )
System.out.println( "x dan y adalah > 5" );
else
System.out.println( "x adaalah <= 5" );

di mana tubuh if pertama adalah if… else bertumpuk. Pernyataan if yang luar
menguji apakah x lebih besar dari 5. Jika demikian, eksekusi dilanjutkan dengan
menguji apakah y juga lebih besar dari 5. Jika kondisi kedua benar, string yang
tepat— "x dan y adalah > 5" —ditampilkan. Namun, jika kondisi kedua salah, string
"x adalah <= 5" ditampilkan, meskipun kita tahu bahwa x lebih besar dari 5. Sama
buruknya, jika kondisi pernyataan if luar salah, bagian dalam if… else dilewati dan
tidak ada yang ditampilkan.

Untuk memaksa pernyataan bertingkat if… else untuk dieksekusi seperti yang
dimaksudkan semula, kita harus menulisnya sebagai berikut:
if ( x > 5 ) {
if ( y > 5 )
System.out.println( "x dan y adalah > 5" );
}
else
System.out.println( "x adaalah <= 5" );

Tanda kurung kurawal menunjukkan bahwa if yang kedua ada di badan if pertama
dan else dikaitkan dengan if pertama.

Blok

Pernyataan if biasanya mengharapkan hanya satu pernyataan dalam tubuhnya.


Untuk memasukkan beberapa pernyataan dalam bodi if (atau bodi dari else untuk
pernyataan if… else), apit pernyataan tersebut dengan tanda kurung. Pernyataan
yang terkandung dalam sepasang kurung kurawal membentuk satu blok. Sebuah
7

blok dapat ditempatkan di manapun dalam sebuah program yang satu pernyataan
dapat ditempatkan.

Contoh berikut menyertakan blok di bagian lain dari pernyataan if… else:
if ( nilai >= 60 )
System.out.println( "Lulus" );
else {
System.out.println( "Gagal" );
System.out.println( "Anda harus mengulangi lagi." );
}

Dalam kasus ini, jika nilai kurang dari 60, program akan mengeksekusi kedua
pernyataan di badan else dan mencetak
Gagal
Anda harus mengulangi lagi."

Perhatikan tanda kurung kurawal yang mengelilingi dua pernyataan di klausa else.
Kurung kurawal ini penting. Tanpa kurung kurawal, pernyataan
System.out.println( "Anda harus mengulangi lagi." );

akan berada di luar tubuh bagian else dari pernyataan if… else dan akan dieksekusi
terlepas dari apakah nilainya kurang dari 60.

Kesalahan sintaksis (misalnya, ketika satu tanda kurung dalam blok ditinggalkan dari
program) ditangkap oleh kompilator. Kesalahan logika (misalnya, ketika kedua
kurung kurawal di blok ditinggalkan dari program) memiliki efeknya pada waktu
eksekusi. Kesalahan logika yang fatal menyebabkan program gagal dan berhenti
sebelum waktunya. Kesalahan logika nonfatal memungkinkan program untuk terus
dijalankan tetapi menyebabkannya menghasilkan hasil yang salah.

Sama seperti sebuah blok dapat ditempatkan di mana saja sebuah pernyataan
dapat ditempatkan, itu juga memungkinkan untuk memiliki pernyataan kosong.

Pernyataan Seleksi Ganda switch

Pernyataan pilihan berganda switch melakukan tindakan yang berbeda berdasarkan


nilai yang mungkin dari ekspresi konstan tipe byte, short, int atau char.

Sintaks:
8

switch(expression) {
case x:
// code block
break;
case y:
// code block
break;
default:
// code block
}

Bagaimana cara kerjanya?

• Ekspresi switch dievaluasi sekali.


• Nilai ekspresi dibandingkan dengan nilai tiap case.
• Jika ada kecocokan, blok kode terkait dijalankan.
• Kata kunci break dan default adalah opsional, dan akan dijelaskan nanti.

Contoh di bawah ini menggunakan angka hari kerja untuk menentukan nama hari
kerja.
public class MyClass {
public static void main(String[] args) {
int day = 4;
switch (day) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
case 6:
System.out.println("Saturday");
break;
case 7:
System.out.println("Sunday");
break;
}
}
}

hasil program:
9

Thursday

Kata kunci break

Ketika Java mencapai kata kunci break, itu akan keluar dari blok switch. Ini akan
menghentikan eksekusi kode dan pengujian kasus di dalam blok. Ketika ditemukan
kecocokan, maka pekerjaan selesai, tidak perlu pengujian lebih lanjut.

Kata kunci default

Kata kunci default menentukan beberapa kode untuk dijalankan jika tidak ada kasus
yang cocok:
int day = 4;
switch (day) {
case 6:
System.out.println("Sekarang hari Sabtu");
break;
case 7:
System.out.println("Sekarang hari Minggu");
break;
default:
System.out.println("Menanti akhir pekan");
}
// Output: "Menanti akhir pekan"

Untuk kasus tertentu, struktur switch dapat menggantikan struktur if...else. Contoh
di atas jika dituliskan dalam bentuk if...else, menjadi seperti berikut.

int day = 4;
if(day == 6)
System.out.println("Sekarang hari Sabtu");
else if(day == 7)
System.out.println("Sekarang hari Minggu");
else
System.out.println("Menanti akhir pekan");
10

Latihan
1. Misalkan x = 2 dan y = 3. Tunjukkan output, jika ada, dari kode berikut.
Berapakah output jika x = 3 dan y = 2? Berapakah output jika x = 3 dan y = 3?

if (x > 2)
if (y > 2) {
int z = x + y;
System.out.println("z is " + z);
}
else
System.out.println("x is " + x);

2. Apa yang salah pada kode berikut?

if (nilai >= 60.0)


peringkat = 'D';
else if (nilai >= 70.0)
peringkat = 'C';
else if (nilai >= 80.0)
peringkat = 'B';
else if (nilai >= 90.0)
peringkat = 'A';
else
peringkat = 'E';

3. Tulis kembali pernyataan berikut menggunakan operator kondisional.

if (count % 10 == 0)
newLine = true;
else
newLine = false;

4. Gunakan pernyataan switch untuk menulis ulang pernyataan if berikut.

if (a == 1)
x += 5;
else if (a == 2)
x += 10;
else if (a == 3)
x += 16;
else if (a == 4)
x += 34;

5. Tulis program yang membaca sebuah bilangann bulat dan mengecek


apakah bilangan tersebut genap atau ganjil. Contoh eksekusi
program:
11

Masukkan bilangan: 7 <enter>


7 adalah bilangan ganjil

Masukkan bilangan: 16 <enter>


7 adalah bilangan genap

6. Tulis program untuk menentukan bilangan mana yang lebih besar


dari dua buah bilangan. Dua bilangan tersebut dimasukkan oleh
user.

7. Tulis program yang membangkitkan sebuah bilangan bulat antar 0 –


10. User memasukkan bilangan sebagai tebakan bilangn tersebut.
Jika tebakan benar akan menampilkan pesan: “Hore tebakan Anda
benar”. Dan jika tebakan user salah program akan menampilkan
pesan: “Tebakan Anda masih salah”.

Catatan: untuk membangkitkan bilangn bulat antara 0 – 10 dapat


menggunakan kode berikut:
int angka = (int)(Math.random() * 11);

Anda mungkin juga menyukai