Aliran Kendali (Flow Control)
Pernyataan-pernyataan yang menentukan urutan eksekusi Pernyataan/struktur berurutan (sequence) Pencabangan bersyarat (selection, conditional structure) if, if-else, switch-case
Pengulangan (repetition, iteration, loop) for, while, do-while
Pemrograman Lanjut: Aliran Kendali
1
Pencabangan bersyarat
Dalam sebuah algoritma, seringkali suatu atau sekelompok instruksi harus dilaksanakan bila suatu persyaratan dipenuhi (bernilai benar) dan sebaliknya, dilewati atau tidak dilaksanakan jika persyaratan tersebut tidak dipenuhi (bernilai salah).
Pernyataan pencabangan bersyarat terdiri dari: if, if-else switch-case
Pemrograman Lanjut: Aliran Kendali
2
Pernyataan if
Penggambaran dalam flow-chart Statements sebelum if Boolean Eks.boolean expression
true
false
Statement; Statement; ...
Statements setelah if
Pemrograman Lanjut: Aliran Kendali
3
Pernyataan if
Sintaks : if (boolean expression)statement; atau if (boolean expression) { statement1; statement2; …… }
Block statement
Jika ekspresi boolean bernilai TRUE, maka statement atau block statement akan dilaksanakan. Pemrograman Lanjut: Aliran Kendali
4
Pernyataan if-else
Penggambaran if-else dalam flow-chart Statements sebelum if false
Boolean Eks.boolean expression
Statement_11; Statement_12; ...
true Statement_01; Statement_02; ...
Statements setelah if Pemrograman Lanjut: Aliran Kendali
5
Pernyataan if-else Sintaks : if (ekspresi boolean) statement_01; else statement_02; atau if (ekspresi boolean) { statement_01; …… Block statement_01 } else { statement_02; Block statement_02 …... } Jika ekspresi boolean bernilai TRUE, maka statement_01 atau block statement_01 yang dilaksanakan, jika bernilai FALSE maka statement_02 atau block statement_02 yang dilaksanakan. Pemrograman Lanjut: Aliran Kendali
6
Pernyataan if-else
Contoh program untuk mendapatkan akar-akar dari persamaan kwardrat.
Algoritma : 1. Dapatkan koefisien a, b, dan c dari keyboard 2. Hitung diskriminan d = b*b – 4*a*c 3. Bila d >= 0 maka hitung x1 dan x2 Bila d < 0 maka print akar imajiner dan stop 4. Stop
Menghitung x1, dengan rumus :
-b + d 2*a
Menghitung x2, dengan rumus : -b - d 2*a Pemrograman Lanjut: Aliran Kendali
7
Pernyataan if-else
Contoh :
main() {
float a,b,c,d,x1,x2; printf("PERHITUNGAN AKAR PERS. KUADRAT\n\n"); printf("Masukan koef. a : "); a=input.nextInt; printf("Masukan koef. b : "); b=input.nextInt; printf("Masukan koef. c : "); c=input.nextInt; d = b*b - 4 * a * c; if (d >= 0){ x1 = (-b + sqrt(d)) / (2 * a); x2 = (-b - sqrt(d)) / (2 * a); printf("\nx1=%f\nx2=%f\n\n",x1,x2); } else printf("Akar Persamaan Imajiner\n\n");
}
Pemrograman Lanjut: Aliran Kendali
8
Pernyataan if-else
Konstruksi if-else dapat digunakan secara bertingkat atau bersarang (nested)
Contoh: Semua statements dalam level yang sama if (boolean exp) { statement; } else if (boolean exp) { statement; } else { statement; }
Pemrograman Lanjut: Aliran Kendali
9
Pernyataan if-else
Contoh: Konstruksi if-else bersarang; terdapat statements dalam level yang berbeda if (boolean exp) { statement; } else if (boolean exp) { if (boolean exp) statement; else statement; } else { statement; } Pemrograman Lanjut: Aliran Kendali
10
Pernyataan if
Pemrograman Lanjut: Aliran Kendali
11
Pernyataan switch-case
Pernyataan switch-case dapat dipergunakan sebagai pengganti pernyataan if-else, jika pernyataan if-else bertingkat terlalu banyak, sehingga menjadi sulit dibaca.
Sintaks pernyataan switch-case switch (int or char expression) { case constant1 : statements1; break; case constant2 : statements2; break; … [ default : statements; ] } Pemrograman Lanjut: Aliran Kendali
12
Pernyataan switch-case
Pernyataan switch mengevaluasi ekspresi dan kemudian melihat isi case constant. Jika nilai ekspresi ada didalam constant list maka pernyataan dieksekusi. Jika tidak ada yang cocok, pernyataan default yang dieksekusi.
Catatan: Nilai ekspresi harus integer atau character dan constant harus integer constant termasuk char constant.
Pemrograman Lanjut: Aliran Kendali
13
Pernyataan switch-case
Struktur logika switch-case dapat digambarkan sbb.: case a false
case b
true true
case a action(s)
break
case b action(s)
break
case z action(s)
break
false
case z
true
false
default action(s)
Pemrograman Lanjut: Aliran Kendali
14
Pernyataan switch-case
Contoh : main(){ float bil1, bil2; char op; input bil1, bil2, op; switch(op){ case '+': printf(" = %f", case '-': printf(" = %f", case '*': printf(" = %f", case '/': printf(" = %f", default: printf("operator } printf("\n\n"); }
bil1 + bil2); break; bil1 - bil2); break; bil1 * bil2); break; bil1 / bil2); break; TAK DIKENAL");
Pemrograman Lanjut: Aliran Kendali
15
Pernyataan switch-case
Pemrograman Lanjut: Aliran Kendali
16
Latihan 1. Buatlah program untuk menentukan mahasiswa lulus atau tidak dengan masukan suatu nilai, jika nilainya lebih besar atau sama dengan 60, maka muncul pesan lulus, kalau tidak maka muncul pesan gagal 2. Modifikasi program no 1 dengan menambahkan batasan nilai atas dan nilai bawah. Munculkan pesan bahwa nilai yang dimasukkan di luar range penilian jika nilai tersebut kurang dari 0 atau lebih dari 100 Pemrograman Lanjut: Aliran Kendali
17
Tugas 1. Buatlah program untuk mengkonversikan nilai mahasiswa ke bentuk huruf : – – – – –
Cetak A jika nilainya lebih besar atau sama dengan 81 Cetak B jika nilainya antara 70 sampai 79 Cetak C jika nilainya antara 60 sampai 69 Cetak D jika nilainya antara 50 sampai 59 Cetak E untuk nilai yang lain
Pemrograman Lanjut: Aliran Kendali
18