18/03/2013
Decision and Looping
Konstruksi Pengambilan Keputusan
Konstruksi if Konstruksi if merupakan bentuk konstruksi pengambilan keputusan dengan 2 kemungkinan keputusan. Kemungkinankemungkinan keputusan itu akan dipilih berdasarkan suatu kondisi yang diperiksa. Kondisi tersebut merupakan suatu ekspresi boolean / boolean expression. Sintaks dasarnya: if ( boolean_expression ){ code block; } 2
1
18/03/2013
3
Contoh: public class HasilUjian{ public static void main(String[] args){ int nilai1 = 8; int nilai2 = 7; int nilai3 = 5; float rata_rata = (float)(nilai1 + nilai2 + nilai3)/3; if(rata_rata<5){ System.out.println(“Tidak Lulus”); } System.out.println(“Nilai Rata-rata = ”+rata_rata); } } Output :
4
2
18/03/2013
Konstruksi if..else.. Konstruksi if / else digunakan sebagai konstruksi pengambilan keputusan yang memiliki beberapa kemungkinan keputusan. Sintak dasarnya adalah seperti berikut : if ( boolean_expression_1 ){ code block 1; } else if ( boolean_expression_2 ){ code block 2; } . . . else{ code block n; }
5
6
3
18/03/2013
Output :
Contoh public class HasilUjian{ public static void main(String[] args){ int nilai1 = 8; int nilai2 = 7; int nilai3 = 5; float rata_rata = (float)(nilai1 + nilai2 + nilai3)/3; if(rata_rata<5){ System.out.println(“Tidak Lulus”); } else if ((rata_rata>=5) && (rata_rata<6)){ System.out.println(“Harus ikut ujian perbaikan”); } else { // rata_rata >= 6 System.out.println(“Lulus”); } System.out.println(“Nilai Rata-rata = ” + rata_rata); } }
7
Konstruksi Switch Konstruksi switch adalah konstruksi pengambilan keputusan yang mengevaluasi kemungkinan-kemungkinan nilai dari variabel yang dievaluasi. Bentuk umum syntax konstruksi switch adalah sebagai berikut: switch( variabel ) { case nilai_literal_1 : code_block_1; break; case nilai_literal_2 : code_block_2; break; . . default: code_block_default; break; }
8
4
18/03/2013
Keterangan: • switch adalah kata kunci yang mengindikasikan dimulainya konstruksi switch; • variabel adalah variabel yang nilainya akan dievaluasi. variabel hanya dapat bertipe-data char, byte, short, atau int; • case adalah kata kunci yang mengindikasikan sebuah nilai yang diuji. Kombinasi kata kunci case dan nilai_literal disebut case label; • nilai_literal_k adalah nilai yang mungkin akan menjadi nilai variabel. nilai_literal_k tidak dapat berupa variabel, ekspresi, atau method, tetapi dapat merupakan konstanta. k = {default, 1,2,...,n }; • break adalah pernyataan yang sifatnya opsional, yang mengakibatkan aliran program keluar dari blok switch. Jika setelah code_block_k tidak terdapat pernyataan break, maka aliran program akan masuk ke case berikutnya. k = {default, 1,2,3,...,n}; • default adalah kata kunci yang mengindikasikan code_block_default akan dieksekusi jika semua case yang diuji tidak sesuai dengan nilai variabel .
9
Contoh: public class HasilUjian{ public static void main(String[] args){ int nilai1 = 8; int nilai2 = 7; int nilai3 = 5; float rata_rata = (float)(nilai1 + nilai2 + nilai3)/3; switch((int)rata_rata){ case 0 : case 1 : case 2 : case 3 : case 4 : System.out.println(“Tidak Lulus”); break; case 5 : System.out.println(“Ikut ujian perbaikan”); break; default : System.out.println(“Lulus”); break; } System.out.println(“Nilai Rata-rata = ” + rata_rata); } }
Output :
10
5
18/03/2013
Konsep Perulangan • Sebuah proses di dalam program yang akan mengulang satu atau beberapa statement terus-menerus hingga sampai pada kondisi berhenti.
Bentuk Perulangan di Java
for while do-while
6
18/03/2013
Pengulangan : for • Umumnya digunakan pada pengulangan yang jumlah iterasinya sudah pasti atau sudah diketahui sebelumnya. • Formula : for (inisialisasi; kondisi; iterasi) { //statement yang akan diulang }
Alur Kerja for Start
inisialisasi
kondisi
false
End
true Statement yang diulang
iterasi
7
18/03/2013
Contoh-contoh “for” 1.
Program untuk menuliskan teks “Java Programming” sebanyak 10 kali. { class DemoFor1 public static void main (String[] args) { for (int i=0; i<10; i++) { System.out.println("Java"); } } } class DemoFor1 { public static void main (String[] args) { for (int i=10; i>0; i--) { System.out.println("Java"); } } }
2.
Program untuk menjumlahkan 5 bil. positif pertama class DemoFor3 { public static void main(String[] args) { int n = 5; // 5 bilangan positif pertama int hasil = 0; for (int i=1; i<=n; i++) { hasil = hasil + i; if (i != n) { System.out.print(i + " + "); } else { System.out.print("= "); } } System.out.println(hasil); } } Output :
8
18/03/2013
3.
Program untuk menentukan apakah sebuah integer termasuk prima atau tidak. class DemoFor4 { public static void main(String[] args) { int bilangan = 7; boolean prima = true; for (int i=2; i <= (bilangan/2); i++) { if ((bilangan % i) == 0) { prima = false; break; // menghentikan pengulangan } } if (prima) { System.out.println(bilangan + " merupakan bilangan prima"); } else { System.out.println(bilangan + " bukan bilangan prima"); } } } Output :
Penggunaan koma dalam “for” • Perhatikan program berikut : class DemoFor5 { public static void main(String[] args) { int j=4; for (int i=0; i < 5; i++) { System.out.println("Nilai i: " + i); System.out.println("Nilai j: " + j); System.out.println(); j--; } } }
Output :
9
18/03/2013
class DemoFor6 { public static void main(String[] args) { int i,j;
• Dapat disederhanakan sbb : for (i=0, j=4; i < 5; i++, j--) { System.out.println("Nilai i: " + i); System.out.println("Nilai j: " + j); System.out.println(); } } }
Output :
Variasi “for” • For dengan kondisi berhenti sebuah variabel boolean import java.util.Scanner; public class ForBoolean { public static void main(String[] args) { Scanner input = new Scanner(System.in); int angka, i; boolean stop=false; for (i=0; !stop; i++){ System.out.print("Masukkan angka : "); angka = input.nextInt(); System.out.print(angka+” “); if (angka == 0) stop = true; } System.out.println("Selesai."); } } Output :
10
18/03/2013
• Variasi program sebelumnya : import java.util.Scanner; public class ForBoolean { public static void main(String[] args) { Scanner input = new Scanner(System.in); int angka, i; boolean stop=false; i = 0; for (; !stop; ){ System.out.print("Masukkan angka : "); angka = input.nextInt(); if (angka == 0) stop = true; i++; } System.out.println("Selesai."); } }
Output :
Sebuah Cerita • Tiga mahasiswa IT nonton bareng sebelum ujian akhir. Besoknya mereka nggak siap untuk ikut ujian. Mereka memutuskan untuk tidak datang dan sepakat mengarang cerita, lalu belajar selama seminggu. Seminggu kemudian mereka bertiga menghadap profesor. Mereka cerita bahwa mereka pergi ke pedalaman Kalimantan, naik jip, terus ban mereka meledak, sementara ban cadangan gembos. Makan waktu 3 hari untuk jalan ke Pontianak, terus pulang naik pesawat ke Jakarta. • Kata profesor, “Ya sudah, kalau ban kalian meledak itu bukan salah kalian kan, ayo sekarang ikut saya ” • Mereka diberi 2 soal. Mereka dipisah, disuruh masuk ke kelas yang berbeda-beda, lalu mulailah ujian … • Soal pertama [poin 5] Apakah kepanjangan RAM? Mereka bertiga mikir, wah gampang banget …”Random Access Memory” • Soal kedua [point 95] Ban mana yang kempes? Waduuuuhhhh ……
11
18/03/2013
Percabangan : while • Formula :
inisialisasi while (kondisi) { //statement yang diulang
iterasi }
Contoh-contoh “while” Program yang akan menjumlahkan secara berulang integer masukan user dan berhenti ketika jumlahnya sudah >100 import java.util.Scanner; public class DemoWhile1 { public static void main(String[] args) { Scanner input = new Scanner(System.in); int bil, jumlah=0; while (jumlah<=100){ System.out.print("Masukkan angka : "); bil = input.nextInt(); jumlah = jumlah+bil; } System.out.println("Selesai. Total masukan user = "+jumlah); } }
12
18/03/2013
Program miniATM
Perulangan “do-while” • Formula
inisialisasi do { //statement yang akan diulang …
iterasi } while (kondisi);
13
18/03/2013
Contoh class ContohDoWhile { public static void main (String [] args) { int i = 6; do { System.out.println(“Java”); i++; } while (i<5); } }
Perulangan Bersarang (1) • “for bersarang” public class NestedFor { public static void main(String[] args) { int i,j; for (i=1;i<=5;i++){ for (j=1;j<=i;j++){ System.out.print(i+" "); } System.out.println(); } } }
14
18/03/2013
Perulangan Bersarang (2) • “while bersarang” public class NestedWhile { public static void main(String[] args) { int i=1,j=1; while (i<=5){ while (j<=i){ System.out.print(i+" "); j++; } System.out.println(); i++; } } }
Perulangan Bersarang (3) • “do-while bersarang” public class NestedDoWhile { public static void main(String[] args) { int i=1,j=1; do { do { System.out.print(i+" "); j++; } while (j<=i); System.out.println(); i++; } while (i<=5); } }
15
18/03/2013
SOAL 1.
2.
3.
Perbaiki kode berikut : for ( i = 100, i >= 1, i++ ) System.out.println( i ); Kode berikut harusnya menampilkan integer ganjil dari 19 s/d 1 : for ( i = 19; i >= 1; i += 2 ) System.out.println( i );
Kode berikut harusnya menampilkan integer genap dari 2 s/d 50 : counter = 2; do { System.out.println( counter ); counter += 2 ; } while ( counter < 50 );
16
18/03/2013
4.
Apakah output program berikut : public class Printing { public static void main(String args[]){ for ( int i = 1; i <= 3; i++ ) { for ( int j = 1; j <= 3; j++ ) System.out.print( '@' ); System.out.println(); } // end outer for } // end main } // end class Printing
Latihan 1.
Buat program perulangan yang outputnya : a. b. c. d.
2.
1 3 5 7 9 … 99 100 99 98 97 … 1 5 10 15 20 … 100 2 4 8 16 32 … 256
Modifikasilah contoh program di slide 21 sehingga banyaknya integer yang dimasukkan tergantung masukan user. Program akan terus menerus mengulang hingga user memasukkan huruf ‘t’ pada pertanyaan “Ingin mengulang lagi (y/t) ?”
17
18/03/2013
3.
Buatlah program menampilkan deretan berikut : 11111 2222 333 44 5
4. Buatlah program Java yang meminta masukan jumlah data nilai yang akan dihitung. Kemudian di akhir program akan menampilkan jumlah total dari nilai-nilai yang dimasukkan tersebut. Variabel yang perlu disimpan • Nilai • Nilai total • Jumlah nilai Tambahkan program menghitung rata-rata nilai
36
18