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 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 2
Pernyataan if Penggambaran dalam flow-chart Statements sebelum if Boolean Eks.boolean expression false true Statement; Statement;... Statements setelah if 3
Pernyataan if Sintaks: if (boolean expression)statement; atau if (boolean expression) { statement1; statement2; Block statement JikaekspresibooleanbernilaiTRUE, makastatementataublock statement akan dilaksanakan. 4
Pernyataan if-else Penggambaran if-else dalam flow-chart Statements sebelum if false Statement_11; Statement_12;... Boolean Eks.boolean expression true Statement_01; Statement_02;... Statements setelah if 5
Sintaks: if (ekspresi boolean) statement_01; else statement_02; atau Pernyataan if-else if (ekspresi boolean) { statement_01; else { statement_02;... Block statement_01 Block statement_02 JikaekspresibooleanbernilaiTRUE, makastatement_01 ataublock statement_01yang dilaksanakan, jikabernilaifalse makastatement_02ataublock statement_02yang dilaksanakan. 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 akar imajiner dan stop 4. Stop Menghitung x1, dengan rumus : -b + d 2*a Menghitung x2, dengan rumus : -b - d 2*a 7
Pernyataan if-else Contoh : #include <stdio.h> #include <math.h> #include <stdlib.h> int main() { float a,b,c,d,x1,x2; printf("perhitungan AKAR PERS. KUADRAT\n\n"); printf("masukan koef. a : "); scanf("%f",&a); printf("masukan koef. b : "); scanf("%f",&b); printf("masukan koef. c : "); scanf("%f",&c); 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"); system("pause"); return 0; 8
Konstruksi if-elsedapat digunakan secara bertingkat atau bersarang (nested) Contoh: Pernyataan if-else Semua statements dalam level yang sama if (boolean exp) { statement; else if (boolean exp) { statement; else { statement; 9
Pernyataan if-else Contoh: Konstruksi if-elsebersarang; terdapat statementsdalam level yang berbeda if (boolean exp) { statement; else if (boolean exp) { if (boolean exp) statement; else statement; else { statement; 10
Pernyataan if 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(intor char expression) { caseconstant1 : statements1; break; caseconstant2 : statements2; break; [ default: statements; ] 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. 13
Pernyataan switch-case Struktur logika switch-case dapat digambarkan sbb.: case a false case b true true case a action(s) case b action(s) break break false true case z case z action(s) break false default action(s) 14
Contoh : Pernyataan switch-case #include <stdio.h> #include <stdlib.h> int main(){ float bil1, bil2; char op; scanf("%f %c %f", &bil1, &op, &bil2); switch(op){ case '+': printf(" = %f", bil1 + bil2); break; case '-': printf(" = %f", bil1 - bil2); break; case '*': printf(" = %f", bil1 * bil2); break; case '/': printf(" = %f", bil1 / bil2); break; default: printf("operator TAK DIKENAL"); printf("\n\n"); system("pause"); return(0); 15
Pernyataan switch-case 16