Politeknik Elektronika Negeri Surabaya - ITS
BAB 3 PENYELESAIAN KONDISI 3.1. Struktur IF..THEN Perintah
IF
digunakan
untuk
memeriksa
sebuah
kondisi
dan
mengeksekusi satu atau lebih baris program, jika dan hanya jika kondisi terpenuhi. Program 3.1 : INPUT nilai IF nilai>55 THEN PRINT "LULUS"
Ya
nilai > 55
Cetak "Lulus"
Tidak
Gambar 3.1. Flowchart untuk perintah IF Jika variabel nilai berisi bilangan yang lebih besar dari pada 55, maka akan dicetak pesan "LULUS", tetapi jika kondisi salah maka perintah PRINT tidak akan dikerjakan 3.2. Struktur IF..THEN...ELSE... Cara penulisan IF..THEN..ELSE IF kondisi THEN statement-1 ELSE statement-2 Struktur IF..THEN...ELSE...satu baris digambarkan oleh flowchart berikut :
Diktat Kuliah Bahasa Komputer I Iwan Syarif
halaman 24
Politeknik Elektronika Negeri Surabaya - ITS
benar
kondisi
Statement 1
salah Statement 2
Gambar 3.2. Flowchart IF..THEN..ELSE Program 3.2. INPUT nilai IF nilai>55 THEN PRINT "LULUS" ELSE PRINT "Tidak Lulus" Berikut ini adalah program untuk mengetahui bilangan yang diinputkan tersebut adalah bilangan genap atau ganjil. Mulai
Input bil
bil habis dibagi 2 ?
Ya
Cetak "Genap"
Tidak
Cetak "Genap"
Selesai
Gambar 3.3. Flowchart untuk mengetahui bilangan genap/ganjil
Diktat Kuliah Bahasa Komputer I halaman 25
Politeknik Elektronika Negeri Surabaya - ITS
Struktur perintah IF..THEN..ELSE…dapat dituliskan dalam 1 baris jika perintah yang dikerjakan jika kondisi benar/ salah tidak lebih dari 1 baris. Program 3.3. REM Contoh Program IF..ELSE...ditulis 1 baris REM Program untuk mengenali bilangan genap atau ganjil INPUT "Masukkan sembarang bilangan :", bil IF bil mod 2=0 THEN ? "Bilangan Genap" ELSE ? "Bilangan Ganjil" Selain bentuk di atas, program tersebut juga dapat ditulis dalam format seperti berikut ini : Program 3.4. REM Contoh Program IF..ELSE...ditulis bertingkat INPUT "Masukkan sembarang bilangan :", bil IF bil mod 2=0 THEN ? "Bilangan Genap" ELSE ? "Bilangan Ganjil" END IF Jika statement yang dikerjakan lebih dari 1 baris, maka struktur IF..ELSE..harus ditulis pada suatu blok seperti pada contoh program di bawah ini : Program 3.5. REM Contoh Program IF..ELSE...ditulis bertingkat INPUT "Masukkan nilai :", nilai IF nilai >55 THEN PRINT "Selamat, Anda dinyatakan lulus" PRINT "Pertahankan prestasi anda” ELSE PRINT "Anda tidak lulus" PRINT "Jangan putus asa, belajar lebih giat" END IF
Diktat Kuliah Bahasa Komputer I halaman 26
Politeknik Elektronika Negeri Surabaya - ITS
3.3. Struktur IF bertingkat Struktur IF..THEN...ELSEIF...ELSE…END IF
benar
Statement 1
kondisi 1
salah
benar
kondisi 2
Statement 2
salah Statement 3
Gambar 3.4. Flowchart IF..THEN...ELSEIF...ELSE…END IF Contoh : Berikut ini adalah flowchart dan program untuk menghitung nilai diskriminan. Mulai
Input a,b,c
D = b*b-4*a*c
ya
D>0
Cetak "Ada 2 akar real"
tidak
ya
D=0
Cetak "Akarnya kembar"
tidak Cetak "Akarnya imajiner"
Selesai
Gambar 3.5. Flowchart untuk menghitung nilai diskriminan Diktat Kuliah Bahasa Komputer I halaman 27
Politeknik Elektronika Negeri Surabaya - ITS
Program 3.6. REM Program untuk menghitung diskriminan REM Sebagai input adalah variabel a,b,c INPUT a,b,c D=b^2-4*a*c IF D>0 THEN PRINT "Ada 2 akar real" ELSEIF D=0 THEN PRINT "Akarnya kembar" ELSE PRINT "Akarnya imajiner" END IF
Berikut ini adalah flowchart dan program BASIC untuk mengkonversi nilai angka ke nilai huruf :
Diktat Kuliah Bahasa Komputer I halaman 28
Politeknik Elektronika Negeri Surabaya - ITS
Mulai
Input na
na>80 and na<=100
na>65 and na<=80
na>55 and na<=65
Ya
nh$="A"
Ya
nh$="B"
Ya
nh$="C"
na>40 and na<=55
Ya
na>=0 and na<=40
Ya
nh$="D"
nh$="E"
tidak
nh$=" "
Cetak "Salah entri"
Cetak "Nilai Huruf=",nh$
Selesai
Gambar 3.6. Flowchart untuk mengkonversi nilai angka ke nilai huruf
Diktat Kuliah Bahasa Komputer I halaman 29
Politeknik Elektronika Negeri Surabaya - ITS
Program BASIC untuk flowchart di atas adalah sbb. : Program 3.7. REM Contoh Program IF bertingkat REM Program untuk mengkonversi nilai angka ke nilai huruf INPUT "Masukkan nilai angka : ",na IF na>80 and na<=100 THEN nh$="A"' ELSEIF na>65 and na<= 80 THEN nh$="B" ELSEIF na>55 and na<= 65 THEN nh$="C" ELSEIF na>40 and na<= 55 THEN nh$="D" ELSEIF na>=0 and na<= 40 THEN nh$="E" ELSE print "Salah entri." nh$="-" END IF PRINT "Nilai Huruf : ",nh$ END RUN Masukkan nilai angka : 55 Nilai Huruf : D RUN Masukkan nilai angka : 80 Nilai Huruf : B RUN Masukkan nilai angka : 125 Salah entri. Nilai Huruf : RUN Masukkan nilai angka : -30 Salah entri. Nilai Huruf : -
Diktat Kuliah Bahasa Komputer I halaman 30
Politeknik Elektronika Negeri Surabaya - ITS
3.4. SELECT CASE Instruksi SELECT..CASE digunakan untuk mengatur eksekusi baris instruksi berdasarkan nilai dari ekspresi yang terpenuhi dalam suatu alur program. Bentuk umum dari instruksi ini adalah : SELECT CASE ekspresi CASE nilai yang diperiksa blok instruksi CASE nilai yang diperiksa blok instruksi CASE ELSE blok instruksi END SELECT Program 3.8. REM Contoh Progam menggunakan SELECT..CASE Versi 1.0 INPUT "Nilai Matematikamu dapat apa (A-E) ? ",nilai$ SELECT CASE nilai$ CASE "A" PRINT "Sangat memuaskan" CASE "B" PRINT "Memuaskan" CASE "C" PRINT "Cukup" CASE "D" PRINT "Kurang" CASE "E" PRINT "Sangat Kurang" CASE ELSE PRINT "Kamu salah masukkan data " END SELECT RUN Nilai Matematikamu dapat apa (A-E) ? A Sangat memuaskan RUN Nilai Matematikamu dapat apa (A-E) ? D Kurang Diktat Kuliah Bahasa Komputer I halaman 31
Politeknik Elektronika Negeri Surabaya - ITS
RUN Nilai Matematikamu dapat apa (A-E) ? F Kamu salah masukkan data RUN Nilai Matematikamu dapat apa (A-E) ? a Kamu salah masukkan data Pada contoh di atas, jika dimasukkan data 'A' (huruf A besar) maka akan dicetak pesan 'Sangat memuaskan', tetapi jika dimasukkan data 'a' (huruf a kecil) maka program akan menampilkan pesan 'Kamu salah memasukkan data'. Hal ini disebabkan karena pada variabel bertipe string, huruf kecil dan huruf besar dianggap berbeda karena mempunyai kode ASCII yang berbeda. Supaya program di atas dapat menerima input berupa huruf besar maupun huruf kecil, maka program tersebut perlu diubah menjadi sbb. : Program 3.9. REM Contoh Progam menggunakan SELECT..CASE Versi 2.0 INPUT "Nilai Matematikamu dapat apa (A-E) ? ",nilai$ SELECT CASE nilai$ CASE "A",”a” PRINT "Sangat memuaskan" CASE "B",”b” PRINT "Memuaskan" CASE "C",”c” PRINT "Cukup" CASE "D",”d” PRINT "Kurang" CASE "E",”e” PRINT "Sangat Kurang" CASE ELSE PRINT "Kamu salah masukkan data " END SELECT RUN Nilai Matematikamu dapat apa (A-E) ? a Sangat memuaskan RUN Nilai Matematikamu dapat apa (A-E) ? E Sangat Kurang Diktat Kuliah Bahasa Komputer I halaman 32
Politeknik Elektronika Negeri Surabaya - ITS
RUN Nilai Matematikamu dapat apa (A-E) ? F Kamu salah masukkan data Perintah SELECT..CASE juga dapat digunakan untuk mengecek range nilai suatu variabel seperti terlihat pada contoh berikut ini : Program 3.10. REM Contoh Program menggunakan SELECT..CASE REM untuk mengecek range nilai suatu variabel REM Program ini untuk mengkonversi REM nilai angka ke nilai huruf INPUT "Masukkan nilai angka (0-100) ?",nilai SELECT CASE nilai CASE 0 TO 40 PRINT "E" CASE 41 TO 55 PRINT "D" CASE 55 TO 65 PRINT "C" CASE 66 TO 80 PRINT "B" CASE 81 TO 100 PRINT "A" CASE ELSE PRINT "Salah entri nilai" END SELECT RUN Masukkan nilai angka (0-100) ? 80 B RUN Masukkan nilai angka (0-100) ? 35 E RUN Masukkan nilai angka (0-100) ? 125 Salah entri nilai RUN Masukkan nilai angka (0-100) ? -10 Salah entri nilai RUN Masukkan nilai angka (0-100) ? 90.5 Salah entri nilai Diktat Kuliah Bahasa Komputer I halaman 33
Politeknik Elektronika Negeri Surabaya - ITS
Keterangan : Kelemahan perintah SELECT..CASE seperti pada contoh di atas adalah tidak dapat mendeteksi nilai yang berupa bilangan pecahan. Jadi misalnya pada saat menjalankan program di atas diinputkan nilai 75.5 maka program tidak akan menghasilkan output “B” tetapi akan menampilkan pesan “Salah entri nilai”. Perintah SELECT..CASE juga dapat diterapkan pada variabel bertipe string seperti pada contoh berikut ini : Program 3.11. CLS INPUT "Masukkan bilangan 1 : ",a INPUT "Masukkan bilangan 2 : ",b INPUT "Pilih operator : ",op$ SELECT CASE op$ CASE "^" ? a^b CASE "*" ? a*b CASE "/" ? a/b CASE "\" ?a\b CASE "+" ?a+b CASE "-" ? a-b CASE ELSE ? "Bukan operator" END SELECT RUN Masukkan bilangan 1 : 10 Masukkan bilangan 2 : 20 Pilih operator :* 200 RUN Masukkan bilangan 1 : 20 Masukkan bilangan 2 : 8 Pilih operator :/ 2.5 Diktat Kuliah Bahasa Komputer I halaman 34
Politeknik Elektronika Negeri Surabaya - ITS
RUN Masukkan bilangan 1 : 20 Masukkan bilangan 2 : 8 Pilih operator :\ 2 RUN Masukkan bilangan 1 : 20 Masukkan bilangan 2 : 8 Pilih operator :x Bukan operator Perintah SELECT CASE juga dapat mengecek apakah suatu string berada diantara suatu rangkaian string yang telah ditentukan, seperti terlihat pada contoh berikut ini : Program 3.12. CLS INPUT "Tekan sembarang tombol : ",tombol$ PRINT "Yang anda tekan adalah "; SELECT CASE tombol$ CASE "A" to "Z" ? "HURUF BESAR" CASE "a" to "z" ? "huruf kecil" CASE "0" TO "9" ? "angka" CASE "+","-","*","/","\",”^” ? "operator aritmatika" CASE ELSE ? "tombol lain-lain" END SELECT RUN Tekan sembarang tombol : D Yang anda tekan adalah HURUF BESAR RUN Tekan sembarang tombol : e Yang anda tekan adalah huruf kecil RUN Tekan sembarang tombol : * Yang anda tekan adalah operator aritmatika RUN Tekan sembarang tombol : 6 Yang anda tekan adalah angka Diktat Kuliah Bahasa Komputer I halaman 35
Politeknik Elektronika Negeri Surabaya - ITS
RUN Tekan sembarang tombol : ? Yang anda tekan adalah tombol lain-lain Dibanding perintah IF bertingkat, perintah SELECT CASE lebif efektif untuk menyelesaikan kasus-kasus yang mempunyai banyak kondisi karena bentuknya yang lebih ringkas, sederhana dan mudah dipelajari. Sebagai contoh, perintah SELECT CASE dapat digunakan untuk membuat program yang mempunyai beberapa pilihan menu seperti berikut ini : Program 3.13. CLS PRINT " MENU " PRINT "1. Menghitung luas segitiga" PRINT "2. Menghitung luas segi empat" PRINT "3. Menghitung luas lingkaran" PRINT “4. Menghitung keliling lingkaran” INPUT "Pilih (1-4) : ",pilih SELECT CASE pilih CASE 1 INPUT "Masukkan alas : ",alas INPUT "Masukkan tinggi :",tinggi Luas = alas * tinggi /2 ? "Luas segitiga = ";luas CASE 2 INPUT "Masukkan panjang : ",panjang INPUT "Masukkan lebar : ",lebar Luas = panjang * lebar ? "Luas segi empat = ";luas CASE 3 INPUT "Masukkan jari-jari : ",jari Luas = 3.14 * jari * jari ? "Luas lingkaran = ";luas CASE 4 INPUT "Masukkan jari-jari : ",jari Kll = 2 * 3.14 * jari ? "Keliling lingkaran = ";kll CASE ELSE ? “Pilihan hanya 1 s/d 4” ? “Anda salah memilih angka” END SELECT Diktat Kuliah Bahasa Komputer I halaman 36
Politeknik Elektronika Negeri Surabaya - ITS
RUN MENU 1. Menghitung luas segitiga 2. Menghitung luas segi empat 3. Menghitung luas lingkaran 4. Menghitung keliling lingkaran Pilih (1-4) : 1 Masukkan alas : 10 Masukkan tinggi :5 Luas segitiga = 25 RUN MENU 1. Menghitung luas segitiga 2. Menghitung luas segi empat 3. Menghitung luas lingkaran 4. Menghitung keliling lingkaran Pilih (1-4) : 3 Masukkan jari-jari : 10 Luas lingkaran = 314
Diktat Kuliah Bahasa Komputer I halaman 37