04 Decision and Looping

advertisement
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
Download