Lanjutan Bentuk dasar blok IF - Pada pertemuan pertama pembahasan bentuk dasar IF bisa anda akses lewat link ini Pembahasan Bentuk dasar blok IF . Bentuk dasar blok IF banyak sekali dan sangat sering dijumpai di dalam penentuan alur proses atau pemilihan suatu proses dalam pemrograman menggunakan kata IF yang berarti jika. Kalimat dasarnya adalah 'jika suatu kondisi terpenuhi maka lakukan yang ini, jika kondisi tidak terpenuhi maka lakukan yang itu'. Statement IF bisa digunakan untuk menentukan suatu nilai ataupun suatu proses berdasar suatu kondisi tertentu. Syntax IF adalah :

IF kondisi_1 THEN
proses untuk kondisi_1 yang terpenuhi
ELSEIF kondisi_2 THEN
proses untuk kondisi_2 yang terpenuhi
ELSEIF .. THEN
ELSEIF kondisi_N THEN
proses untuk kondisi_N yang terpenuhi
ELSE
proses untuk yang tidak memenuhi kondisi apapun
END IF

Bentuk dasar sebagai sebuah blok IF di atas akan memudahkan pembacaan dan penyusunan alur logika.

Beberapa bentuk penggunaan IF

B
Dari bentuk dasar IF ini, akan muncul berbagai bentuk, seperti :
Sebaris khusus untuk proses yang harus memenuhi sebuah kondisi
IF kondisi1 THEN proses_kondisi1_terpenuhi
meskipun bisa disusun dalam bentuk satu baris penulisan, sebaiknya tetap disusun dalam bentuk dasarnya menjadi :
IF kondisi1 THEN
proses_kondisi1_terpenuhi
END IF

Contohnya proses jika nilai penjualan 0 maka batalkan proses :
IF lJual = 0 THEN Exit Sub

sebaiknya tetap ditulis dalam bentuk dasar IF sebagai :
IF lJual = 0 THEN 'nilai penjualan adalah 0
Exit Sub
END IF

Sebaris untuk mencabang 2 suatu proses berdasar sebuah kondisi :
IF kondisi1 THEN proses_cabang1 ELSE proses_cabang2
meskipun bisa disusun dalam bentuk satu baris penulisan, sebaiknya tetap disusun dalam bentuk dasarnya menjadi :
IF kondisi1 THEN
proses_cabang1
ELSE
proses_cabang2
END IF

Contohnya proses jika nilai penjualan 0 maka tetapkan nilai persentase bonus dengan 0 persen. Jika nilai penjualan tidak 0 maka tetapkan nilai persentase bonus dengan nilai penjualan dibagi 1juta :
IF lJual = 0 THEN dblBonus = 0 ELSE dblBonus = lJual / 1000000

meskipun bisa disusun dalam bentuk satu baris penulisan, sebaiknya tetap disusun dalam bentuk dasarnya menjadi :
IF lJual = 0 THEN 'nilai penjualan adalah 0
dblBonus = 0
ELSE 'nilai penjualan bukan 0
dblBonus = lJual / 1000000
END IF

Satu kriteria dengan banyak batas :
IF kondisi1_batas1 THEN
proses batas 1
ELSEIF kondisi1_batas2 THEN
proses batas 2
.
ELSE
proses tidak memenuhi batas-batas yang ada
END IF

Contohnya adalah penentuan nilai kualitas produk 'A' sampai 'C' berdasar batas minimal nilai lulus uji mencapai 90,75,60 dengan sisanya dinyatakan gagal :
IF lNilai >= 90 THEN 'Nilai dimulai dari 90 ke atas
sAkhir = "A"
ELSEIF lNilai >= 75 THEN 'Nilai dimulai dari 75 sampai sebelum 90
sAkhir = "B"
ELSEIF lNilai >= 60 THEN 'Nilai dimulai dari 60 sampai sebelum 75
sAkhir = "C"
ELSE 'Nilai kurang dari 60 (tidak mencapai 60)
sAkhir = "Gagal"
END IF

Banyak kriteria :
IF kondisi1 THEN
proses kondisi1
ELSEIF kondisi2 THEN
proses kondisi2
.
ELSE
proses lainnya
END IF

