Title: Pencabangan Bersyarat
1Pencabangan Bersyarat
Pertemuan 05
Dasar Pemrograman Komputer TKL-4002 2010
2Learning Outcomes
- Pada akhir pertemuan ini, diharapkan mahasiswa
me-miliki kemampuan untuk - Menggunakan struktur kendali pencabangan
ber-syarat dalam bahasa pemrograman C.
3Outline Materi
- Pencabangan Bersyarat
- Pernyataan if dan if-else
- Pernyataan nested if-else dan switch-case
- Operator kondisional
4Pencabangan Bersyarat
- Dalam sebuah algoritma, seringkali beberapa
instruksi harus dilaksanakan bila suatu
persyaratan dipenuhi (bernilai benar) dan
sebaliknya. - Dalam struktur pencabangan bersyarat, suatu
instruksi atau sekelompok instruksi dapat
dilewati, sementara instruksi lain dijalankan. - Pernyataan pencabangan bersyarat terdiri dari
- if
- if-else
- switch-case
5Pernyataan if
- Penggambaran dalam flow-chart
Statements sebelum if
Eks.boolean
true
Statement Statement ...
false
Statements setelah if
6Pernyataan if
- Sintaks
- if (ekspresi boolean) statement
- atau
- if (ekspresi boolean)
-
- statement1
- statement2
-
-
- Jika ekspresi boolean bernilai TRUE, maka
statement atau blok statement akan dilaksanakan.
Blok statement
7Pernyataan if-else
- Penggambaran dalam flow-chart
Statements sebelum if
Eks.boolean
true
false
Statement_01 Statement_02 ...
Statement_11 Statement_12 ...
Statements setelah if
8Pernyataan if-else
- Sintaks
- if (ekspresi boolean) statement_01
- else statement_11
- atau
- if (ekspresi boolean)
- statement_01
-
-
- else
- statement_11
- ...
-
- Jika ekspresi boolean bernilai TRUE, maka
statement_01 atau blok statement_01 yang
dilaksanakan, jika bernilai FALSE maka
statement_01 atau blok statement_11 yang
dilaksanakan.
Blok statement_01
Blok statement_11
9Pernyataan if
include ltstdio.hgt include ltiostream.hgt int
main() int jmlAnak double gajiKtr,
tunjangan, persenTunjangan 0.2
printf("PERHITUNGAN TUNJANGAN GAJI\n\n")
printf("Gaji Kotor? ") scanf("lf", gajiKtr)
printf("Jumlah Anak? ") scanf("lf",
jmlAnak) if (jmlAnakgt2) persenTunjangan
0.3 tunjangan persenTunjangangajiKtr
printf("Besar Tunjangan Rp. 10.2lf\n\n",
tunjangan) system("PAUSE") return(0)
10Pernyataan if
include ltstdio.hgt include ltiostream.hgt int
main() int jmlAnak float gajiKtr,
tunjangan, potongan, persenTunjangan 0.2,
persenPotongan 0.05 printf(PERHITUNGAN
TUNJANGAN POTONGAN GAJI\N\N) printf("Gaji
Kotor? ") scanf("f", gajiKtr)
printf("Jumlah Anak? ") scanf("f", jmlAnak)
if (jmlAnakgt2) persenTunjangan 0.3
persenPotongan 0.07
tunjangan persenTunjangangajiKtr potongan
persenPotongangajiKtr printf("Besar Tunjangan
Rp. 10.2f\n", tunjangan) printf("Besar
Potongan Rp. 10.2f\n\n", potongan)
system("PAUSE") return(0)
11Pernyataan 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 bb 4ac
- 3. Bila d gt 0 maka hitung x1 dan x2
- Bila d lt 0 maka akar imajiner dan stop
- 4. Stop
- Menghitung x1, dengan rumus
- Menghitung x2, dengan rumus
12Pernyataan if-else
include ltstdio.hgt include ltmath.hgt include
ltiostream.hgt int main() float
a,b,c,d,x1,x2 char ch
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 bb - 4 a
c if (d gt 0) x1 (-b sqrt(d)) / (2
a) x2 (-b - sqrt(d)) / (2 a)
printf("\nx1f\nx2f\n\n",x1,x2)
else printf("Akar Persamaan
Imajiner\n\n") system("PAUSE")
return 0
13Pernyataan if-else Bersarang
- Konstruksi if-else dapat digunakan secara
bertingkat atau bersarang (nested) - Contoh
- if (ekspresi boolean1) statement1
- else if (ekspresi boolean2) statement2
- else if (ekspresi boolean3) statement3
- .....
- .....
- else if (ekspresi booleanN)
statementN
14Pernyataan if-else
- Contoh pernyataan if-else bersarang
/ Program Kalkulator / includeltstdio.hgt int
main() float bil1, bil2 char op
while(1) printf(\n Ketik
bil1 operator bil2, ( Contoh 3 4) \n)
scanf(f c f, bil1, op, bil2)
if(op ) printf( f, bil1 bil2)
else if(op -) printf( f, bil1 -
bil2) else if(op )
printf( f, bil1 bil2)
else if(op /) printf( f, bil1
/ bil2)
else printf(error operator hanya ,-, dan /
\n) break
return 0
15Pernyataan if-else Bersarang
- Contoh pemakaian if-else bersarang untuk
perhitungan akar persamaan kuadrat
include ltstdio.hgt include ltmath.hgt include
ltiostream.hgt 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)
16Pernyataan if-else Bersarang
if (a ! 0) d bb - 4 a c
if (d gt 0) x1 (-b sqrt(d)) / (2 a) x2
(-b - sqrt(d)) / (2 a)
printf("\nx1f\nx2f\n\n",x1,x2)
else if (d0) x1 x2
-b/(2a)
printf("\nAkar persamaan kembar x1 x2
f\n\n", x1)
else printf("\nAkar persamaan
kompleks \n")
printf("x1 f fj\nx2 f - fj\n\n",
-b/2/a,sqrt(-d)/2/a, -b/2/a,sqrt(-d)/2/a)
else if
(b !0 ) printf("Bukan pers. kuadrat dan x
f\n\n", -c/b) else printf("Data yg
dientry tidak layak dioperasikan (data
salah)\n\n") system("PAUSE") return 0
17Pernyataan if-else
- Penulisan if-else harus jelas maksudnya....
- Contoh penulisan if-else yang kurang jelas
meskipun tidak salah.
include ltstdio.hgt include ltiostream.hgt int
main() int suhu printf("Input suhu ?
(F) ") scanf("d",suhu) if (suhult80)
if (suhugt30) printf("Panas\n\n")
else printf("Sejuk\n\n")
system("PAUSE") return(0)
18Pernyataan 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 (ekspresi)
- case constant1 statements1 break
- .
- .
- case constant2 statements2 break
- default statements
-
19Pernyataan 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 dan
constant harus integer constant termasuk char.
20Pernyataan switch-case
- Struktur logika switch-case dapat digambarkan
sbb.
true
case a
case a action(s)
break
false
true
case b
case b action(s)
break
false
true
case z
case z action(s)
break
false
default action(s)
21Pernyataan switch-case
include ltstdio.hgt include ltiostream.hgt 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)
22Latihan
- Buat program untuk menginput nilai IPK mahasiswa
dan berikan penilaian - 3.5 - 4.0 Sangat Memuaskan
- 3.0 - 3.4 Memuaskan
- 2.5 2.9 Baik Sekali
- 2.0 2.4 Baik
- Dibawah 2.0 Kurang
- Gunakan perintah if / if-else !
23Latihan
- Buatlah program komputer untuk menentukan
nilai-huruf dari sebuah matakuliah yang nilainya
terdiri dari nilai tugas, nilai kuis dan nilai
UAS. Bila nilai-kuis gt UAS, nilai akhir dihitung
dg rumus - Nilai akhir 40 (nilai-kuis) 40 (UAS) 20
(tugas) - Bila nilai UASgt nilai-kuis, nilai akhir
dihitung dg rumus - Nilai akhir 30 (nilai-kuis) 50 (UAS) 20
(tugas) - Sedangkan konversi nilai-akhir menjadi nilai
huruf menggunakan tabel berikut
Nilai Akhir Bobot Nilai Huruf
85 - 100 4 A Sangat Baik
75 - 84 3 B Baik
65 - 74 2 C Cukup
50 - 64 1 D Kurang
0 - 49 0 E Gagal
24Latihan
- Perhatikan potongan program dibawah ini
if(n gt 0) if(a gt b) z a
else z b
- Jelaskan keyword else berpasangan dengan if yang
mana ? - Perbaiki cara penulisan potongan program diatas,
agar menjadi lebih jelas dibaca algoritmanya !