S E L E C T I O N
Pemrograman Dasar
Aliran Kendali (Flow Control) 2
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
Pencabangan bersyarat
3
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
Pernyataan IF
4
Penggambaran if dalam flow-chart
Eks.boolean
Statement; Statement;
...
true
false
Statements sebelum if
Statements setelah if
Boolean expression
Statement; Statement;
...
Pernyataan IF 5
Sintaks :
if (boolean expression)statement;
atau
if (boolean expression)
{ statement1; statement2; …… }
Jika ekspresi boolean bernilai TRUE, maka statement atau block statement akan dilaksanakan.
Block statement
Pernyataan IF-ELSE
6
Penggambaran if-else dalam flow-chart
Statements sebelum if
Statements setelah if
Eks.boolean
Statement_01; Statement_02;
...
true false
Statement_11; Statement_12;
...
Boolean expression
Statement_01; Statement_02;
...
Statement_11; Statement_12;
...
Pernyataan IF-ELSE 7
Sintaks :
if (ekspresi boolean) statement_01; else statement_02; atau
if (ekspresi boolean) { statement_01; …… } else { 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.
Block statement_01
Block statement_02
Pernyataan IF-ELSE
8
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 :
Menghitung x2, dengan rumus :
-b + d
2*a
-b - d
2*a
Pernyataan IF-ELSE
9
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");
}
Pernyataan IF -ELSE 10
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;
}
Pernyataan IF-ELSE 11
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;
}
Pernyataan if
12
Pernyataan switch-case
13
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; ]
}
Pernyataan switch-case 14
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.
Pernyataan switch-case
15
Struktur logika switch-case dapat digambarkan sbb.:
case b
case a
case z
case a action(s)
case b action(s)
case z action(s)
break
break
break
default action(s)
true
true
true
false
false
false
case b
case a
case z
case a action(s)
case b action(s)
case z action(s)
break
break
break
default action(s)
Pernyataan switch-case
16
Contoh :
main(){
float bil1, bil2; char op;
input bil1, bil2, op;
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");
}
Pernyataan switch-case
17