Struktur Kontrol Struktur kontrol if Struktur kontrol if-else Operator kondisi (?:) Struktur kontrol switch Struktur Kontrol Struktur Kontrol : adalah statemen java yang digunakan untuk pemilihan sesuai hasil dari sebuah pernyataan yang bernilai true atau false. Secara garis besar dibagi menjadi dua bagian “if structure” dan “switch structure”. Struktur - if : yaitu struktur yang hanya mengeksekusi kegiatan yang menghasilkan nilai boolean true. Sintaknya : if (boolean_expr) statement; atau if (boolean_expr) statement; Struktur Kontrol Contoh pseudocode : If the student’s grade is greater than 70 Print “Passed” Contoh flowchart : True grade > 70 false System.out.println(“Passed”) Contoh java program : if ( grade > 70 ) System.out.println(“passed”); Control Expression Statement Struktur Kontrol Struktur - if / else : Pada if sederhana, sebuah statemen dieksekusi jika nilai boolean ekpresi bernilai true, dan statemen dilewati jika boolean ekpresi bernilai false. Namun pada kenyataan sehari-hari terkadang kita juga ingin mengeksekusi statemen yang ketika nilai boolean ekpresinya adalah false. Hal demikian dapat dilakukan dengan “if /else structure” Sintaknya : if (boolean_expr) statement 1; else statement 2; Struktur Kontrol Contoh pseudocode : if (b*b – 4. *a*c) >= 0 write message that equetion has real roots. else write message that equetion has complex roots. Contoh java program : if ( (b*b – 4. *a*c) >= 0. ) System.out.println(“there are real roots”); else System.out.println(“there are complex roots”); Struktur Kontrol Struktur - if/else if/…else : Digunakan untuk menyeleksi satu dari sekian banyak pilihan, dimana pilihan sangatlah komplek sekali. Dimana tidak dapat ditangani hanya dengan if/else structure saja. Sintaknya : if (boolean_expr) statement 1; else if (boolean_expr) statement 2; else statement 3; if (boolean_expr) statement 1; else if (boolean_expr) statement 2; else statement 3; Struktur Kontrol Contoh pseudocode : if (b*b – 4. *a*c) >= 0 write message that equetion has two complex roots. else if (b*b – 4. *a*c) = 0 write message that equetion has two identical real roots. else write message that equetion has two distinct real roots. Contoh java program : if ( (b*b – 4. *a*c) >= 0. ) System.out.println(“there are two complex roots”); else if ( (b*b – 4. *a*c) == 0. ) System.out.println(“there are two identical real roots”); else System.out.println(“there are two distinct real roots”); Struktur Kontrol Multiple statement dalam if / else : Pada contoh yang sudah diperlihatkan selalu satu baris statemen saja yang dikerjakan jika boolean_expr terpenuhi, bagaiman jika statemen yang dikerjakan lebih dari satu baris. Penyelesaiannya adalah jika lebih dari satu bari statemen yang ingin dikerjakan maka, haruslah menggunakan blok program yaitu tanda “{“ diawal baris pertama dan “}” setelah baris terakhir. Sintaknya : if (boolean_expr) { statement 1; statement 2; statement 3; } else { statement 4; statement 5; } Struktur Kontrol Contoh Program : IfElse.java Pernyataan Else digunakan sebagai alternatif apabila proses seleksi if menghasilkan nilai false. Maka semua block yang ada pada statement else akan dijalankan. Dapat anda lihat bahwa di dalam seleksi if(i==1) menghasilkan nilai false karena nilai i adalah 2. Maka blok yang dijalankan adalah blok else. Yaitu akan mencetak i is not 1. Struktur Kontrol Struktur if Bertingkat : if bertingkat, dimana didalam seleksi if dapat memiliki if, begitu juga dengan else. Yang membutuhkan seleksi sampai beberapa tingkat kedalaman. Sintaknya : if (boolean_expr) { if (boolean_expr) statement 1; else { statement 2; statement 3; } } else { if (boolean_expr) statement 4; else statement 5; } Struktur Kontrol Struktur Kondisi : Operator kondisi (?:) merupakan persamaan if/else structure. Yang memiliki tiga buah argument yang diletakkan didalam kondisi ekpresi. Contoh java program : if ( grade > 70 ) System.out.println(“Passed”); else System.out.println(“Failed”); Atau System.out.println( grade > 70 ? “Passed” : “Failed” ) Struktur Kontrol Struktur Switch : merupakan salah satu bentuk lain dari struktur pemilihan. Program akan membaca blok yang sesuai dengan nilai yang terdapat dalam sebuah ekspresi. Secara umum dapat dilihat pada syntax disamping berikut: switch (switch_expr) { case case_selector_1: statement 1; statement 2; ….. break; case case_selector_2: statement 1; statement 2; ….. break; ……. default: statement 1; statement 2; ….. break; } Struktur Kontrol Switch case merupakan statement yang dapat digunakan untuk proses penyeleksian dengan variable tunggal yang diseleksi. Pada intinya, switch case merupakan proses seleksi tetapi yang diseleksi hanya satu variable pada keyword switch dan terdapat beberapa alternatif pilihan di dalam keyword case. Untuk lebih jelasnya lihat contoh berikut ini : SwitchCase.java Jalankan program di atas dan outputnya adalah i = 12. Perhatikan contoh di atas, konsep dari switch case adalah membandingkan nilai variable i oleh switch dengan nilai yang ada pada case. Perlu juga diingat bahwa tipe data i dengan nilai yang ada pada case harus sama. Misal i adalah int maka nilai case juga harus integer. Misalnya seperti contoh di atas adalah 2, 6, dan 12. Sekarang coba anda ganti nilai i menjadi 13 maka outputnya akan menjadi i bukan 2, 6, atau 12. Program akan membaca statement pada default karena tidak ada seleksi yang sama pada proses seleksi case. Adapun keyword break digunakan untuk keluar dari proses seleksi. Untuk mencobanya, hilangkan semua break dan ganti i menjadi 2. Maka outputnya akan menjadi : i=2 i=6 i = 12 i = bukan 2,6, atau 12 Hal ini disebabkan karena setelah seleksi menemui nilai yang sama dan menjalankan statement di dalamnya program tidak keluar dari blok switch tetapi masih membaca statement di bawahnya yaitu statement case yang lain. Sehingga semua statement akan dijalankan entah benar atau salah. Contoh java program : 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Struktur Kontrol public class TestSwitch { public static void main(String[] args) throws IOException { int a = ….; switch (a) { case 1: System.out.println( “value is 1”); break; case 2: System.out.println( “value is 2”); break; default:: System.out.println( “Other than 1 or 2”); break; } } } Struktur kontrol for Keyword for digunakan untuk melakukan perulangan dengan nilai seleksi adalah sebuah angka numeric. Bisa berupa bilangan bulat maupun pecahan. Pseudo Code untuk for terdapat di bawah ini : for(nilai_awal ; batas ; perubahan) { // statement yang akan dijalankan berulang } Di dalam pseudo code dapat dilihat, nilai awal kita isi dengan membuat variable dan diisi dengan angka awal proses. Untuk batas kita isi dengan batas perulangan, dan perubahan adalah perubahan nilai agar nilai var mencapai batas. Sebelum mencapai batas, program akan menjalankan statement yang ada dalam blok for terus menerus. Struktur kontrol for Contoh for Increment public class Contoh1For { public static void main(String[] args) { for(int i=0;i<4;i++) { System.out.println(i); } } } Output: 0 1 2 3 Perhatikan bahwa mengapa output bisa seperti di atas. Pertama nilai i = 0, kemudian dicek apakah i < 4. Karena true maka jalankan statement yang ada pada blok for. Setelah itu lakukan perubahan dengan i++. Jadi nilai i = 1. Begitu seterusnya sampai i bernilai 4 dan akan berhenti berulang karena menghasilkan nilai false saat dilakukan diseleksi di i < 4 . Struktur kontrol for Contoh For Decrement Berikut ini adalah contoh dimana nilai yang berubah menggunakan perubahan decrement atau nilai yang semakin menurun : public class Contoh2For { public static void main(String[] args) { for(int i=3;i>0;i--) { System.out.println(i); } } } Output: 3 2 1 Struktur kontrol for Berikut ini keterangan jalannya program secara detail : mulai -> i = 3 cek -> Apakah i > 0 ? -> true System.out.println(i); -> cetak 3 i--; -> i = 2 cek -> Apakah i > 0 ? -> true System.out.println(i); -> cetak 2 i--; -> i = 1 cek -> Apakah i > 0 ? -> true System.out.println(i); -> cetak 1 i--; -> i = 0 cek -> Apakah i > 0 ? -> false keluar dari looping Struktur kontrol for Contoh Program Pencetak bilangan Genap public class Even { public static void main(String[] args) { for(int i=0; i <= 10 ; i += 2){ System.out.print(i + " "); } System.out.println(); for(int i=10; i >= 0 ; i -= 2){ System.out.print(i + " "); } } } Output 0 2 4 6 8 10 10 8 6 4 2 0 Struktur kontrol for Contoh Program Pencetak bilangan Ganjil public class Odd { public static void main(String[] args) { for(int i=1; i <= 10 ; i += 2){ System.out.print(i + " "); } System.out.println(); for(int i=9; i > 0 ; i -= 2){ System.out.print(i + " "); } } } Output 13579 97531 Struktur kontrol for Nested For public class NestedFor { public static void main (String[] args) ( int i, j, product; for ( i =1; i <= 3; i++) { for (j=1; j <= 3; j++) { product = i * j; System.our.println(i + “ * “ + j + “ = “ + product); } } } } Struktur kontrol While While do merupakan proses looping dengan seleksi tertentu. Selama seleksi masih mempunyai nilai true maka loop akan terus berjalan. Lihat pseudo code di bawah ini : while ( var_selection ) { // statement to loop // changing to stop loop } Lihat di atas terdapat var_selection, ini adalah variable yang akan terus diseleksi ketika loop berjalan. Selama var_selection menghasilkan nilai true maka statement yang ada di dalam block while akan dieksekusi. Diperlukan juga perubahan var_selection agar memberi batas proses loop. Jika batas tidak diberi, loop akan tidak bisa berhenti. Struktur kontrol While Contoh program : public class Contoh1WhileDo { public static void main(String[] args) { int i = 0; while(i < 3){ System.out.println(i); i++; } } } Output : 0 1 2 Struktur kontrol While Secara lebih jelasnya, proses detail program di atas : start initialisation i = 0 while(i < 3 ) -> true System.out.println(i); -> print 0 i++; -> i = 1 while(i < 3 ) -> true System.out.println(i); -> print 1 i++; -> i = 2 while(i < 3 ) -> true System.out.println(i); -> print 2 i++; -> i = 3 while(i < 3 ) -> false exit from loop Struktur kontrol do While Do while digunakan untuk melakukan looping minimal adalah satu kali pengerjaan. Coba kita lihat pseudo code di bawah ini : do { // statement // changing }while( selection ); Statement di dalam blok do-while dikerjakan satu kali dahulu. Baru setelah itu seleksi terjadi di keyword while. Jika menghasilkan true maka statement akan dikerjakan ulang, sebaliknya akan keluar dari loop. Contoh : Struktur kontrol do while Contoh Program: Output : 0 1 2 public class ContohDoWhile { // main method public static void main(String[] args) { // declaration of i int i = 0; // start loop do{ // statement System.out.println(i); // changing i++; }while(i < 3);// selection // end loop } } Struktur kontrol do while Lebih jelasnya lihat detail proses berikut ini : start -> init i = 0 do -> System.out.println(i); -> print 0 i++ -> i = 1 selection -> while ( i < 3 ) -> true do -> System.out.println(i); -> print 1 i++ -> i = 2 selection -> while ( i < 3 ) -> true do -> System.out.println(i); -> print 2 i++ -> i = 3 selection -> while ( i < 3 ) -> false end while Perintah break and Continue break adalah perintah yang digunakan untuk menghentikan kegiatan pengulangan. Public class NestedFor { public static void main (String[] args) ( int i, j, product; for ( i =1; i <= 3; i++) { for (j=1; j <= 3; j++) { product = i * j; if ( j == 3 ) break; System.our.println(I + “ * “ + j + “ = “ +product); } } } } Perintah break and Continue break …. label statement : dengan menambahkan label pada awal for terluar dapat menjadikan perintah break … label menghentikan semua pengulangan. Public class NestedFor { public static void main (String[] args) ( int i, j, product; outer: for ( i =1; i <= 3; i++) { for (j=1; j <= 3; j++) { product = i * j; if ( j == 3 ) break outer; System.our.println(I + “ * “ + j + “ = “ +product); } } } } Perintah break and Continue continue statement : adalah perintah yang digunakan untuk melewati kegiatan yang ada dibawah perintah tersebut dan melanjutkan pengulangan. Public class NestedFor { public static void main (String[] args) ( int i, j, product; for ( i =1; i <= 3; i++) { for (j=1; j <= 3; j++) { product = i * j; if ( j == 2 ) continue; System.our.println(I + “ * “ + j + “ = “ + product); } } } } Perintah break and Continue continue …. label statement : dengan menambahkan label pada awal for terluar dapat menjadikan perintah continue … label melanjutkan pengulangan ke for terluar. Public class NestedFor { public static void main (String[] args) ( int i, j, product; outer: for ( i =1; i <= 3; i++) { for (j=1; j <= 3; j++) { product = i * j; if ( j == 2 ) continue outer; System.our.println(I + “ * “ + j + “ = “ + product); } } } } Formatting Output Data Melakukan format pada hasil keluaran diperlukan agar tampilan dapat dilihat semenarik mungkin. Bila ini tidak dilakukan hasilnya kemungkinan tidak sesuai dengan harapan. Contoh java program : System.out.println(“Average price = “ + ave); Hasilnya mungkin sbb: Average price = 3.76666666666667 Formatting Output Data Angka yang ditunjukan diatas dapat menjadi masalah didalam tabel jika format kolomnya tidak mencukupi, akibatnya sebagian angka akan bergeser kebawah. Untuk mengatasi masalah diatas perlu mengatur format dari hasil tersebut dengan mengacu kepada package java.text.NumberFormat serta java.text.DecimalFormat, dll sebagainya. Contoh lengkap dapat dilihat pada : http://www.iro.umontreal.ca/~vaucher/Java/tutorials/Formatting.ht ml http://sofia.fhda.edu/gallery/java/unit03/lesson03-6.html Formatting Output Data import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Locale; public class DecimalFormat6 { public static void main(String args[]) { DecimalFormat df = null; // get a NumberFormat object and cast it to // a DecimalFormat object try { df = (DecimalFormat) NumberFormat.getInstance(Locale.GERMAN); } catch (ClassCastException e) { System.err.println(e); } // set a format pattern df.applyPattern("####.00000"); // format a number System.out.println(df.format(1234.56)); } } Latihan Perhatikan potongan program berikut, mana yang salah dari masingmasing soal berikut : 1. x = 5; 2. x = 1; while ( x >= 0 ) while ( x <= 5 ); x++; x++; 3. for (x=0.1; x < 10.0; x += 0.1) System.out.println(“x = “ + x ); 4. switch (n) { case 1: System.out.println(“Number is 1”); case 2: System.out.println(“Number is 2”); break; default: System.out.println(“Number is not 1 or 2”); break; } Latihan Apa yang akan kerjakan dari program berikut: 5. public class Print { public static void main(String[] args) { for ( int i = 1; i <= 10; i++) { for ( int j = i; j <= 10; j++) { System.out.print(“*”); } System.out.println(); } } } FOR… While… Break…