Modul 3 – Flow Control dan Input Flow control terbagi menjadi dua, yaitu control seleksi dan control perulangan. 1. KONTROL SELEKSI Kontrol seleksi digunakan untuk membuat pemilihan terhadap aksi yang akan dilakukan. 1.1.
IF
Statement if merupakan control seleksi tunggal. Jika kondisi di dalam If terpenuhi maka statement yang ada di dalamnya akan dijalankan. Sintaks: if (kondisi) { Aksi1; Aksi2; ……..; } Contoh: int a = 10; If (a == 10) { System.out.println(“a bernilai sepuluh”); } Jika nilai a diubah menjadi 7, apakah akan terjadi error atau tidak? Jika tidak terjadi error, maka apa yang akan terjadi? Jika terjadi error, pesan error apa yang akan disampaikan? 1.2.
IF ELSE
If else digunakan ketika kita akan melakukan beberapa pemilihan yang memliki kondisi yang berbeda-beda Sintaks: If (kondisi) { Aksi 1; Aksi 2; } else if (kondisi) { Aksi 3; Aksi 4;
} else { Aksi 5; } Contoh: int a = 15; If (a == 10) { System.out.println(“a bernilai sepuluh”); } else If (a == 15) { System.out.println(“a bernilai lima belas”); } else { System.out.println(“a bukan sepuluh ataupun lima belas”); } Coding di atas akan menghasilkan output apa? Jika nilai a diubah menjadi 8, output apa yang akan dihasilkan? Jika nilai a diubah menjadi 10, output apa yang akan dihasilkan? Jika nilai a diubah menjadi 17, output apa yang akan dihasilkan? Contoh 2 : public class HelloWorld { public static void main(String[] args) { int a = 5; if(a==10) { System.out.println("Nilai A tu 10"); } else if(a!=10) { System.out.println("Nilai A tu bkn 10"); } else if(a>=10) {
System.out.println("Nilai A lebih besar daripada 10"); } else if(a<=10) { System.out.println("Nilai A lebih kecil daripada 10"); } else { System.out.println("Nilai A bukan angka"); } } } Output apakah yang dihasilkan dari program diatas? Output apakah yang dihasilkan jika a diubah menjadi 10? Output apakah yang dihasilkan jika a diubah menjadi 15? Output apakah yang dihasilkan jika a diubah menjadi „a‟? 1.3.
SWITCH
Switch digunakan pada saat kita melakukan pemilihan yang kondisinya pasti. Sintaks: switch (a) { Case 1: aksi 1; break; Case 2: aksi 2; break; default: aksi 3; }
Contoh :
Output apa yang akan dihasilkan dari coding di atas? Jika nilai a diubah menjadi 7, output apa yang akan dihasilkan? Jika nilai a diubah menjadi 7, output apa yang akan dihasilkan? Contoh 2: public class VokalKonsonan { public static void main(String args[]) { char c = (char) (Math.random() * 26 + „a‟); System.out.print(c + “:”); switch(c) { case „a‟ : case „e‟ : case „i‟ : case „o‟ : case „u‟ : System.out.println(“ huruf vokal”); default : System.out.println(“ huruf konsonan”); } } } Output apakah yang dihasilkan dari program diatas? Apabila di case „a‟ diberi break apakah yang terjadi?
2. KONTROL PERULANGAN 2.1.
For
For digunakan untuk perulangan yang kita ketahui batas akhirnya. Sintaks: for (initialization ; Boolean-expression ; step) { Statement; } Contoh: int a = 1; for (int x = 1; x < =5; x++) { System.out.println(“nilai a ke ” + a); a++; }
” + x + “adalah
a. Output apakah yang akan dihasilkan dari coding di atas? b. Jika a++ dipindahkan ke atas statement System.out.println(“nilai a ke ” + x + “adalah ” + a); apakah yang akan terjadi? c. Jika statement for (int x = 1; x < =5; x++) diubah menjadi for (int x = 1; x > =5; x++), apakah yang akan terjadi? 2.2.
While
Kontrol perulangan while lebih diperuntukkan pada kontrol perulangan yang didasarkan pada kondisi yang benar. Bisa jadi, tidak ada inisialisasi nilai awal. Sintaks: while (Boolean-expression) { Statement; } Contoh: int a = 1; while (a <= 5) { System.out.println(“nilai a adalah a++; }
” + a);
a. Output apakah yang akan dihasilkan dari coding di atas? b. Jika a++ dipindahkan ke atas statement System.out.println(“nilai a adalah ” + a); apakah yang akan terjadi? c. Jika statement while(a <= 5) diubah menjadi while (a >= 5), apakah yang akan terjadi? d. Jika a++ diubah menjadi a+=3, dan while (a<=5) diubah menjadi while(a!=5), output apakah yang akan dihasilkan? 2.3.
Do … while
Do … while mirip dengan while, hanya perintah yang berada dalam blok perulangan paling tidak akan dikerjakan satu kali Sintaks: do { Statement; } while (Boolean-expression); Contoh: int a = 1; do { System.out.println(“nilai a adalah a++; } while (a <= 5);
” + a);
a. Output apakah yang akan dihasilkan dari coding di atas? b. Jika a++ dipindahkan ke atas statement System.out.println(“nilai a adalah ” + a); apakah yang akan terjadi? c. Jika statement while(a <= 5) diubah menjadi while (a >= 5), apakah yang akan terjadi? d. Jika a++ diubah menjadi a+=3, dan while (a<=5) diubah menjadi while(a!=5), output apakah yang akan dihasilkan?
3. BREAK DAN CONTINUE 3.1.
Break
break digunakan dalam control seleksi dan control perulangan untuk membuat program exit dari statement tersebut. Selanjutnya program akan mengeksekusi baris pertama sesudah control statement. 3.1.1. Unlabled Break Contoh: String output = ""; int count; for (count = 1; count <=10; count++) { if (count == 5) break; output += count + " "; } output += "\nKeluar statement pada iterasi ke = " + count; System.out.println(output); 3.1.2.
Labeled Break
Contoh: String output = “”; int count1,count2; labelnya: for(count1 = 1;count1<=5;count1++) { for(count2 = 1;count2<=3;count2++) { if(count2==2) break labelnya; System.out.println(“Nilai count 1 = ” +count1+”dan count 2 = ”+count2); } } a. Output apakah yang akan dihasilkan dari program diatas? b. Apabila “labelnya” dimasukkan ke dalam for pertama, output apa yang dihasilkan? c. Output apa yang dihasilkan apabila if(count2==2) diganti dengan if(count1==1)?
3.2.
Continue
continue menyebabkan program melewati (skip) sisa statement yang ada dan langsung menuju iterasi berikut. 3.2.1. Unlabeled Continue Contoh: String output = ""; int count; for (count = 1; count <=10; count++) { if (count == 5) { continue; } output += count + " "; } output += "\nKeluar statement pada iterasi ke = " + count; System.out.println(output); 3.2.2.
Labeled Continue
Contoh String output = “”; int count1,count2; labelnya: for(count1 = 1;count1<=5;count1++) { for(count2 = 1;count2<=3;count2++) { if(count2==2) { continue labelnya; } System.out.println(“Nilai count 1 = ” +count1+”dan count 2 = ”+count2); } } a. Output apakah yang dihasilkan dari program diatas? b. Apakah yang terjadi apabila if(count2==2) diubah menjadi if(count1==2)?
4. INPUT 4.1.
Menggunakan method readLine
Contoh : import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class InputNama { public static void main( String[] args ){ BufferedReader input = new BufferedReader(new InputStreamReader( System.in) ); String nama = ""; System.out.print("Masukkan nama anda :"); try { nama = input.readLine(); } catch( IOException e ){ System.out.println("Error!"); } System.out.println("Hello "+nama+"!"); } } 4.2.
Menggunakan method JOptionPane
Contoh : import javax.swing.JOptionPane; public class InputNama { public static void main(String[] args) { System.out.println(“Masukkan nama anda : ”); String nama; Nama = JOptionPane.showInputDialog(“Nama”); System.out.println(“Terima Kasih ”+nama); } }
Latihan : 1. Ambil tiga nilai ujian dari user dan hitung nilai rata-rata dari nilai
tersebut. Berikan output rata-rata dari tiga ujian. Berikan pujian jika nilai rata-rata lebih besar atau sama dengan 60, selain itu beri outputnya diberi tugas tambahan. a. Gunakan BufferedReader untuk mendapat input dari user, dan System.out untuk output hasilnya. b. Gunakan JOptionPane untuk mendapat input dari user dan output hasilnya. 2. Hitung pangkat sebuah nilai berdasarkan angka dan nilai pangkatnya. Buat tiga versi dari program ini menggunakan while loop, do-while dan for-loop. 3. Apa hasil dari perintah berikut bila dijalankan? for (int i=1;i<=5;i++) { for (int j=1;j<=3 ;j++ ) { for (int k=1;k<=4 ;k++ ) System.out.print("*"); System.out.println(); } System.out.println(); } }