Contohnya adalah ketika proses akan diarahkan berdasar warna produk yang merah akan memberi nilai jual adalah 100, jika tinggi lebih dari 50 akan diberi potongan harga sebanyak 25 persen dan selainnya akan diberi nilai kualitas 'C' :
IF sWarna = "Merah" THEN 'produk warna merah
lJual = 100
ELSEIF lTinggi > 50 THEN 'tinggi produk lebih dari 50
dblDisc = 0.25
ELSE 'produk lainnya
sAkhir = "C"
END IF

Bersarang ( IF di dalam IF ) :
Bisa digunakan ketika kondisi tersusun atas banyak kriteria, berjenjang, dan harus terpenuhi mengikuti urutan pemeriksaan tertentu :
IF kondisi1 THEN
IF kondisi1A THEN
proses untuk kondisi 1A
ELSEIF kondisi1B THEN
proses untuk kondisi 1B
.
ELSE
proses lain selama kondisi1 terpenuhi
END IF
ELSEIF kondisi2 THEN
IF kondisi2A THEN
.
ELSEIF .. THEN
.
ELSE
.
END IF
.
ELSE
IF .. THEN
.
ELSEIF .. THEN
.
ELSE
.
END IF
END IF

Jumlah level IF yang ada di dalam sebuah IF bisa bertingkat sangat banyak. Kondisi yang paling sering dan mungkin terjadi diletakkan pada baris-baris awal blok IF. Misalnya, kondisi berbunyi nilai penjualan lebih dari nol lebih sering terjadi dibanding nilai penjualan adalah 0, maka gunakan kondisi nilai penjualan lebih dari 0.

Contohnya adalah penentuan bonus untuk warna merah berdasar jumlah item terjual, sedang penentuan bonus untuk tinggi produk lebih dari 50 akan berdasar nilai penjualan, dan selainnya berdasar indeks kualitas penjualannya. Penjualan warna merah lebih sering terjadi dibanding berdasar tinggi produk. Susunan blok IF-nya bisa berupa :
IF sWarna = "Merah" THEN 'produk warna merah
IF lJual > 10 THEN 'terjual lebih dari 10 item
dblBonus = 0.25
ELSEIF lJual > 5 THEN 'terjual lebih dari 5 item - 10 item
dblBonus = 0.1
ELSE 'terjual maksimal 5 item
dblBonus = 0
END IF
ELSEIF lTinggi > 50 THEN 'produk dengan tinggi bernilai 50
IF curSales > 2000000 THEN 'terjual senilai lebih dari 2juta
dblBonus = 0.25
ELSEIF curSales >= 1000000 THEN 'terjual mulai 1juta sampai 2juta
dblBonus = 0.2
ELSEIF curSales > 500000 THEN 'lebih dari 500ribu tapi belum 1juta
dblBonus = 0.1
ELSE 'terjual maksimal senilai 500ribu
dblBonus = 0
END IF
ELSE 'produk yang bukan berkriteria khusus
IF sAkhir = "A" THEN 'termasuk kualitas penjualan A
dblBonus = 0.35
ELSEIF sAkhir = "B" THEN 'termasuk kualitas penjualan B
dblBonus = 0.15
ELSE 'termasuk dalam kualitas penjualan lainnya
dblBonus = 0.01
END IF
END IF

Penggunaan operator logika dalam IF

Macam macam operator logika sebagaimana telah saya sebutkan sebelumnya, untuk mengingatkan kembali berikut ini adalah operator logika :

< (kurang dari); A < B menghasilkan TRUE ketika A kurang dari B > (lebih dari); A > B menghasilkan TRUE ketika A lebih dari B
<= (kurang dari atau sama dengan); A <= B menghasilkan TRUE ketika A adalah sebelum B dan maksimal sampai B >= (lebih dari atau sama dengan); A >= B menghasilkan TRUE ketika A mulai dari B atau lebih dari B
<> (bukan); A <> B menghasilkan TRUE ketika A selalu berbeda dengan B
= (sama dengan); A = B menghasilkan TRUE ketika A bernilai sama dengan B
Is (adalah [khusus object]); rngFind Is Nothing menghasilkan TRUE ketika variabel bernama rngFind tidak ada isinya
Like (ada bunyi [khusus string]); sTeks Like sPattern menghasilkan TRUE ketika nilai dalam sTeks memiliki bunyi nilai sPattern

