Dalam tutorial sebelumnya kita telah membahas tentang perulangan IF ELSE, yakni sebuah percabangan kode program dimana jika kondisi IF bernilai true, maka jalankan perintah yang ada di dalam blok IF tersebut. Namun jika kondisi bernilai false, maka jalankan kode program di dalam blok ELSE.
Kali ini kita akan lanjut membahas percabangan IF ELSE IF, yang boleh disamakan dengan "menyambung" beberapa kondisi IF ELSE sekaligus.
Pengertian Kondisi IF ELSE IF bahasa C
Pada dasarnya, kondisi IF ELSE IF adalah sebuah struktur logika program yang di dapat dengan cara menyambung beberapa kondisi IF ELSE menjadi sebuah kesatuan.
Jika kondisi pertama tidak terpenuhi atau bernilai false, maka kode program akan lanjut ke kondisi IF di bawahnya. Jika ternyata tidak juga terpenuhi, akan lanjut lagi ke kondisi IF di bawahnya, dst hingga blok ELSE terakhir atau terdapat kondisi IF yang bernilai true.
Berikut format dasar penulisan kondisi IF ELSE IF dalam bahasa C:
if (condition_1) { // Kode program yang dijalankan jika condition_1 berisi nilai True } else if (condition_2) { // Kode program yang dijalankan jika condition_2 berisi nilai True } else if (condition_3) { // Kode program yang dijalankan jika condition_3 berisi nilai True } else { // Kode program yang dijalankan jika semua kondisi tidak terpenuhi }
Mari kita lihat contoh prakteknya.
Contoh Kode Program Percabangan IF ELSE IF Bahasa C
Sebagai contoh pertama, saya ingin membuat sebuah kode program untuk menampilkan nilai. User diminta menginput sebuah huruf antara 'A' – 'E'. Kemudian kode program akan menampilkan hasil tampilan yang berbeda-beda untuk setiap huruf yang diinput, termasuk jika huruf tersebut di luar 'A' – 'E'.
Berikut contoh kode programnya:
#include <stdio.h> int main(void) { char nilai; printf("Input Nilai Anda (A - E): "); scanf("%c",&nilai); if (nilai == 'A' ) { printf("Pertahankan! \n"); } else if (nilai == 'B' ) { printf("Harus lebih baik lagi \n"); } else if (nilai == 'C' ) { printf("Perbanyak belajar \n"); } else if (nilai == 'D' ) { printf("Jangan keseringan main \n"); } else if (nilai == 'E' ) { printf("Kebanyakan bolos... \n"); } else { printf("Maaf, format nilai tidak sesuai \n"); } return 0; }
Hasil kode program:
Input Nilai Anda (A - E): A Pertahankan! Input Nilai Anda (A - E): D Jangan keseringan main Input Nilai Anda (A - E): E Kebanyakan bolos... Input Nilai Anda (A - E): F Maaf, format nilai tidak sesuai
Di baris 5 saya mendefinisikan sebuah variabel nilai sebagai char. Variabel nilai ini kemudian dipakai untuk menampung input dari perintah scanf di baris 8.
Mulai dari baris 10 hingga 27, terdapat 5 buah pemeriksaan kondisi, yakni satu untuk setiap block IF ELSE. Dalam setiap kondisi, isi variabel nilai akan di diperiksa, apakah itu berupa karakter 'A', 'B', hingga 'E'. Jika salah satu kondisi ini terpenuhi, maka block kode program yang sesuai akan di eksekusi.
Jika ternyata nilai inputan bukan salah satu dari karakter 'A' – 'E', maka block ELSE di baris 25 lah yang akan dijalankan.
Setiap kondisi dari block IF ELSE IF ini bisa diisi dengan perbandingan yang lebih kompleks, seperti contoh berikut:
#include <stdio.h> int main(void) { int nilai; printf("Input Nilai Anda (0 - 100): "); scanf("%i",&nilai); if (nilai >= 90 ) { printf("Pertahankan! \n"); } else if (nilai >= 80 && nilai < 90) { printf("Harus lebih baik lagi \n"); } else if (nilai >= 60 && nilai < 80) { printf("Perbanyak belajar \n"); } else if (nilai >= 40 && nilai < 60) { printf("Jangan keseringan main \n"); } else if (nilai < 40) { printf("Kebanyakan bolos... \n"); } else { printf("Maaf, format nilai tidak sesuai \n"); } return 0; }
Di sini saya memodifikasi sedikit kode program kita sebelumnya. Sekarang nilai inputan berupa angka antara 0 hingga 100. Angka inputan ini ditampung ke dalam variabel nilai yang sekarang di set sebagai tipe data integer di baris 5.
Di baris 10, isi dari variabel nilai di periksa apakah berisi angka yang lebih dari 90. Jika iya, tampilkan teks "Pertahankan!".
Jika kondisi di baris 10 tidak terpenuhi (yang artinya isi variabel nilai kurang dari 90), maka kode program akan lanjut ke kondisi ELSE IF berikutnya di baris 13. Di sini saya menggabungkan dua buah kondisi menggunakan operator logika && (yakni operator AND). Kondisi if(nilai >= 80 && nilai < 90) hanya akan terpenuhi jika isi variabel nilai berada dalam rentang 80 sampai 89.
Ketika membuat kondisi perbandingan, kita harus hati-hati dengan penggunaan tanda, apakah ingin menggunakan tanda lebih besar saja (>) atau tanda lebih besar sama dengan (>=) karena bisa mempengaruhi hasil akhir.
Jika ternyata kondisi ini tidak dipenuhi juga (artinya isi variabel nilai kurang dari 80), program akan lanjut ke kondisi if(nilai >= 60 && nilai < 80) di baris 16, yakni apakah nilai berada dalam rentang 60 – 79. Demikian seterusnya hingga kondisi terakhir if(nilai < 40) di baris 22.
Jika semua kondisi tidak terpenuhi, jalankan block ELSE di baris 26.
Berikut hasil percobaan dari kode program di atas:
Input Nilai Anda (0 - 100): 95 Pertahankan! Input Nilai Anda (0 - 100): 60 Perbanyak belajar Input Nilai Anda (0 - 100): 30 Kebanyakan bolos...
Yang cukup unik adalah, jika kita memberikan nilai di luar rentang 0 – 100, akan tetap ditangkap oleh kondisi IF di baris 10 atau di baris 22:
Input Nilai Anda (0 - 100): 200 Pertahankan! Input Nilai Anda (0 - 100): -1000 Kebanyakan bolos...
Ini terjadi karena nilai 200 tetap memenuhi syarat if (nilai >= 90), dan nilai -1000 juga tetap memenuhi syarat if (nilai < 40). Silahkan anda modifikasi kode program di atas agar jika diinput angka di luar dari rentang 0 -100, akan tampil teks "Maaf, format nilai tidak sesuai". Untuk hal ini kita cuma perlu mengubah / menambah 2 kondisi saja.
Dalam tutorial kali ini kita telah membahas tentang konsep struktur logika IF ELSE IF, yang tidak lain berupa kondisi IF yang saling bersambung. Berikutnya kita akan masuk ke struktur kondisi SWITCH, yang dalam banyak hal mirip seperti IF ELSE IF.
Min, minta info perbedaan jelasnya %i dan %d apa ya? soalnya jika tipe data Interger (int) di part2 sebelumnya sering di pake i terkadang d. Terima kasih sebelumnya
Oh iya, untuk perintah printf memang mendukung banyak karakter ganti. Untuk tipe data integer bisa menggunakan %i maupun %d. %d merupakan singkatan dari "decimal", dan %i untuk "integer". Tidak ada perbedaan jika dipakai untuk printf (boleh yang mana saja).
float pakai %f ya?
Oiya, kalau bikin rentang nilai seperti di atas namun tidak memakai && bagaimana caranya ya? cuma apakai if else doang
Mungkin bisa pakai if bertingkat, tapi logikanya jadi lebih rumit…
Min,,, sebenernya %d itu untuk bilangan desimal dgn tipe data int bisa atau tdk? Karena biasa nya klw saya pakai itu nggak bisa untuk bilangan desimal
"Decimal" disini maksudnya bilangan bulat berbasis 10.
Kalau dalam sistem bilangan, contohnya ada bilangan biner (basis 2), octal (basis 8), decimal (basis 10), dan hexadecimal (basis 16). Jadi maksudnya memang bukan angka desimal yang sering kita pakai sehari2, kalau untuk itu di bahasa C menyebutnya sebagai float.
Untuk %d mungkin lebih tepatnya disebut sebagai 'decimal integer', sehingga memang tidak bisa dipakai untuk menampung angka pecahan.
kalau if else if dengan data string gimana?? kan kalau char tidak bisa A+, jadi harus pakai data string
Dalam bahasa C, string adalah array dari karakter. Selain itu proses perbandingan string juga tidak bisa dilakukan langsung, tapi harus menggunakan fungsi tambahan seperti strcmp().
Jadi pembuatan kondisi if else untuk tipe data string dalam bahasa C bisa seperti ini:
#include <stdio.h>
int main(void)
{
char nama[] = "Alex";
if (strcmp(nama,"Alex") == 0 ) {
printf("Hello Alex");
}
else {
printf("Kamu bukan Alex");
}
return 0;
}
bang bagaimana cara menyisipkan coding if else diantara coding counter down? apakah arduino bisa menjalankan 2 sistem dalam waktu bersamaan? thanks
Wah, kalau penerapan bahasa C ke arduino saya juga belum ada pengalaman nih…
saya seneng bngt om di bagian trakhir nya di buat seperti itu biar pembaca jg bs pada mikir juga makasi banyak om andre terbantu banget
kek mana sih
kak saya kan habis buat percabangan nilai tuh,pertamanya saya kasih dia nilai 140 nah terus saya buat percabangan,kalau kurang dari 190 nilainya ditambah 50 nah kalau lebih dari 190 nilainya di tambah 30.Terus ya bener keluar outputan nya sesuai dengan kriteria tersebut,tapi pas saya panggil lagi yang keluar malah nilai awal yaitu 140,nilai dari percabangannya ga ikut,KIra kira kenapa ya om?,Makasih salam newbie
Bisa di copykan kodenya ke sini?
Bang saya ada tugas dari dosen nih sebelumnya bentuk flow chart dan setelah itu diminta dalam bentuk sintac bahasa C, kurang lebih soalnya seperti ini :
Seorang pemilik sebuah perusahaan otomotif perlu menentukan besarnya bonus
yang akan diberikan kepada para pegawainya yang bekerja sebagai account
executive. Jika terdapat pegawai yang dalam bulan ini telah menjual mobil lebih
dari dua unit, maka akan mendapatkan bonus sebesar Rp 2.000.000,- kemudian
pegawai yang bisa menjual mobil tepat dua buah maka, akan mendapatkan bonus
Rp 1.000.000,- namun jika pegawai yang dalam bulan ini penjualannya kurang dari
dua unit maka, pegawai tersebut tidak mendapatkan bonus. Buatlah sebuah
Flowchart dan sintax bahasa C untuk menggambarkan kondisi tersebut diatas
Ini adalah kunci jawaban soal dari dosen :
#include <stdio.h>
int main(void) {
int penjualan;
printf("Masukkan besarnya penjualan : "); scanf("%d", penjualan);
/* Melakukan pengecekan terhadap penjualan */
if (penjualan <= 2) {
printf("Pada penjualan %d buah mobil, anda mendapatkan bonus "
\"0", penjualan);
} else if (penjualan = 2){
printf("Pada penjualan %d buah mobil, anda mendapatkan bonus "
\"500.000", penjualan);
} else {
printf("Pada penjualan %d buah mobil, anda mendapatkan bonus "
\"1.000.000", penjualan);
}
return 0;
}
saya copas ke code block malah eror nya 29.
setelah itu saya sempurnakan seperti ini :
#include <stdio.h>
int main(void)
{
int penjualan;
printf("Masukkan besarnya penjualan (1 – 100): ");
scanf("%d",&penjualan);
/* Melakukan pengecekan terhadap penjualan */
if (penjualan >=0 && penjualan <0){
printf("Pada penjualan %d buah mobil, anda mendapatkan bonus Rp. 0 penjualan \n");
}
else if (penjualan =2 && penjualan <2){
printf("Pada penjualan %d buah mobil, anda mendapatkan bonus Rp. 500.000 penjualan \n");
}
if else (penjualan >2 penjualan && penjualan <=100){
printf("Pada penjualan %d buah mobil, anda mendapatkan bonus Rp. 1.000.000 penjualan \n");
}
return 0;
}
tetapi tidak muncul angka yang diinginkan. hanya jika diketik 0 maka bonus akan o, jika ketik 1 maka bonus akan keluar 500000, jika ketik 3 maka akan keluar 500000 dan 1000000 ditambah jika dibuat desimal maka kan keluar angka jutaan,
yang saya ingin kan
penjualan = 0 hasilnya 0
penjualan = 1 hasilnya 0
penjualan =2 hasilnya 500000
penjualan >2 hasilnya 2000000
terimakasih bang sebelumnya
Makasih banyak, Kak. Program saya ngga error lagi😊
sangat membantu om bagi pemula seperti saya👍
>=0 &&<0 (baru tau kalo ada logika program seperti ini . . . _
Terimakasih, materinya mudah dipahami disertai dengan contoh dan penjesalan yang mendetail.