Modul 4: Percabangan - fzl-22/modul-alpro-informatika GitHub Wiki
Daftar Isi
- Definisi Percabangan
- Percabangan dalam Bahasa C
- Percabangan 'If'
- Percabangan 'If-Else'
- Percabangan 'If-Else If-Else'
- Percabangan 'Switch-Case'
- Percabangan Bersarang (Nested Conditional)
Definisi Percabangan
Percabangan merupakan salah satu control flow (selain percabangan, ada juga perulangan), yaitu cara kita mengatur jalannya perintah dan pemanggilan fungsi dalam suatu program. Dengan menggunakan percabangan, maka program dapat menjadi lebih 'pintar' karena dapat membuat keputusan berdasarkan kondisi yang diberikan. Agar dapat lebih mudah dipahami, berikut adalah contoh percabangan di dunia nyata:
Jika (nilai siswa lebih dari 80), maka [siswa lulus].
Jika (nilai siswa lebih dari 70 dan kurang dari atau sama dengan 80), maka [siswa perlu remed].
Selain itu, [siswa tidak lulus].
Kata-kata di dalam tanda kurung (...) menandakan kondisi yang harus dipenuhi agar perintah dalam tanda kurung siku [...] dapat dieksekusi. Dalam notasi flowchart, percabangan di atas dapat digambarkan seperti di bawah ini:
Percabangan dalam Bahasa C
Dalam bahasa C, percabangan dapat dituliskan menggunakan syntax utama if
, If-Else If-Else
, else
, dan switch-case
. Untuk ketiga opsi pertama, formatnya adalah sebagai berikut:
if(condition1){
statement1;
}else if(condition2){
statement2;
}else if(condition3){
statement3;
}else{
statement4;
}
Penulisan format percabangan di atas memiliki syarat-syarat berikut:
- Kondisi berupa ekspresi boolean.
- Penulisan kondisi diapit oleh tanda kurung
(...)
. - Statement-statement yang akan dieksekusi oleh suatu kondisi harus berada di dalam tanda kurung kurawal
{...}
. - Setiap baris statement di dalam percabangan harus diakhiri dengan tanda semicolon
;
.
Format dari switch-case
akan ditunjukan setelah sub-bab if-else if-else
.
Percabangan 'If'
Percabangan 'If' merupakan single alternative selection, karena hanya memiliki satu pilihan keputusan. Perhatikan contoh berikut:
int nilai;
printf("Masukkan Nilai : ");
scanf("%d",&nilai);
if (nilai > 80){
printf("Predikat A");
}
printf("Program telah selesai dijalankan");
Perhatikan bahwa dari contoh di atas, maka dapat disimpulkan bahwa cara kerja dari percabangan if
adalah sebagai berikut:
- Jika kondisi pada
if
bernilaiTrue
, maka perintah di dalamnya akan dieksekusi. - Jika kondisi pada
if
bernilaiFalse
, maka perintah di dalamnya tidak akan dieksekusi.
Percabangan 'If-Else'
Percabangan 'If-Else' merupakan dual alternative selection, karena memiliki dua pilihan keputusan. Perhatikan contoh berikut:
int nilai;
printf("Masukkan Nilai : ");
scanf("%d",&nilai);
if (nilai > 80){
printf("Predikat A");
else{
printf("Predikat Bukan A");
}
printf("Program telah selesai dijalankan");
Dari contoh di atas, bisa disimpulkan bahwa cara kerja dari percabangan 'If-Else' adalah sebagai berikut:
- Jika kondisi pada
if
bernilaiTrue
, maka perintah di dalamif
tersebut akan dieksekusi. - Jika kondisi pada
if
bernilaifalse
, maka perintah di dalamelse
akan dieksekusi.
Dengan kata lain, kondisi else
memeriksa kondisi selain dari kondisi if
. Apabila kondisi di dalam if
adalah nilai > 80
, maka kondisi di dalam else
secara otomatis akan menjadi nilai <= 80
. Contoh lain untuk menggambarkan kondisi else
adalah sebagai berikut:
int nilai;
printf("Masukkan Nilai : ");
scanf("%d",&nilai);
if (nilai > 80 && nilai <= 100){
printf("Predikat A");
}else{
printf("Predikat Bukan A");
}
printf("Program telah selesai dijalankan");
Dari contoh di atas, maka kondisi di dalam else
secara otomatis akan menjadi nilai <= 80 || nilai > 100
.
Percabangan 'If-Else If-Else'
Percabangan 'If-Else If-Else' merupakan multiple alternative selection, karena memiliki lebih dari dua pilihan keputusan.
int nilai;
printf("Masukkan Nilai : ");
scanf("%d",&nilai);
if (nilai > 80 && nilai <= 100){
printf("Predikat A");
}else if (nilai > 70 && nilai <= 80){
printf("Predikat B");
}else if (nilai > 60 && nilai <= 7){
printf("Predikat C");
}else if (nilai > 50 && nilai <= 60){
printf("Predikat D");
}else if (nilai >= 0 and nilai <= 50){
printf("Predikat E");
}else{
printf("Nilai tidak valid");
}
printf("Program telah selesai dijalankan");
Dari program di atas, dapat disimpulkan bahwa cara kerja percabangan 'If-Else If-Else' adalah sebagai berikut:
- Jika kondisi pada
if
bernilaiTrue
, maka perintah di dalamif
tersebut akan dieksekusi. - Jika kondisi pada
if
bernilaiFalse
, maka kondisi dalamelse if
akan diperiksa. - Jika kondisi dalam
else if
bernilaiTrue
, maka perintah di dalamnya akan dieksekusi. Apabila bernilaiFalse
, maka sequence selanjutnya akan dijalankan (apabila sequence selanjutnya adalahelse if
juga, maka ulangi langkah yang sama untukelse if
tersebut). - Apabila statement
else
ditambahkan di akhir, maka perintah di dalamnya akan dieksekusi ketika semua kondisi di dalamif
danelse if
sudah diperiksa dan semuanya bernilaiFalse
.
Percabangan 'Switch-Case'
Selain percabangan if
dan kawan-kawannya, percabangan juga dapat dilakukan dengan switch
. Perbedaannya, switch
menguji apakah sebuah variabel tunggal (ekspresi) yang bertipe data int
atau char
memiliki kecocokan dengan kasus ekspresi-konstan di setiap blok case
. Setelah itu, perintah akan dijalankan sesuai dengan blok case
mana yang nilai ekspresi-konstannya cocok dengan nilai variabel tunggal (ekspresi). Untuk lebih jelasnya, berikut adalah format dari percabangan switch-case
:
switch(ekspresi){
case ekspresi-konstan1:
statement1;
break;
case ekspresi-konstan2:
statement2;
break;
default:
statement;
}
Pada format di atas, ada statement baru yang muncul, yaitu break
dan default
. Aturan penggunaan dari statement tersebut adalah sebagai berikut:
- Statement
break
harus ditambahkan di akhir setiap blok case untuk memberi tanda bahwa blok case tersebut sudah berakhir. - Statement
default
bersifat opsional. Apabiladefault
ada, maka perintah yang ada di dalamnya akan dijalankan apabila semuacase
di atasnya tidak cocok.
Berikut adalah contoh penggunaan dari percabangan switch-case
:
char predikatMahasiswa;
printf("Masukkan predikat mahasiswa: ");
scanf("%c", &predikatMahasiswa);
switch(predikatMahasiswa){
case 'A':
printf("Sangat Baik\n");
break;
case 'B':
printf("Baik\n");
break;
case 'C':
printf("Cukup\n");
break;
case 'D':
printf("Kurang\n");
break;
case 'E':
printf("Sangat Kurang\n");
break;
default:
printf("Predikat Tidak Valid\n");
}
Pada contoh di atas, ekspresi yang digunakan adalah predikatMahasiswa
dengan case-casenya adalah character A
, B
, C
, D
, dan E
. Apabila tidak ada case yang cocok, maka perintah dalam blok default
akan dijalankan.
Percabangan Bersarang (Nested Conditional)
Percabangan bersarang (nested conditional) adalah kasus ketika ada percabangan di dalam suatu percabangan. Kasus ini akan terjadi apabila terdapat percabangan lain di dalam perintah dari suatu percabangan. Agar lebih jelas, perhatikan kode program di bawah ini:
int nilai;
printf("Masukkan Nilai : ");
scanf("%d",&nilai);
if (nilai > 80 && nilai <= 100){
printf("Predikat A");
if (nilai == 100){
printf("Selamat! Mahasiswa mendapatkan nilai sempurna!");
}else if (nilai == 99){
printf("Selamat! Nilai mahasiswa nyaris sempurna!");
}else{
printf("Selamat!");
}
else if (nilai > 70 && nilai <= 80){
printf("Predikat B");
}else if (nilai > 60 && nilai <= 70){
printf("Predikat C");
}else if (nilai > 50 && nilai <= 60){
printf("Predikat D");
else if (nilai >= 0 && nilai <= 50){
printf("Predikat E");
else{
printf("Nilai tidak valid");
}
printf("Program telah selesai dijalankan");
Cara kerja percabangan bersarang (nested conditional) tetap sama dengan semua jenis percabangan yang telah dijelaskan sebelumnya. Perbedaannya hanya terletak pada tempatnya yang berada di dalam percabangan lain.