TEL 2112 Dasar Komputer & Pemograman Pengontrolan Program – Penyeleksian Dosen: Abdillah, S.Si, MIT Email: abdill01@gmail.com Website: http://abdill01.wordpress.com
Tujuan Mahasiswa mampu mentranslasikan dengan benar algoritma yang mengandung penyeleksian ke program bahasa C
Penyeleksian Kondisi #include<stdio.h> main() { int JumlahAnak; float GajiKotor, Tunjangan, PersenTunjangan = 0.2; printf(“Gaji Kotor?”);scanf(“%f”,&GajiKotor); printf(“Jumlah Anak?”);scanf(“%i”,&JumlahAnak); if(JumlahAnak >2)PersenTunjangan =0.3; Tunjangan = PersenTunjangan*GajiKotor; printf(“n\Besarnya Tunjangan = Rp %f\n”, Tunjangan); }
Jika Program diatas dieksekusi akan dihasilkan: Gaji Kotor?100000 Jumlah Anak? 5 Besar Tunjangan = Rp30000,00 Statement if juga bisa digunakan untuk memproses beberapa statemen sekaligus dalam suatu blok jika kondisi benar, disebut juga “bentuk if tunggal blok statemen” Menggunakan tanda {} Contoh: #include<stdio.h> main() { int JumlahAnak; float GajiKotor, Tunjangan, Potongan, PersenTunjangan=0.2,PersenPotongan=0.05; printf(“Gaji Kotor?”);scanf(“%f”, GajiKotor); printf(“Jumlah Anak?”);scanf(“%d”,&JumlahAnak); if(JumlahAnak >2) { PersenTunjangan =0.3; PersenPotongan=0.07; } Tunjangan =PersenTunjangan*GajiKotor; Potongan = PersenPotongan*GajiKotor; printf(“n\Besarnya Tunjangan=Rp %10.2f\n”,Tunjangan); printf(“n\Besarnya Potongan=Rp %10.2f\n”,Potongan);
Jika program diatas dieksekusi akan didapatkan hasil: Gaji Kotor?100000 Jumlah Anak? 5 Besarnya Tunjangan =Rp 30000.00 Besarnya Potongan = Rp 7000.00
Jika tidak digunakan tanda {} maka program akan salah, kesalahannya bukan merupakan kesalahan sintaks tetapi merupakan kesalahan logika program
Bisa juga berbentuk: if (kondisi) statemen; else Jka kondisi terpenuhi maka statemen berkutnya akan dieksekusi, tetapi jika kondisi tidak terpenuhi statemen setelah else akan dieksekusi
Contoh: #include<stdio.h> main() { float A,B; printf(“Masukkan nilai a?”);scanf(“%f”,&A); prinft(“Masukkan nilai b?”);scanf(“%f”,&B); printf(“\n); if(B==0) printf(“%f dibagi dengan 0 adalah tak berhingga\n”,A); else printf(“%f dibagi dengan %f adalah %f\n”,A,B,A/B); }
Jika program diatas dieksekusi maka didapat output: Masukkan nilai a? 5 Masukkan nilai b? 0 5.000000 dibagi 0 adalah tidak berhingga
Contoh: #include<stdio.h> #include<math.h> main() { float A,B,C,D,X1,X2; /*Masukkan data keodfesien persamaan kuadrat*/ printf(“Masukkan nilai a?”);scanf(“%f”,&A); printf(“Masukkan nilai b?”);scanf(“%f”,&B); printf(“Masukkan nilai c?”);scanf(“%f”,&C); prinf(“/n”); /*menghitung nilai determinan*/ D=B*B-4*A*C; /*menyeleksi determinan*/ if(D==0){ X1=-B/(2*A); printf(“Dua akar riel kembar :\n”); printf(“X1=X2=%f\n,X1); } else if(D>0){ X1=(-B+sqrt(D))/(2*A); X2=(-B-sqrt(D))/(2*A); printf(“Dua akar riel berlainan:\n”); printf(“X1=%f\n”,X1); printf(“X2=%f\n”,X2); } X1=-B/(2*A); X2=sqrt(-D))/(2*A); printf(“Dua akar imaginer berlainan:\n”); printf(“X1=%f+%f i\n”,X1,X2); printf(“X1=%f-%f i\n”,X1,X2);
Jika program dijalankan Masukkan nilai a? 15 Masukkan nilai b? 3 Masukkan nilai c? 2 Dua akar imaginer berlainan: X1 = -0.100000 + 0.351188i X1 = -0.100000 - 0.351188i
Nested if Bentuk if bersarang (nested if) merupakan statemet if yang berada dalam statemen if yang lain Sintaknya: if(kondisi1) if(kondisi2) if(kondisiN) statement; else statement statemen
Penjelasan Jika kondisi1 benar maka kondisi2 selanjutnya akan diproses, jika kondisi1 salah maka statemen else yang pertama akan diproses Jika kondisiN benar kondisi(N+1) selanjutnya akan diproses, jika kondisi N salah maka statemen else N akan diproses
Contoh Contoh: #include<stdio.h> #include<math.h> main() { float A,B,C,D,X1,X2; /*Masukkan data keodfesien persamaan kuadrat*/ printf(“Masukkan nilai a?”);scanf(“%f”,&A); printf(“Masukkan nilai b?”);scanf(“%f”,&B); printf(“Masukkan nilai c?”);scanf(“%f”,&C); prinf(“/n”); /*menghitung nilai determinan*/ D=B*B-4*A*C; /*menyeleksi determinan*/ if(D>=0) if(D==0){ X1=-B/(2*A); printf(“Dua akar riel kembar :\n”); printf(“X1=X2=%f\n,X1); } else if(D>0){ X1=(-B+sqrt(D))/(2*A); X2=(-B-sqrt(D))/(2*A); printf(“Dua akar riel berlainan:\n”); printf(“X1=%f\n”,X1); printf(“X2=%f\n”,X2); } else { X1=-B/(2*A); X2=sqrt(-D))/(2*A); printf(“Dua akar imaginer berlainan:\n”); printf(“X1=%f+%f i\n”,X1,X2); printf(“X1=%f-%f i\n”,X1,X2);
Jika dijalankan Masukkan nilai a? 15 Masukkan nilai b? 3 Masukkan nilai c? 2 Dua akar imaginer berlainan: X1 = -0.100000 + 0.351188i X1 = -0.100000 - 0.351188i
Penjelasan Kasus jika terdapat else yang jumlahnya tidak sesuai dengan if Misalnya: If(D>=0) if(D==0) printf(“Dua akar riel kembar\n”); else printf(“akar imaginer\n); Miik if yang mana else pada contoh diatas? Milik if yang terdekat Beberapa kondisi dapat diseleksi sekaligus oleh statement if disebut juga if kondisi jamak, misalnya: if(A>5!!B&&C==‘Y’) printf(“Kondisi benar”\n); else printf(“Kondisi tidak benar”\n);
Penjelasan Statement if dapat diganti dengan operator ? contoh: (x%2==0)?printf(“Nilai Genap\n”); prinft(“Nilai ganjil\n”); statemen diatas artinya sama dengan: if (x%2==0) printf(“Nilai Genap\n”); else prinft(“Nilai ganjil\n”);
Statement Case Menyeleksi kondisi yang diberikan dan membandingkan hasilnya dengan konstanta yang berada pada case, contoh: #include<stdio.h> main() int Nilai; printf(“Masukkan nilai 1-3?); scanf(“%d”,&Nilai); switch(Nilai) { case 1: printf(“Satu\n”); break; case 2: printf(“Dua\n”); case 3: printf(“Tiga\n”); default: printf(“Bukan nilai 1,2,atau 3\n”); }
Penjelasan Jika program dieksekusi: Masukkan nilai 1-3? 2 Dua
Contoh: #include<stdio.h> main() { int Pilih; float Sisi, Jari, Tinggi; printf(” <<<MENU>>> \n”); printf(”\n”); printf(”1. Menghitung isi kubus \n“); printf(”2. Menghitung luas lingkaran\n“); printf(”3. Menghitung isi selinder\n“); printf(”\n“); printf(”Pilih nomor (1-3) ?“); scanf(”%d“,&Pilih); switch(Pilih) { case 1: printf(”Panjang sisi kubus ?“); scanf(”%f“,&Sisi); printf(”Isi kubus = %f\n“,Sisi*Sisi*Sisi); break; case 2: printf(”Jari-jari lingkaran ?“); scanf(”%f“,&Jari); printf(”Luas lingkaran = %f\n“,3.14*Jari*jari); }