Minggu, 13 Januari 2013

Control Flow Statements


 

       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.

 
Share:

0 komentar:

Posting Komentar