Matakuliah Tahun Versi : T0616 / Algoritma dan Pemrograman : 2007 : 1/0 Pertemuan 13-14 Operasi Seleksi 1 Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : • Mendemonstrasikan penulisan program dengan struktur kendali pemilihan (C3) 2 Outline Materi Operasi Seleksi • Konstruksi if dan if-else • Konstruksi nested if-else dan switch-case • Operator kondisional 3 Operasi Seleksi Seringkali instruksi - instruksi dilaksanakan bila suatu persyaratan dipenuhi, dalam struktur penyeleksian, suatu instruksi atau sekelompok instruksi dapat dilewati, sementara instruksi lain dijalankan. Operasi seleksi : if if-else switch-case 4 Operasi Seleksi : if • Konstruksi if • Sintaks : if (ekspresi boolean) statement; atau If (ekspresi boolean){ statement1; statement2; Blok statement …… } Jika ekspresi boolean menghasilkan nilai TRUE, maka statement atau blok statement akan dilaksanakan. 5 Operasi Repetisi : if • Konstruksi if true false condition statements 6 Operasi Seleksi : if-else • • Konstruksi if-else Sintaks : if (ekspresi boolean) statement1; else statement2; atau If (ekspresi boolean){ statement1; statement2; Blok statement1 …… } else { statement3; statement4; Blok statement2 … } Jika ekspresi boolean menghasilkan nilai TRUE, maka statement1 atau blok statement1 yang akan dilaksanakan, jika tidak (FALSE) maka statement2 atau blok statement2 yang akan dilaksanakan. 7 Operasi Repetisi : if-else • Konstruksi if-else true false condition statements 2 statements 1 8 Operasi Seleksi : if • Contoh Program untuk mendapatkan akar-akar dari persamaan kwardrat. • Algoritma : 1. Dapatkan koefisien a, b, dan c dari keyboard 2. Hitung diskriminan d = b2 – 4*a*c 3. Bila d >= 0 maka hitung x1 dan x2 Bila d < 0 maka stop 4. Stop Dapatkan x1, dengan rumus : Dapatkan x2, dengan rumus : -b + d 2.a -b - d 2.a 9 Operasi Seleksi : if • Contoh : /*-----------------------------Program Pers_Kwadrat ------------------------------*/ #include <stdio.h> #include <math.h> float a,b,c,d,x1,x2; void main() { 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(“x1=%f\n x2=%f\n”,x1,x2); } else printf(”Akar Persamaan Imajiner”); } 10 Operasi Seleksi : if • Konstruksi if-else dapat digunakan secara bertingkat (nested) • Contoh: if (ekspresi boolean1) statement1; else if (ekspresi boolean2) statement2; else if (ekspresi boolean3) statement3; ..... else if (ekspresi booleanN) statementN; 11 Operasi Seleksi : if • Contoh : /*------------------------Program Kalkulator -------------------------*/ #include<stdio.h> void main() { float bil1, bil2; char op; while(1) { printf(“\n Ketik bil, op, bil\n”); scanf(“%f %c %f”, &bil1, &op, &bil2); if(op==‘+’) printf(“ = %f”, bil1 + bil2); elseif(op==‘-’) printf(“ = %f”, bil1 - bil2); elseif(op==‘*’) printf(“ = %f”, bil1 * bil2); else(op==‘/’) printf(“ = %f”, bil1 / bil2); } } 12 Operasi Seleksi : switch-case • Konstruksi switch-case • Konstruksi ini digunakan sebagai pengganti konstruksi ifelse, bila konstruksi if-else bertingkat terlalu jauh, sehingga menjadi sulit dibaca. • Sintaks konstruksi switch-case switch (ekspresi) { case constant1 : statements1; break; . . case constant2 : statements2; break; default : statements; } 13 Operasi Seleksi : switch-case • Pernyataan switch mengevaluasi eks dan kemudian melihat isi case constant. Jika nilai eks ada didalam constant list maka pernyataan dieksekusi. Jika tidak, pernyataan default yang dieksekusi. • Catatan: nilai ekspresi harus integer dan constant harus integer constant termasuk char. 14 Operasi Seleksi : switch-case • Konstruksi switch-case case a true case a action(s) break case b action(s) break case z action(s) break false case b true false . . . case z true false default action(s) 15 Operasi Seleksi : switch-case • Contoh : void main() { float bil1, bil2; char op; while(1) { printf(“\n Ketik bil, op, bil\n”); 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(“OP TAK DIKENAL”); } } } 16 Operasi Seleksi : switch-case • Contoh Program Menghitung Nilai Ujian • Tabel Nilai 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 • Mata kuliah Algoritma dan Pemrograman dilengkapi dengan praktikum di Lab. Software, maka nilai akhir dihitung dari : 17 Operasi Seleksi : switch-case Nilai Teori = 50%(Ujian Semester) + 30%(Ujian Mid Semester) + 10%(Tugas Mandiri Teori) + 10%(Absen Teori). - Nilai Praktikum = 40%(Ujian Praktikum) + 30%(Kuis Praktikum) + 15%(TM Praktikum) + 15%(Abs Praktikum). - Nilai Akhir = (NilaiTeori + NilaiPraktikum)/2 18 Operasi Seleksi : switch-case • Contoh : /*------------------------Program Nilai_Ujian -------------------------*/ #include <stdio.h> #include <stdlib.h> #include <math.h> int AbsensiT, AbsensiP; int TugasT, TugasP; int Mid, Kuis, Nilai_akhir; int FinalT, FinalP; float NilaiT, NilaiP; char Jawab; 19 Operasi Seleksi : switch-case void main(){ clrscr(); printf(”Teruskan [Y/T] ? ”); scanf(“%c”,&Jawab); while (toupper(Jawab) == ’Y’) { printf(”Kehadiran Teori (0 -100) : ”); scanf(“%d”,&AbsensiT); printf(”Kehadiran Praktikum (0 -100) : ”); scanf(“%d”,&AbsensiP); printf(”Tugas Mandiri Teori (0 -100) : ”); scanf(“%d”,&TugasT); printf(”Tugas Mandiri Praktikum (0 -100) : ”); scanf(“%d”,&TugasP); printf(”Mid Semester Teori (0 -100) : ”); scanf(”%d”,&Mid); printf(”Mid Semester Praktikum (0 -100) : ”); scanf(”%d”,&Kuis); printf(“Nilai Semester Teori (0 -100) : “); scanf(“%d”,&FinalT); printf(“Nilai Semester Praktikum (0 -100) : “); scanf(“%d”,&FinalP); NilaiT = (0.1*AbsensiT) + (0.1*TugasT)+(0.3*Mid) + (0.5*FinalT); NilaiP = 0.15*AbsensiP + 0.15*TugasT + 0.3*Kuis + 0.5*FinalP; Nilai_akhir = ceil((NilaiT + NilaiP)/2); if(Nilai_akhir >=85) printf(“Nilai_akhir = A”); else if(Nilai_akhir >=75) printf(“Nilai_akhir = B”); else if(Nilai_akhir >=65) printf(“Nilai_akhir = C”); else if(Nilai_akhir >=50) printf(“Nilai_akhir = D”); else printf(“Nilai_akhir = E”); printf(“\n”); printf(“Teruskan [Y/T] ? “);scanf(“%c”,&Jawab); } 20 } Break vs Continue • break: mengakhiri loop atau switch • continue: skip sisa pernyataan dalam loop, sedangkan eksekusi loop berjalan terus 21 Break vs Continue • Contoh : void main() { int x; for(x=1;x<=10;x++) { if (x==5) continue; printf("%d ",x); } } 1 2 3 4 6 7 8 9 10 22 Break vs Continue do { scanf(“%f”, &x); if(x<0) { printf”\nEror. Negatif”); break; } /*Proses nonnegatif */ … } while(exp); do { scanf(“%f”, &x); if(x<0) { printf”\nEror. Negatif”); continue; } /*Proses nonnegatif */ … } while(exp); 23 Break vs Continue main() { int n; for(; ;) { printf(“\n Enter integer : “); scanf(“%d “, &n); if(n%2==0) continue; else if(n%3==0) break; printf(“\n\t Bottom of loop.”); } print(“\n\t Outside of loop.”); } Apa output program jika diinput nilai 7, 4 dan 9 berturutturut? 24 Latihan • 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 ! 25 Latihan • 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 switch-case ! 26 Latihan • Buatlah program untuk mengecek penekanan tombol dari keyboard dan tampilkan penjelasannya : • • • • ‘+’ Penjumlahan ‘-’ Pengurangan ‘*’ Perkalian ‘/’ Pembagian • Setiap kali tombol di tekan, maka akan muncul tulisan penjelasan di sampingnya. • Jika tombol selain keempat diatas ditekan, tampilkan “Tombol lainnya” 27 Latihan • Buat sebuah program untuk mengecek jenis bilangan yang diinput, jenis yang tersedia adalah : • • • • Ganjil Genap Nol Minus 28 Latihan • Buatlah sebuah fungsi untuk menghitung dua buah angka berdasar simbol yang diinput (+,-,*,/) float Hitung(int x1, int x2, char opr) • dan tampilkan hasilnya ke layar. (Gunakan if/if-else) 29 Latihan • Buatlah sebuah fungsi untuk menghitung dua buah angka berdasar simbol yang diinput (+,-,*,/) float Hitung(int x1, int x2, char opr) • dan tampilkan hasilnya ke layar. (Gunakan switch-case) 30
© Copyright 2024 Paperzz