STRUKTUR KENDALI PERCABANGAN Percabangan adalah pemilihan statemen pada kondisi dua pilihan atau banyak pilihan, yang akan dieksekusi selanjutnya di mana pemilihan tersebut didasarkan atas kondisi tertentu. Dalam bahasa C terdapat dua buah jenis percabangan, yaitu struktur if dan struktur switch. A. STATEMENT IF Pernyataan if mempunyai bentuk umum : If(expression) statement; Bentuk ini dinyatakan : Jika kondisi yang diseleksi adalah benar (bernilai logika = 1), maka pernyataan yang mengikutinya akan diproses Sebaliknya, jika kondisi yang diseleksi adalah tidak benar (bernilai logika = 0), maka pernyataan yang mengikutinya tidak akan diproses. Mengenai kondisi yang harus ditulis diantara tanda kurung, sedangkan pernyataan yang dapat berupa sebuah pernyataan tunggal, pernyataan majemuk, atau pernyataan kosong.
benar Kondisi salah Pernyatan
CONTOH PROGRAM #include <stdio.h> main() { float total_pembelian, total_pembayaran, discount = 0; printf("Total pembelian : Rp "); scanf("%f", &total_pembelian); if (total_pembelian>=200000) discount = 0.10 * total_pembelian; total_pembayaran = total_pembelian - discount; printf("Discount : Rp %.0f\n", discount); printf("Anda hanya membayar : Rp %.0f\n", total_pembayaran); }
B. STATEMENT IF-ELSE Statement if-else digunakan untuk melakukan logical test dan kemudian menentukan tindakan atau aksi mana yang harus dilaksanakan dari dua kemungkinan pilihan, berdasarkan dari hasil test apakah benar (true) atau salah (false). Bentuk umum dari statemen if-else ini adalah sebagai berikut : If(expression) statement-1 else statement-2 Jika kondisi (expression) benar (true) atau bernilai bukan nol, maka statement-1 akan dilaksanakan. Jika kondisi (expression) salah (false) atau bernilai nol, maka statement-2 akan dilaksanakan. Jika anda menginginkan lebihdari satu statement untuk statement-1 dan atau statement-2 menggunakan tanda kurung kurawal untuk menciptakan satu blok statement.
benar Kondisi
salah Pernyataan-1
CONTOH PROGRAM #include <stdio.h> main() { int nilai; printf("Masukkan Nilai Anda : ", nilai); scanf ("%d", &nilai); if (nilai>70){ printf("Selamat Anda Lulus!!!\n"); } else { printf("Kasihan Anda Tidak Lulus\n"); } }
Pernyataan-2
C. STATEMENT SWITCH Statement switch merupakan pernyataan yang dirancang khusus untuk menangani pengambilan keputusan yang melibatkan sejumlah alternatif, misalnya untuk menggantikan pernyataan if bertingkat. Bila dalam statement if-else hanya ada dua pilihan benar (true) atau salah (false), statement switch memungkinkan pilihan lebih dari dua berdasarkan suatu expression. Bentuk umum dari statement switch adalah sebagai berikut : Switch (expression) { Case konstanta-1: statement-1: ....... break; Case konstanta-2: statement-2: ....... break; Case konstanta-n: statement-n: ........ break; default; ........ ........ break; } Dengan ekspresi dapat berupa ekspresi bertipe integer atau bertipe karakter. Demikian juga konstanta-1, konstanta-2, ...., konstanta–n dapat berupa konstanta integer atau karakter. Setiap statement (statement1, statement2,....,statement-n) dapat berupa pernyataan tunggal ataupun pernyataan jamak. Dalam hal ini urutan penulisan pernyataan case tidak berpengaruh. Proses penyeleksian berlangsung sebagai berikut :
Pengujian pada switch akan dimulai dari konstanta1. Kalau nilai konstanta-1 cocok dengan ekspresi maka statement-1 dijalankan. Kata kunci break harus disertai di bagian akhir setiap pernyataan case, yang akan mengarahkan eksekusi ke akhir switch. Kalau ternyata statement-1 tidak sama dengan nilai ekspresi pengujian dilanjutkan pada konstanta-2, dan berikutnya serupa dengan pengujian pada konstanta-1. Jika sampai pada pengujian case yang terakhir ternyata tidak ada kecocokan, maka pernyataan yang mengikuti kata kunci default yang akan diekskusi. Kata kunci default ini bersifat opsional. Tanda kurung kurawal tutup ( } ) menandakan akhir dari proses penyeleksian kondisi case
Input
Case 1
ya
Statement 1
tidak caccc Case 2
ya
Statement 2
tidak ya Case 3
Statement 3
tidak
CONTOH PROGRAM #include <stdio.h> main() { int menu; printf("Masukkan Menu [1-5]? "); scanf("%d", &menu); switch(menu){ case 1: printf("Selamat!\n"); printf("Anda memilih menu 1!\n"); break; case 2: printf("Selamat!\n"); printf("Anda memilih menu 2!\n"); break;
case 3: printf("Selamat!\n"); printf("Anda memilih menu 3!\n"); break;
case 4: printf("Selamat!\n"); printf("Anda memilih menu 4!\n"); break; case 5: printf("Selamat!\n"); printf("Anda memilih menu 5!\n"); break; default: printf("Maaf!\n"); printf("Anda memilih menu yang salah!\n"); break; } printf("Coba Lagi (Y/N) : "); scanf("%s", &coba); } getch(); }
D. SELEKSI MULTI KONDISI Percabangan jenis ini merupakan perluasan dari struktur yang memiliki dua kondisi diatas yaitu dengan menyisipkan satu atau lebih kondisi ke dalamnya. Bentuk umum: if (kondisi1) statemen_jika_kondisi1_terpenuhi; else if (kondisi2) statemen_jika_kondisi1_tidak_terpenuhi; else if (kondisi3) statemen_jika_kondisi2_tidak_terpenuhi; …. else statemen_jika_semua_kondisi_tidak_terpenuhi;
CONTOH PROGRAM #include <stdio.h> main(){
int nilai; printf("Masukkan Nilai : "); scanf("%d", &nilai); if( nilai > 90 ) { printf("Selamat Anda mendapat Grade A\n"); } else if (nilai > 80) { printf("Selamat Anda mendapat Grade B\n"); } else if (nilai > 70) { printf("Selamat Anda mendapat Grade C\n"); } else if (nilai > 60) { printf("Selamat Anda mendapat Grade D\n"); } else { printf ("Grade E\n"); } } E. SELEKSI BERTINGKAT Didalam suatu pernyataan if (atau if-else) bisa saja terdapat pernyataan if (atau iffalse) yang lain. Bentuk seperti ini dinamakan sebagai nested if. Secara umum, bentuk dari pernyataan ini adalah sebagai berikut : If ( expression-1) If (expression-2) . . If (expression-n) Statement; Else Statement; . . Else Statement; Else Statement;
Kondisi yang akan diseleksi pertama kali adalah kondisi yang terluar (expression-1). Jika expression-1 bernilai salah, maka statement else yang terluar (pasangan if yang bersangkutan) yang akan diproses. Jika else (pasanganya tersebut) tidak ditulis, maka penyeleksian kondisi akan dihentikan.
Jika expression-1 bernilai benar, maka kondisi berikutnya yang lebih dalam (expression-2) akan diseleksi. Jika expression-2 bernilai salah, maka statement else pasangan dari if yang bersangkutan yang akan diproses. Jika else (untuk expression2) tidak ditulis, maka penyeleksian kondisi akan dihentikan. Dengan cara yang sama, penyeleksian experession (kondisi) akan dilakukan sampai expression-n, jika kondisi – kondisi sebelumnya berniali benar.
KONDISI 1 ya
tidak ya
tidak
CONTOH PROGRAM #include <stdio.h> main() { int nilai; char jk; printf("Jenis Kelamin (L/P) ? "); scanf("%s", &jk); printf("Masukan Nilai : "); scanf("%d", &nilai); if(jk == 'L' || jk == 'l'){
if(nilai > 80) printf("Lulus!\n"); else printf("Tidak Lulus!\n"); } else if(jk == 'P' || jk == 'p'){
if(nilai > 60) printf("Lulus!\n"); else printf("Tidak Lulus!\n"); } else { printf("Masukan Dengan Benar!\n"); }
}