Struktur Kontrol
PEMROGRAMAN BERORIENTASI OBYEK Ada 3 jenis struktur kontrol, yaitu : Sequence Structure Selection Structure Repetition Structure Sequence Structure GASAL 2008/2009 PEMROGRAMAN BERORIENTASI OBYEK
Selection Structure if if…else switch if Bentuknya : if (kondisi) Statement1; Statement2; GENAP 2006/2007 BHS PEMROGRAMAN 2 (PG022)
Jika kondisi bernilai benar, maka statement1 yg akan dijalankan. Kondisi dalam statement if dapat dibentuk menggunakan operator kesamaan (equality operators) atau operator relasi (relational operators)Lihat materi operator pada pertemuan 2. Jika kondisi bernilai benar, maka statement1 yg akan dijalankan. Jika kondisi bernilai salah, maka statement1 tdk akan dijalankan. Tidak menggunakan semicolon ; diakhir if GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Contoh : public class If1 { public static void main(String args[]) int nilai= 50; if (nilai>=60) System.out.println("Lulus"); System.out.println("Terima kasih"); } Hasilnya adalah : Terima kasih GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
public static void main(String args[]) int nilai= 70; public class If1 { public static void main(String args[]) int nilai= 70; if (nilai>=60) System.out.println("Lulus"); System.out.println("Terima kasih"); } GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
public static void main(String args[]) int nilai1= 50; int nilai2=75; //nama file : If2.java public class If2 { public static void main(String args[]) int nilai1= 50; int nilai2=75; if (nilai1==nilai2) System.out.println(nilai1+" = "+nilai2); if (nilai1>=nilai2) System.out.println(nilai1+" >= "+nilai2); if (nilai1<=nilai2) System.out.println(nilai1+" <= "+nilai2); if (nilai1!=nilai2) System.out.println(nilai1+" != "+nilai2); } GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
if…else Bentuk / Syntax : if (kondisi) { < STATEMENTS > } else GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
import javax.swing.*; public class IF2 { public static void main(String args[ ]) { String a = JOptionPane.showInputDialog("Masukkan Nilaimu!"); int nilai = Integer.parseInt(a); if(nilai>60) { JOptionPane.showMessageDialog( null, "Selamat Anda Lulus","Hasil", JOptionPane.INFORMATION_MESSAGE ); } else { JOptionPane.showMessageDialog( null, "Maaf Anda belum beruntung", "Hasil", JOptionPane.INFORMATION_MESSAGE ); } System.exit(0); } GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
If … else bisa lebih dari satu (Nested if). Misal : if (nilai>=90) System.out.println("Grade : A"); else if (nilai>=80) System.out.println("Grade : B"); if (nilai>=70) System.out.println("Grade : C"); if (nilai>=60) System.out.println("Grade : D"); System.out.println("Grade : E"); GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Tapi akan lebih mudah dibaca jika ditulis dalam bentuk di bawah ini : if (nilai>=90) System.out.println("Grade : A"); else if (nilai>=80) System.out.println("Grade : B"); else if (nilai>=70) System.out.println("Grade : C"); else if (nilai>=60) System.out.println("Grade : D"); else System.out.println("Grade : E"); GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
tunjKel = tunjIstri+tunjAnak;} Else tunjKel = 15000; If..else juga bisa diletakkan di dalam bagian if atau bagian else nya (Nested if … else atau if..else bersarang) Misal : If (status==‘1’) { tunjIstri = 20000; if (jmlAnak>=1) tunjAnak = 10000*jmlAnak; else tunjAnak = 0; tunjKel = tunjIstri+tunjAnak;} Else tunjKel = 15000; GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Catatan : Gunakan tanda kurung {} pada bagian if atau else jika memiliki lebih dari 1 statement agar dikenali sebagai satu blok. GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Conditional Operator (?:) Merupakan ternary operator (membutuhkan 3 operand). Contoh : nilai>60 ? “Lulus” : “Gagal” Operand pertama (di sebelah kiri tanda ?) merupakan kondisi yg bernilai benar atau salah. Operand kedua (di sebelah kanan tanda ?) merupakan perintah yg akan dijalankan jika kondisi bernilai benar. Operand ketiga (di sebelah kanan tanda :) merupakan perintah yang akan dijalankan jika kondisi bernilai salah. GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Contoh penggunaan ?: Modifikasi dari program pada halaman 9 import javax.swing.*; public class If1 { public static void main(String args[ ]) { String a = JOptionPane.showInputDialog("Masukkan Nilaimu!"); int nilai = Integer.parseInt(a); JOptionPane.showMessageDialog(null, nilai>60?"Selamat":"Maaf","Hasil", JOptionPane.INFORMATION_MESSAGE); System.exit(0); } GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Contoh lain (Sblm menggunakan operator ?:) public class If3 { public static void main(String args[]) int nilai = 81; if (nilai>=90) System.out.println("Grade : A"); else if (nilai>=80) System.out.println("Grade : B"); else if (nilai>=70) System.out.println("Grade : C"); else if (nilai>=60) System.out.println("Grade : D"); else System.out.println("Grade : E"); } GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Setelah menggunakan operator ?: public class If3 { public static void main(String args[]) int nilai = 81; System.out.println(nilai>=90?"Grade : A" :(nilai>=80?"Grade : B" :(nilai>=70?"Grade : C" :(nilai>=60?"Grade : D" :"Grade : E")))); } GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Perintah switch Perintah switch dapat menyederhanakan logika dari sebuah program Bentuk program dengan perintah if dan else if dapat dikonversi ke dalam perintah switch Program dengan perintah if dan else if if (x==0) doSomething0(); else if (x==1) doSomething1(); else if (x==2) doSomething2(); else if (x==3) doSomething3(); else doSomethingElse(); GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Setelah menggunakan perintah switch-case switch(x) { case 0: doSomething0();break; case 1: doSomething1();break; case 2: doSomething2();break; case 3: doSomething3();break; default: doSomethingElse(); } GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Contoh lain : public class switch1 { public static void main(String args[]) int nilai = 2; switch(nilai) case 1: System.out.println("Satu"); break; case 2: System.out.println("Dua"); break; case 3: System.out.println("Tiga"); break; default: System.out.println(“Tdk ada dalam pilihan"); } GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Repetition Structure (Struktur Perulangan) While… For … Do … while GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
while … Bentuk 1 : while (kondisi) Statement; Bentuk 2 : { Statement1; Statement2; … Statementn+1; } GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
while (Lanjutan) Perintah dalam while akan dikerjakan selama kondisi bernilai benar. Proses perulangan terjadi minimal 0 kali. Dapat menggunakan counter-controlled repetition dan sentinel-controlled repetition. Counter-controlled repetition perulangan akan terus terjadi sejumlah isi dari counter yg telah ditetapkan. Sentinel-controlled repetition perulangan akan terus terjadi sampai ditemukannya sentinel value (disebut juga special value, signal value, dummy value atau flag value) yang menandakan proses perulangan harus berhenti. GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Contoh Program //Average1.java //menggunakan counter-controlled repetition import javax.swing.*; public class Average1 { public static void main(String args[]) int total; int nilaiCounter; int nilai; int average; String nilaiString; total=0; nilaiCounter=1; GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
while(nilaiCounter<=5) { nilaiString = JOptionPane.showInputDialog("Masukkan Nilainya : "); //nilaiString nya berbentuk string nilai = Integer.parseInt(nilaiString); //mengubah string ke integer --> ada di paket java.lang total = total + nilai; nilaiCounter = nilaiCounter + 1; } average = total / 5; JOptionPane.showMessageDialog(null,"Nilai Rata2 Kelas : "+average,"Hasil", JOptionPane.INFORMATION_MESSAGE); System.exit(0); } //akhir main } //akhir dari class Average1 GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Hasilnya adalah : GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Contoh Lain : //Average2.java //menggunakan sentinel-controlled repetition import javax.swing.*; public class Average2 { public static void main(String args[]) int total; int nilaiCounter; int nilai; int average; String nilaiString; total=0; nilaiCounter=0; GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
nilaiString = JOptionPane.showInputDialog ("Masukkan Nilainya atau -1 untuk berhenti : "); nilai = Integer.parseInt(nilaiString); while(nilai != -1) { total = total + nilai; nilaiCounter = nilaiCounter + 1; ("Masukkan Nilainya : "); //nilaiString nya berbentuk string //mengubah string ke integer --> ada di java.lang } GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
if (nilaiCounter != 0) //kalau ada nilai yg dimasukkan { average = total / nilaiCounter; JOptionPane.showMessageDialog(null, "Nilai Rata2 Kelas : "+average,"Hasil", JOptionPane.INFORMATION_MESSAGE); } else //kalau tidak ada nilai yg dimasukkan "Tidak ada nilai yg dimasukkan","Hasil", System.exit(0); } //akhir dari main } //akhir dari class Average2 GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
for Bentuk 1 : for (inisialisasi; kondisi; increment) Statement; … Statementn+1; } GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Contoh Syntax: GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Examples Using the for Statement Varying control variable in for statement Vary control variable from 1 to 100 in increments of 1 for ( int i = 1; i <= 100; i++ ) Vary control variable from 100 to 1 in increments of –1 for ( int i = 100; i >= 1; i-- ) Vary control variable from 7 to 77 in increments of 7 for ( int i = 7; i <= 77; i += 7 ) Vary control variable from 20 to 2 in decrements of 2 for ( int i = 20; i >= 2; i -= 2 ) Vary control variable over the sequence: 2, 5, 8, 11, 14, 17, 20 for ( int i = 2; i <= 20; i += 3 ) Vary control variable over the sequence: 99, 88, 77, 66, 55, 44, 33, 22, 11, 0 for ( int i = 99; i >= 0; i -= 11 ) GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Contoh Program : //Average3.java //menggunakan counter-controlled repetition import javax.swing.*; public class Average3 { public static void main(String args[]) int total; int nilaiCounter; int nilai; int average; String nilaiString; total=0; GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
for (nilaiCounter=1; nilaiCounter<=5; nilaiCounter++) { nilaiString = JOptionPane.showInputDialog ("Masukkan Nilainya : "); //nilaiString nya berbentuk string nilai = Integer.parseInt(nilaiString); //mengubah string ke integer --> ada di paket java.lang total = total + nilai; } average = total / 5; JOptionPane.showMessageDialog(null, "Nilai Rata2 Kelas : "+average,"Hasil", JOptionPane.INFORMATION_MESSAGE); System.exit(0); } //akhir dari main } // akhir dari class Average3 GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Contoh Program : //Average4.java //menggunakan sentinel-controlled repetition import javax.swing.*; public class Average4 { public static void main(String args[]) int total; int nilaiCounter; int nilai; int average; String nilaiString; total=0; GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
nilaiString = JOptionPane.showInputDialog ("Masukkan Nilainya atau -1 untuk berhenti : "); nilai = Integer.parseInt(nilaiString); for (nilaiCounter=0; nilai != -1; nilaiCounter++) { total = total + nilai; ("Masukkan Nilainya : "); //nilaiString nya berbentuk string //mengubah string ke integer --> ada di paket java.lang } GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
if (nilaiCounter != 0) //kalau ada nilai yg dimasukkan { average = total / nilaiCounter; JOptionPane.showMessageDialog(null, "Nilai Rata2 Kelas : "+average,"Hasil", JOptionPane.INFORMATION_MESSAGE); } else //kalau tidak ada nilai yg dimasukkan "Tidak ada nilai yg dimasukkan","Hasil", System.exit(0); GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
do…while Bentuk 1 : Bentuk 2 : do do statement; { while (kondisi); statementn+1; } while (kondisi); GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
do…while lanjutan Hampir sama dengan while… Proses cek kondisi berada di bagian while Sehingga bagian do minimal dikerjakan 1 kali. Pada bagian do, jika statement lebih dari 1, tidak perlu menggunakan kurawal { }. Tapi lebih baik menggunakan kurawal { } agar tidak terjadi kesalahan dalam pembacaan kode program oleh programmer atau orang lain GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
break dan continue Break dipakai jika ingin berhenti dari proses looping dan switch. Continue dipakai jika ingin melakukan iterasi berikutnya dalam proses looping dengan mengabaikan perintah/statement di bawahnya. GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Contoh Class ContohBreak{ public static void main(String args[]){ for(i=0;i<10;i++){ if(i==5) break; System.out.print(i); }
Contoh Class ContohContinue{ public static void main(String args[]){ for(i=0;i<10;i++){ if(i==5) continue; System.out.print(i); }
Contoh Program Menggunakan Perintah Break //Nama file : BreakTest.java //program utk memberhentikan proses looping //menggunakan break import javax.swing.JOptionPane; public class BreakTest { public static void main(String args[]) String output = ""; int count; GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
for(count=1; count<=10; count++) { if (count==5) break; output = output + count + " "; //perintah di atas bisa diganti menjadi //output += count + " "; } output = output + "\nBerhenti looping pada count = "+count; //output += "\nBerhenti looping pada count = "+count; JOptionPane.showMessageDialog(null, output); System.exit(0); } //akhir dari main } //akhir dari class BreakTest GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Hasilnya : GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Contoh Program Menggunakan Perintah Continue //Nama file : ContinueTest.java //program utk melanjutkan proses looping //menggunakan continue import javax.swing.JOptionPane; public class ContinueTest { public static void main(String args[]) String output = ""; int count; GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
for(count=1; count<=10; count++) { if (count==5) continue; output = output + count + " "; //perintah di atas bisa diganti menjadi //output += count + " "; } output = output + "\nMenggunakan continue utk skip mencetak 5“; //output += "\nMenggunakan continue utk skip mencetak 5”; JOptionPane.showMessageDialog(null, output); System.exit(0); } //akhir dari main } //akhir dari class ContinueTest GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Hasilnya : GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Latihan Buat program dengan menggunakan perintah for GENAP 2006/2007 BHS. PEMROGRAMAN 2 (PG022)
Latihan Cetaklah Bilangan Genap dari 1 s.d 100 Cetaklah Bilangan Ganjil dari 1 s.d. 100
Latihan Perhatikan potongan program berikut, mana yang salah dari masing-masing 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”); }