Statement
dalam source file ( file sumber )
pada umumnya dijalankan dari atas ke bawah dalam urutan kemunculan mereka. Control Flow Statement mampu memecah
aliran eksekusi dengan menggunakan
pengambilan keputusan ( decision ) ,
perulangan ( loop ), dan percabangan
atau yang dikenal degan istilah jump
, sehingga memungkinkan program kita untuk dieksekusi secara kondisional dengan
blok kode tertentu. Bagian ini menjelaskan statement
pengambilan keputusan / decision statement
(if-then, if-then-else, switch), statement perulangan / loop statement (for, while, do-while), dan jump
statement (break, continue, return)
yang didukung bahasa pemrograman Java.
a.
If-then,
if-then-else, dan
switch statements ( decision statements )
1)
If-then
statement
If-then
statement adalah yang paling dasar dari semua control flow statements. Ini memberitahu
program kita untuk menjalankan bagian tertentu dari kode hanya jika test tertentu bernilai true. Misalnya, class Bicycle dapat memungkinkan rem untuk mengurangi kecepatan
sepeda itu hanya jika sepeda sudah bergerak. Contoh penerapannya adalah sebagai
berikut pada methode
applyBrakes
:
void applyBrakes() {
// the "if" clause: bicycle must
be moving
if (isMoving){
// the "then" clause:
decrease current speed
currentSpeed--;
}
}
Jika test ini dievaluasi ke false (berarti bahwa sepeda tidak
bergerak), kontrol akan melompat ke akhir statement if-then.
Dalam
kasus ini, penggunaan braces ( { } )
bersifat opsional asalkan setelah
klausa
“then” hanya berisi satu statement.
void applyBrakes() {
// same as above, but without braces
if (isMoving)
currentSpeed--;
}
Menentukan kapan harus
menghilangkan braces adalah masalah
selera pribadi. Menghilangkan pemakaiannya dapat membuat kode lebih rapuh. Jika
statement kedua kemudian ditambahkan
ke klausa "then", kesalahan umum akan lupa untuk menambahkan brace baru yang diperlukan. Compiler tidak dapat menangkap kesalahan
ini, kita hanya akan menerima hasil yang tidak sesuai.
2)
If-then-else statements
If-then-else
statement menyediakan jalur sekunder eksekusi ketika sebuah klausa
"if" dievaluasi ke false. Kita
bisa menggunakan pernyataan if-then-else
dalam metode applyBrakes untuk
mengambil beberapa tindakan jika rem diterapkan saat sepeda tidak bergerak.
Dalam hal ini, tindakannya adalah hanya
untuk
mencetak pesan kesalahan yang menyatakan bahwa sepeda telah berhenti.
void applyBrakes() {
if (isMoving) {
currentSpeed--;
} else {
System.err.println("The bicycle
has " + "already stopped!");
}
}
Sebagai contoh lain, program
di bawah ini, IfElseDemo, memberikan grade
yang didasarkan pada nilai skor test A
untuk skor 90% atau lebih, B untuk skor
80%
atau lebih namun masih dibawah 90%, dan seterusnya.
class IfElseDemo {
public static void main(String[] args) {
int testscore = 76;
char grade;
if (testscore >= 90) {
grade = 'A';
} else if (testscore >= 80) {
grade = 'B';
} else if (testscore >= 70) {
grade = 'C';
} else if (testscore >= 60) {
grade = 'D';
} else {
grade = 'F';
}
System.out.println("Grade = "
+ grade);
}
}
Output
dari program ini adalah:
Grade = C
Kita mungkin telah memperhatikan bahwa nilai testscore dapat memenuhi lebih dari satu expression dalam statement majemuk: 76> = 70 dan 76> = 60. Namun, setelah kondisi terpenuhi, statement yang tepat dijalankan (grade = 'C';) dan kondisi yang tersisa tidak dievaluasi.
3) Switch Statement
Berbeda dengan statement if-then dan if-then-else, switch statement dapat memiliki sejumlah jalur eksekusi yang memungkinkan. Switch dapat bekerja dengan tipe data byte, short, char, dan int. Ia juga mampu bekerja dengan tipe data enumerated, class String, dan beberapa class khusus yang membalut tipe data primitif tertentu ( char, byte, short, dan Integer ).
Contoh kode berikut, class SwitchDemo, dideklarasikan sebuh tipe data int yang nilainya menyatakan bulan. Kode berikut menampilkan nama bulan tersebut, berdasarkan nilai dari month, dengan menggunakan pernyataan switch.
public class SwitchDemo
{
public static void main(String[] args) {
int month = 8;
String monthString;
switch (month) {
case 1: monthString = "January";
break;
case 2: monthString = "February";
break;
case 3: monthString = "March";
break;
case 4: monthString = "April";
break;
case 5: monthString = "May";
break;
case 6: monthString = "June";
break;
case 7: monthString = "July";
break;
case 8: monthString = "August";
break;
case 9:
monthString = "September";
break;
case 10: monthString =
"October";
break;
case 11: monthString =
"November";
break;
case 12: monthString =
"December";
break;
default: monthString =
"Invalid month";
break;
}
System.out.println(monthString);
}
}
Dalam hal ini, August akan dicetak ke output standard.
Badan statement switch dikenal sebagai switch block. Sebuah statement di switch blok dapat diberi label dengan satu atau lebih case atau label default. Statement switch mengevaluasi expression, kemudian mengeksekusi semua statement yang mengikuti label case yang cocok.
Kita juga bisa menampilkan nama bulan seperti kasus diatas dengan menggunakan statement if-then-else:
int month = 8;
if (month == 1) {
System.out.println("January");
} else if (month == 2) {
System.out.println("February");
}
... // dan seterusnya
Memutuskan kapan penggunaan statement if-then-else atau statement switch didasarkan pada pembacaan dan expression bahwa statement tersebut bersifat pengujian. Sebuah statement if-then-else dapat menguji expression berdasarkan beberapa nilai atau kondisi, sedangkan pernyataan switch menguji expression yang didasarkan hanya pada satu bilangan bulat, nilai enumerated, atau object String.
Hal lain yang menarik adalah statement break. Setiap statement break mengakhiri lampiran pernyataan switch. Control Flow berlanjut dengan statement pertama setelah blok switch. Statement break diperlukan karena tanpa mereka, statement dalam blok switch mengalir melalui semua statement setelah label case yang di cocokkan secara berurutan, terlepas dari expression label case berikutnya, sampai statement break ditemui.