Beberapa kondisi yang saling terkait dengan operator logika tertentu dapat membentuk sebuah kondisi baru. Penggunaan IF yang disertai operator logika antara lain seperti :
Operator AND seperti kondisi1 AND kondisi2
IF kondisi1 AND kondisi2 THEN
proses ketika kondisi1 dan kondisi2 terpenuhi seluruhnya
ELSE
proses ketika tidak terpenuhi
END IF

Susunan seperti ini, terutama untuk operator logika AND pada banyak kondisi, akan lebih cepat bila disusun sebagai :
IF kondisi1 THEN
IF kondisi2 THEN
proses ketika kondisi1 dan kondisi2 terpenuhi seluruhnya
ELSE
proses ketika tidak terpenuhi
ENDIF
ELSE
proses ketika tidak terpenuhi
END IF

Contohnya, bonus diberikan 25% ketika nilai penjualan mencapai 100 sampai dengan 500, selainnya adalah 0%
dblBonus = 0
IF lNilai >= 100 AND lNilai <= 500 THEN dblBonus = 0.25 END IF



akan lebih cepat diproses, terutama saat ada banyak kondisi dengan operator logika AND, jika dibentuk dalam susunan :
dblBonus = 0
IF lNilai >= 100 THEN
IF lNilai <= 500 THEN dblBonus = 0.25 END IF END IF



Operator OR seperti kondisi1 OR kondisi2
IF kondisi1 OR kondisi2 THEN
proses ketika salah satunya terpenuhi
ELSE
proses ketika tidak ada yang terpenuhi
END IF

Susunan seperti ini, terutama untuk operator logika OR pada banyak kondisi, akan lebih cepat bila disusun sebagai :
IF kondisi1 THEN
proses ketika salah satunya terpenuhi
ELSEIF kondisi2 THEN
proses ketika salah satunya terpenuhi
ELSE
proses ketika tidak ada yang terpenuhi
END IF

Contohnya, bonus diberikan 25% ketika produk yang terjual adalah salah satu dari warna merah atau hijau, atau tinggi produk lebih dari 50. Selainnya akan diberi bonus 0%.
dblBonus = 0
IF sWarna = "Merah" OR sWarna = "Hijau" OR lTinggi > 50 THEN
dblBonus = 0.25
END IF

akan lebih cepat diproses, terutama saat ada banyak kondisi dengan operator logika AND, jika dibentuk dalam susunan :
dblBonus = 0
IF sWarna = "Merah" THEN
dblBonus = 0.25
ELSEIF sWarna = "Hijau" THEN
dblBonus = 0.25
ELSEIF lTinggi > 50 THEN
dblBonus = 0.25
END IF

Operator NOT (bukan atau selain kondisi yang ada)
IF NOT kondisi1 THEN
proses ketika kondisi1 tidak terpenuhi
ELSE
proses ketika kondisi1 terpenuhi
END IF
Bisa jadi kondisi1 adalah hasil dari operator logika terhadap beberapa kondisi lain. Misalnya kondisi2 AND ( kondisi3A OR kondisi3B ) akan membentuk kondisi baru bernama kondisi1. Maka susunan IF dengan opreator logika NOT bisa berupa :
IF NOT ( kondisi2 AND ( kondisi3A OR kondisi3B ) ) THEN
proses ketika kondisi1 tidak terpenuhi
ELSE
proses ketika kondisi1 terpenuhi
END IF

Contohnya adalah ketika produk adalah warna merah maka nilai bonus adalah 10% dan selainnya adalah 25%, dapat disusun kondisi berbunyi :
dblBonus = 0.1
IF NOT ( sWarna = "Merah" ) THEN
dblBonus = 0.25
END IF

Sampai disini pembahasan blok If end If sudah selesai, pembahasan seperti ini saya temukan dibloh belajar excel yang ditulis oleh master excel Indonesia yaitu Mr. KID, Mr KID merupakan master Excel yang pemahaman serta pengenalan excelnya sangat dalam.
Demikianlah dua tahap pembelajaran pembahasan blok If End If, lihat pembahasan pertam disini semoga artikel ini bermanfaat, salam
No comments