240 likes | 384 Views
Pencabangan Bersyarat. Pertemuan 0 5. Dasar Pemrograman Komputer [TKL-4002] 2010. Learning Outcomes. Pada akhir pertemuan ini , diharapkan mahasiswa me-miliki kemampuan untuk: Men gguna kan struktur kendali pencabangan ber-syarat dalam bahasa pemrograman C. Outline Materi.
E N D
Pencabangan Bersyarat Pertemuan 05 Dasar Pemrograman Komputer [TKL-4002] 2010
Learning Outcomes Padaakhirpertemuanini, diharapkanmahasiswame-miliki kemampuan untuk: • Menggunakanstrukturkendalipencabangan ber-syarat dalam bahasa pemrograman C.
Outline Materi Pencabangan Bersyarat • Pernyataan if dan if-else • Pernyataannested if-else • Pernyataanswitch-case • Operator kondisional
Pencabangan Bersyarat • Dalamsebuahalgoritma, seringkalibeberapainstruksiharusdilaksanakanbilasuatupersyaratandipenuhi (bernilai benar)dansebaliknya. • Dalamstrukturpencabangan bersyarat, suatuinstruksiatausekelompokinstruksidapatdilewati, sementarainstruksi lain dijalankan. • Pernyataan pencabangan bersyarat terdiri dari: • if • if-else • switch-case
Pernyataan if Statements sebelum if Eks.boolean Eks.boolean true true Statement; Statement; ... Statement; Statement; ... false false Statements setelah if Penggambaran dalam flow-chart
Pernyataan if Blok statement • Sintaks : if (ekspresiboolean) statement; atau if (ekspresiboolean) { statement1; statement2; …… } Jikaekspresibooleanbernilai TRUE, maka statement ataublok statement akandilaksanakan.
Pernyataan if-else Statements sebelum if Eks.boolean Eks.boolean false true false true Statement_11; Statement_12; ... Statement_01; Statement_02; ... Statement_11; Statement_12; ... Statement_01; Statement_02; ... Statements setelah if Penggambaran dalam flow-chart
Pernyataan if-else Blok statement_01 Blok statement_11 Sintaks : if (ekspresiboolean) statement_01; else statement_11; atau if (ekspresiboolean) {statement_01; …… } else {statement_11; …... } JikaekspresibooleanbernilaiTRUE, makastatement_01 ataublokstatement_01yang dilaksanakan, jikabernilai FALSE makastatement_01ataublokstatement_11yang dilaksanakan.
Pernyataan if #include <stdio.h> #include <iostream.h> 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 (jmlAnak>2) persenTunjangan = 0.3; tunjangan = persenTunjangan*gajiKtr; printf("Besar Tunjangan = Rp. %10.2lf\n\n", tunjangan); system("PAUSE"); return(0); }
Pernyataan if #include <stdio.h> #include <iostream.h> 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 (jmlAnak>2) { persenTunjangan = 0.3; persenPotongan = 0.07; } tunjangan = persenTunjangan*gajiKtr; potongan = persenPotongan*gajiKtr; printf("Besar Tunjangan = Rp. %10.2f\n", tunjangan); printf("Besar Potongan = Rp. %10.2f\n\n", potongan); system("PAUSE"); return(0); }
-b +d 2*a -b -d 2*a Pernyataan if-else • Contoh Program untukmendapatkanakar-akardaripersamaankwardrat. • Algoritma : 1. Dapatkankoefisien a, b, dan c dari keyboard 2. Hitungdiskriminan d = b*b – 4*a*c 3. Bila d >= 0 makahitung x1 dan x2 Bila d < 0 makaakarimajinerdan stop 4. Stop Menghitung x1, denganrumus : Menghitung x2, denganrumus :
Pernyataan if-else #include <stdio.h> #include <math.h> #include <iostream.h> 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 = 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; } Contoh :
Pernyataan if-else Bersarang • Konstruksi if-else dapatdigunakansecarabertingkatatau bersarang (nested) • Contoh: if (ekspresi boolean1) statement1; else if (ekspresi boolean2) statement2; else if (ekspresi boolean3) statement3; ..... ..... else if (ekspresibooleanN) statementN;
Pernyataan if-else /* Program Kalkulator */ #include<stdio.h> 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; } Contohpernyataan if-else bersarang:
Pernyataan if-else Bersarang #include <stdio.h> #include <math.h> #include <iostream.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); Contohpemakaian if-else bersarang untuk perhitungan akar persamaan kuadrat:
Pernyataan if-else Bersarang if (a != 0) { 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 {if (d==0) { x1 = x2 = -b/(2*a); 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; }
Pernyataan if-else • Penulisan if-elseharusjelasmaksudnya.... • Contoh penulisan if-else yang kurang jelas meskipun tidak salah. #include <stdio.h> #include <iostream.h> int main(){ int suhu; printf("Input suhu ? (F): "); scanf("%d",&suhu); if (suhu<80) if (suhu>30) printf("Panas\n\n"); else printf("Sejuk\n\n"); system("PAUSE"); return(0); }
Pernyataan switch-case • Pernyataanswitch-casedapatdipergunakansebagaipenggantipernyataanif-else, jika pernyataan if-else bertingkatterlalubanyak, sehinggamenjadisulitdibaca. • Sintakspernyataan switch-case switch (ekspresi integer) { case constant1 : statements1; break; case constant2 : statements2; break; . . [ default : statements; ] }
Pernyataan switch-case Pernyataan switch mengevaluasiekspresidankemudianmelihatisi case constant. Jikanilaiekspresiadadidalam constant list makapernyataandieksekusi. Jikatidakada yang cocok, pernyataan default yang dieksekusi. Catatan: nilaiekspresiharusintegerdanconstantharusinteger constant termasukchar.
Pernyataan switch-case true true case a case a action(s) break case a case a action(s) break false false true true case b case b action(s) break case b case b action(s) break false false true true case z case z action(s) break case z case z action(s) break false false default action(s) default action(s) Struktur logika switch-case dapat digambarkan sbb.:
Pernyataan switch-case #include <stdio.h> #include <iostream.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); } Contoh :
Latihan • Buat program untukmenginputnilai IPK mahasiswadanberikanpenilaian : • 3.5 - 4.0 SangatMemuaskan • 3.0 - 3.4 Memuaskan • 2.5 – 2.9 BaikSekali • 2.0 – 2.4 Baik • Dibawah 2.0 Kurang • Gunakanperintah if / if-else !
Latihan • Buatlah program komputer untuk menentukan nilai-huruf dari sebuah matakuliah yang nilainya terdiri dari: nilai tugas, nilai kuis dan nilai UAS. Bila nilai-kuis > UAS, nilai akhir dihitung dg rumus: • Nilai akhir = 40% (nilai-kuis) + 40% (UAS) + 20% (tugas) Bila nilai UAS>= 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:
Latihan • if(n > 0) • if(a > b) • z = a; • else • z = b; • Jelaskan keyword else berpasangandengan if yang mana ? • Perbaikicarapenulisanpotongan program diatas, agar menjadilebihjelasdibacaalgoritmanya ! Perhatikanpotongan program dibawahini: