BAHASA PEMROGRAMAN BASIC dengan Quick BASIC
Oleh : Hendra, ST.
Modul 1
DASAR-DASAR QBASIC
Bahasa BASIC dibuat oleh John G.Kemmeny dan Thomas E.Kurtz lebih
dari 20 tahun yang lalu dan merupakan bahasa tingkat tinggi yang
relatif mudah dipelajari dan dimengerti.
Dalam perkembangannya , Bahasa BASIC dikembangkan dalam dua
jenis, yaitu interpreter dan compiler. Interpreter seperti GW-
BASIC pada sistem operasi MS-DOS, maupun BASICA pada sistem
operasi PC-DOS, sedangkan salah satu compilernya yang terkenal
adalah Quick BASIC yang dilengkapi dengan sistem pemrograman
yang terstruktur, Quick Library, on-line help yang terpadu,
editor yang efisien (bisa merapikan teks serta memberitahukan
kesalahan syntax penulisan suatu perintah)
MENGAKTIFKAN QUICK BASIC
Untuk mengaktifkan Quick BASIC diperlukan sistem Quick BASIC yang
minimal terdiri dari file QB.EXE/QBasic.EXE. Jika kita telah
memiliki file tersebut tinggal diberi perintah QB pada Dos
Prompt.
Contoh
A>QB <Enter>
atau
A>QBasic <Enter>
Setelah pemberian perintah tersebut, pemakai akan dihadapkan
kepada suatu editor sebagai tempat pengetikan program yang akan
dikembangkan. Dibagian atas editor terdapat perintah menu yang
dapat diaktifkan dengan Tombol Alt disertai huruf depan dari
masing-masing pilihan.
File
/------------------\
| New Program | memulai program baru
| Open Program... | memuat program dari diskette ke RAM
| Save | menyimpan program ke diskette (file *.BAS)
| Save As... | menyimpan program ke nama yang lain
|------------------|
| Print... | mencetak program ke printer
|------------------|
| Exit | keluar ke Dos permanen
\------------------/
Edit
/----------------------\
| Undo Alt+Backspace | membatalkan perubahan terakhir
| Cut Shift+Del | memotong tulisan Blok ke ClipBoard
| Copy Ctrl+Ins | menduplikasi tulisan Blok ke ClipBoard
| Paste Shift+Ins | menyisip ClipBoard ke posisi Kursor
| Clear Del | menghapus tulisan yang di Blok
|----------------------|
| New SUB... |
| New FUNCTION... |
\----------------------/
Options
/-----------------\
| Display... | mengatur tampilan layar
| Help Set Path | mengatur default Dos Path
| Syntax Checking | mengatur keaktifan pemeriksaan Syntax
\-----------------/
Run
/---------------------\
| Start Shift+F5 | menjalankan program yang aktif
| Restart | mereset memory program
| Continue F5 | melanjutkan program yang terhenti
\---------------------/
MEMBUAT PROGRAM PADA QUICK BASIC
Apa yang dimaksud dengan pemrogram komputer ?
Pemrograman komputer berarti anda memberitahukan kepada komputer
ada yang anda ingin dia lakukan. Untuk memberitahukan komputer
apa yang harus dia lakukan, anda membutuhkan kata-kata khusus
(special words). Kata-kata ini disebut sebagai kata-kata kunci
(key words). Ketika anda menempatkan kata-kata kunci ini dalam
program anda sehingga kelihatan seperti kode khusus (special
code) yang disebut sebagai CODE dan pekerjaan menulis program
disebut CODING.
KATA, DATA, PERINTAH, dan FUNGSI BANTU merupakan komponen utama
suatu program yang saling berinteraksi. Pembuatan program dalam
Quick BASIC tidak terlepas dari keempat komponen di atas dalam
baris-baris perintah yang berkapasitas maksimum 256 character
yang mencakup identitas baris, perintah, dan kata-kata(Remark).
Identitas baris bisa berupa nomor baris (0-65529) [menjaga
kompatibilitas dengan GWBASIC maupun BASICA], dan bisa berupa
label dengan ketentuan :
- Maksimum 40 character, dimulai dengan huruf A..Z, diakhiri
dengan tanda :
- huruf besar/kecil sama, tidak sama dengan reserved word, dan
tidak pakai spasi
Setiap proses yang berhubungan dengan pengolahan data biasanya
memerlukan tempat penampung sementara dalam memory yang disebut
variabel dan dalam pengolahannya diperlukan operator dan fungsi
bantu.
Jenis Type Variabel pada Quick Basic :
/--------------------------------------------------------------------------\
|Data Type |Suffix|Maximum |Minimum | Size|
|--------------------------------------------------------------------------|
| | | |
|Strings | $ | 32,767 chars. | 0 chars. | |
|Integers | % | 32,767 |-32,768 | 2 |
|Long Integers | & | 2,147,483,647 |-2,147,483,648 | 4 |
|Single (7-digit) precision | ! |+3.402823 E+38 |+1.401298 E-45 | 4 |
_ _
|Double (15-digit) precision| # |+1.7976931 D+308|+4.940656 D-324 | 8 |
_ _
|User-Defined Data Types |----------------------------------------------/
\---------------------------/
Nama variabel juga memiliki ketentuan antara lain :
- Maksimum 40 character, diawali dengan huruf A..Z, diakhiri
dengan $, %, &, !, # untuk menunjukan type
- Tidak boleh sama dengan reserved word, tidak boleh pakai spasi
dan spesial character.
Operator pada Quick BASIC dibagi atas 5 jenis, antara lain :
1. Arithmetic operators : melakukan tugas perhitungan
/--------------------\ /----------------------------\
|Operator|Kegunaan | |Operator|Kegunaan |
|--------------------| |----------------------------|
| |
| ^ | Pangkat | | \ | Pembagian integer |
| - | Negatif | | MOD | Sisa bagi |
| * | Perkalian | | + | Penjumlahan |
| / | Pembagian | | - | Pengurangan |
\--------------------/ \----------------------------/
2. Relational operators : membandingkan strings dan nilai numerik
/--------------------------------------\
|Operator|Kegunaan |
|--------------------------------------|
| = | Sama dengan |
| <> | Tidak sama dengan |
| < | Lebih kecil |
| > | Lebih besar |
| <= | Lebih besar atau sama dengan|
| >= | Lebih kecil atau sama dengan|
\--------------------------------------/
Relational operators akan menghasilkan dua kemungkinan nilai
yaitu -1 jika benar dan 0 jika salah.
3. Logical operators : test kondisi dan manipulasi bits
/-----------------------------------------------------\
|Expresi1|Expresi2| NOT | AND | OR | XOR | EQV | IMP |
|-----------------------------------------------------|
| | | | | | |
| T | T | F | T | T | F | T | T |
| T | F | F | F | T | T | F | F |
| F | T | T | F | T | T | F | T |
| F | F | T | F | F | F | T | T |
\-----------------------------------------------------/
Functional operators : operator pelengkap
String operators : mengabung (+), dan membandingkan String
PERINTAH DASAR INPUT OUTPUT
Komputer hanya melaksanakan apa yang diperintahkan pemrogram.
Jadi, dalam membuat program untuk menyelesaikan suatu masalah,
kita harus tahu cara penyelesaiannya. Untuk itu diperlukan tahap-
tahap dalam menyelesaikan masalah tersebut.
INPUT dan OUTPUT merupakan awal dan akhir pengolahan suatu
data. Tanpa proses INPUT, kita tidak dapat memperoleh data untuk
diolah dan data-data yang telah selesai diolah tidak akan berarti
tanpa proses OUTPUT.
Syntax :
INPUT [;]["Prompt"{,|;}], Var list
PRINT [expresion list {,|;}]
Contoh 1 :
REM Program mencari Isi Bujursangkar
INPUT "MASUKKAN SISI BUJURSANGKAR :",S
ISI = S * S
PRINT "ISI DARI BUJURSANGKAR ADALAH :",ISI
END
Contoh 2 :
REM Program Isi Data
INPUT "MASUKKAN NAMA ANDA ";NM$
INPUT "MASUKKAN UMUR ANDA ";UR%
INPUT "MASUKKAN TGL,BLN,THN HARI INI ";TG%,BL%,TH%
PRINT "NAMA : ";NM$
PRINT "UMUR : ";UR%
PRINT "TANGGAL : ";TG%
PRINT "BULAN : ";BL%
PRINT "TAHUN : ";TH%
END
Catatan :
Untuk memberi keterangan pada program dapat digunakan REM atau '
LATIHAN
1. Aktifkan QBasic.EXE, dan anda akan dihadapkan pada suatu
WELCOME dialog box, tekan Esc untuk mengabaikannya. Selanjutnya
anda akan melihat lingkungan kerja QBasic yang terbagi atas dua
bagian : Bagian atas adalah "Jendela Editor" dan Bagian bawah
adalah "Jendela Immedietly".
2. Perhatikan letak kursor sekarang (pada Jendela Editor), tekan
function key (F6) untuk mengaktifkan Jendela Immedietly, dan (F6)
sekali lagi untuk sebaliknya.
3. Ketiklah ekspresi berikut pada jendela immedietly dengan
diawali perintah print (?).
Contoh :
1+2
diketik sebagai
? 1 + 2
Ekspresi : Hasilnya ?
1 + 2 _____ Penjumlahan
2 - 1 _____ Pengurangan
2 * 3 _____ Perkalian
5 / 2 _____ Pembagian
5 \ 2 _____ mengapa ? ____________ Pembagian bulat
5 Mod 2 _____ mengapa ? ____________ Sisa bagi
3^2 _____ Pangkat
1+2*6^2/4-1 _____ Urutan operasi
(1+2)*6^2/4-1 _____ Prioritas operasi
Tuliskan kesimpulan anda tentang :
1. Pembagian bulat ____________________________________________
2. Sisa bagi __________________________________________________
3. Urutan operasi _____________________________________________
4. Prioritas operasi __________________________________________
1 > 2 _____ lebih besar
1 < 1 _____ lebih kecil
2 = 2 _____ sama dengan
2 >= 2 _____ lebih besar atau sama
1 <= 2 _____ lebih kecil atau sama
3 <> 3 _____ tidak sama dengan
Mengapa True (-1) dan False (0) ?
(1 > 2) and (2 = 2) _____ Operasi And
(1 > 2) and (1 < 2) _____ Operasi And
(1 < 2) and (2 = 2) _____ Operasi And
(3 <> 2) and (1 > 2) _____ Operasi And
(1 > 2) and (2 = 2) _____ Operasi Or
(1 > 2) and (1 < 2) _____ Operasi Or
(1 < 2) and (2 = 2) _____ Operasi Or
(3 <> 2) and (1 > 2) _____ Operasi Or
(1 > 2) Xor (2 = 2) _____ Operasi Xor
(1 > 2) Xor (1 < 2) _____ Operasi Xor
(1 < 2) Xor (2 = 2) _____ Operasi Xor
(3 <> 2) Xor (1 > 2) _____ Operasi Xor
(1 > 2) Eqv (2 = 2) _____ Operasi Eqv
(1 > 2) Eqv (1 < 2) _____ Operasi Eqv
(1 < 2) Eqv (2 = 2) _____ Operasi Eqv
(3 <> 2) Eqv (1 > 2) _____ Operasi Eqv
(1 > 2) Imp (2 = 2) _____ Operasi Imp
(1 > 2) Imp (1 < 2) _____ Operasi Imp
(1 < 2) Imp (2 = 2) _____ Operasi Imp
(3 <> 2) Imp (1 > 2) _____ Operasi Imp
Not (1 > 2) _____ Operasi Imp
Not (2 > 2) _____ Operasi Imp
Not (1 > 2) Or (2 = 2) And (3 < 2) ______ Urutan operasi
Tuliskan kesimpulan anda tentang urutan operasi pada operator
logika.
4. Ketiklah ekspresi berikut pada jendela immedietly :
A = 123
B = 1234567890
C% = 32767
D% = 100000 Overflow, mengapa ?
D& = 100000
E$ = "Indoprog"
F$ = 123 Type mismatch, mengapa ?
G = "hendra" Type mismatch, mengapa ?
H_1 = 123 expected : end-of-statement, mengapa ?
nilai ujian = 90 Syntax error, mengapa ?
next = 5 expected : variable or end-of-statement ?
cls = 6 expected : variable or end-of-statement ?
A% = 1.2 Berapa nilai A% ?
A% = 1.5 Berapa nilai A% ?
Tuliskan kesimpulan anda tentang variabel dan nama variabel
5. Ketiklah ekspresi berikut pada jendela immedietly dengan
diawali perintah print (?).
1 + 1 ______
1 + "100" Type mismatch, mengapa ?
"A" + "B" ______
Tuliskan kesimpulan anda operator pada type data.
6. Ketiklah statement berikut pada jendela immedietly
Print "Untuk kemajuan Indonesia"
Hasilnya : __________________________________
Print "Untuk","kemajuan","Indonesia"
Hasilnya : __________________________________
Print "Untuk";"kemajuan";Indonesia"
Hasilnya : __________________________________
Print "Untuk"
Print "Kemajuan"
Print "Indonesia"
Hasilnya : _____________
_____________
_____________
Print "Untuk";
Print "Kemajuan";
Print "Indonesia"
Hasilnya : __________________________________
Print 1,2,3
Hasilnya : __________________________________, mengapa ?
Print 1;2;3
Hasilnya : __________________________________, mengapa ?
Print tab(10),"Hendra";tab(30);"Wijaya"
Hasilnya : __________________________________, mengapa ?
Input nama$
print nama$
Hasilnya :? Hendra
__________________________________
Input "Masukkan nama :", nama$
print nama$
Hasilnya :Masukkan nama : Hendra
__________________________________
Input "Masukkan nama "; nama$
print nama$
Hasilnya :Masukkan nama ? Hendra
__________________________________
Input "Masukkan nama "; nama
print nama
Hasilnya : Masukkan nama ? Hendra
Redo from start, mengapa ?
6. Program anda yang pertama.
Aktifkan ke jendela Editor
Ketiklah CODE berikut :
REM Program saya yang pertama
CLS
PRINT "Hello semua"
END
Simpan CODE diatas ke file Bab1F.Bas (gunakan menu File Save)
Jalankan program diatas (gunakan menu Run Start atau tekan F5)
7. Program dengan proses input/output
Gunakan menu File New untuk memulai program baru
Ketiklah CODE berikut :
REM Program menghitung luas persegi panjang
CLS
INPUT "Masukkan sisi panjang :", panjang
INPUT "Masukkan sisi lebar :", lebar
LUAS = panjang * lebar
PRINT "Luas persegi panjang :", LUAS
END
Simpan CODE diatas ke file Bab1G.Bas
8. Buatlah program menghitung luas lingkaran.
9. Buatlah program konversi suhu Celcius ke Farenheit, Kelvin,
Reamur.
10. Beberapa perintah pengaturan INPUT OUTPUT
Pada tulisan ini tidak diberikan contoh untuk memancing
pertanyaan pada forum diskusi :).
CLS
Membersihkan layar dengan warna latar belakang
COLOR textcolor[,textbackground[,border]]
Mengatur warna tulisan, warna latar belakang, dan
warna border layar. Adapun nomor warna yang disediakan :
/----------------\ /----------------\ /----------------\ /------------------\
| # | Warna | | # | Warna | | # | Warna | | # | Warna |
|----------------| |----------------| |----------------| |------------------|
| | | |
| 0 | Hitam | | 4 | Merah | | 8 | Abu-abu | | 12 | Merah muda |
| 1 | Biru | | 5 | Magenta | | 9 | Biru muda | | 13 | Magenta muda|
| 2 | Hijau | | 6 | Brown | | 10 | Hijau muda| | 14 | Kuning |
| 3 | Cyan | | 7 | Putih | | 11 | Cyan muda | | 15 | Putih terang|
\----------------/ \----------------/ \----------------/ \------------------/
Warna tulisan dapat dibuat berkedip dengan menambahkan 16 pada
nomor warna
Warna latar belakang hanya dapat dipilih nomor 0 s/d 7
Warna border dapat dipilih 0 s/d 15
PRINT USING formatstring; expressionlist[{,|;}]
Mencetak text dan variabel dengan format tertentu
formatstring, ekspresi string yang mengatur format pencetakkan
dengan picture sebagai berikut :
/------------Characters Picture untuk mengatur format data numerik ------------\
| # Menentukan posisi digit | - Diletakan sesudah posisi digit |
| . Menentukan posisi Desimal | mencetak tanda untuk negatif |
| , Memunculkan pemisah ribuan,jutaan | $$ Mencetak $ pada posisi kosong |
| + Menentukan posisi tanda numerik | ** Mencetak * pada posisi kosong |
|^^^^ Mencetak dalam bentuk eksponensial| **$ Combinasi $ dan ** |
|-------------------Characters Picture untuk mengatur format data string-------|
| & Mencetak seluruh string | \ \ Mencetak n+2 character, dimana|
| ! Mencetak huruf pertama dari String | n adalah jumlah spasi \ \ |
\------------------------------------------------------------------------------/
WIDTH kolom,baris
Mengatur lebar text layar 40 atau 80 kolom dan pada monitor EGA
atau VGA mengatur jumlah baris layar 25,43,50 atau 60 (tergantung
pada jenis monitor)
LOCATE [row] [,[col] [,[cursor] [,start [,stop]]]]
Memindahkan kursor pada layar ke posisi baris dan kolom tertentu.
cursor, nilai 0 cursor off, nilai 1 cursor on
start, baris awal kursor 0 s/d 31
stop, baris akhir kursor 0 s/d 31
SPC(n)
Meloncat sejumlah n spasi pada saat pencetakan dengan perintah
print.
TAB(n)
Mencetak output ke kolom n yang ditentukan.
VIEW PRINT baris_teratas To baris_terbawah
Membatasi baris teratas dan terbawah layar untuk memunculkan
tulisan.
BAHASA PEMROGRAMAN BASIC dengan QBasic
Oleh : Hendra, ST.
Modul 2
STRUKTUR KENDALI IF
Struktur Kendali memegang peranan yang sangat penting dalam
pembuatan program dengan komputer, tanpa adanya struktur kendali
kita hanya dapat membuat program yang sederhana dimana prosesnya
hanya dijalankan dari baris pertama sampai selesai. Pada kasus-
kasus tertentu, ada kalanya baris tertentu tidak boleh
dilaksanakan apabila kondisi tidak dipenuhi, ataupun baris-baris
tertentu harus diulang sampai suatu kondisi terpenuhi.
TEST PILIHAN
Dengan perintah test pilihan seorang programer dapat menentukan
jalur-jalur proses yang harus dikerjakan oleh komputer
berdasarkan logika tertentu.
1. Pilih Tambahan
If ekspresi logika Then
Statement
...
End If
Berfungsi menentukan apakah kondisi (ekspresi logika) memenuhi
syarat untuk melaksanakan Statement-Statement yang di samping IF
Then ataupun berada dalam Block IF Then-End If.
Contoh :
PTKP = 240000
If Nikah$ = "Y" Then
PTKP = PTKP + 120000
End If
Keterangan : Jika status nikah adalah "Y" (Ya), maka PTKP
(Penghasilan Tidak Kena Pajak) ditambah 120000
2. Pilih Antara Dua
IF ekspresi logika Then
Statement1
...
Else
Statement2
...
End If
Berfungsi menentukan Block Statement mana yang akan dilaksanakan
komputer, jika ekspresi logika menghasilkan nilai Benar maka
Statement1 akan dilaksanakan dan sebaliknya dengan Statement2.
Contoh :
If JlhAnak > 3 Then
PTKP = PTKP + (3 * 120000)
Else
PTKP = PTKP + (JlhAnak * 120000)
End If
Keterangan : Jika Jumlah Anak diatas 3 Orang, maka PTKP ditambah
360000, sebaliknya adalah JlhAnak dikali 120000.
3. Pilih Antara Banyak
IF ekspresi logika 1 Then
Statement1
...
ElseIF ekspresi logika 2 Then
Statement2
...
Else
Endif
Berfungsi menentukan Block statement yang mana akan dijalankan
oleh komputer sesuai dengan ekspresi logika yang menghasilkan
nilai benar.
Contoh :
PKP = Penghasilan - PTKP ' Penghasilan Kena Pajak 1 Bulan
PKPT = PKP * 12 ' Penghasilan Kena Pajak 1 Tahun
If PKPT <= Then
PPH = 0
ElseIF PKPT <= 25000000 Then
PPH = PKP * 0.05
ElseIF PKPT <= 50000000 Then
PPH = 1250000 + (PKPT-25000000)* 0.1
ElseIF PKPT <= 100000000 Then
PPH = 1250000 + 2500000 + (PKPT-50000000)*0.25
ElseIF PTKP <= 200000000 Then
PPH = 1250000 + 2500000 + 7500000 + (PKPT-100000000)*0.25
Else
PPH = 1250000 + 2500000 + 7500000 + 25000000 + (PKPT-
100000000)*0.35
End If
PPHB = PPH / 12 ' Pajak Penghasilan Bulan Tersebut
Keterangan : PPH dihitung berdasarkan PKPT
atau
Select Case Variabel
Case ekspresi 1
Statement1
...
Case ekspresi 2
Statement2
...
...
Case Else
...
End Select
Contoh :
Select Case PKPT
Case <= 0
PPH = 0
Case <= 25000000
PPH = PKP * 0.05
Case <= 50000000
PPH = 1250000 + (PKPT-25000000)* 0.1
Case <= 100000000
PPH = 1250000 + 2500000 + (PKPT-50000000)*0.15
Case <= 200000000
PPH = 1250000 + 2500000 + 7500000 + (PKPT-100000000)*0.25
Case ELSE
PPH = 1250000 + 2500000 + 7500000 + 25000000 + (PKPT-
100000000)*0.35
End Select
Contoh Lain :
Input "Masukkan Hari (1-7)", Hari
Select Case Hari
Case 1
Print "Senin"
Case 2
Print "Selasa"
Case 3
Print "Rabu"
Case 4
Print "Kamis"
Case 5
Print "Jumat"
Case 6
Print "Sabtu"
Case 7
Print "Minggu"
Case Else
Print "Tidak ada"
End Select
TUGAS
1. Buatlah program perhitungan Pajak Penghasilan Perorangan
untuk penghasilan bulanan !
http://www.pajak.go.id/UU/17-UU17TH00.doc
BAHASA PEMROGRAMAN BASIC dengan Quick BASIC
oleh : Hendra, ST.
Modul 3
STRUKTUR KENDALI PERULANGAN
LOOPING
Salah satu kelebihan komputer daripada manusia adalah ia tidak
pernah bosan terhadap tugas-tugas rutin. Inilah yang menyebabkan
komputerisasi selalu diterapkan terhadap tugas-tugas yang rutin.
1 Looping Counter
Digunakan untuk proses berulang yang jumlah perulangannya
ditentukan berdasarkan perhitungan (sistem counter).
FOR counter = mulai TO selesai [STEP selisih]
Statement
...
NEXT [counter]
Contoh :
Mencetak nilai faktorial 7, dimana 7!=1x2x3x4x5x6x7
Fak = 1
For I = 2 To 7 Step 1
Fak = Fak * I ' Fak menjadi Fak * I
Next I
Print "Nilai faktorial 7 :", Fak
END
Mencetak 10 suku bilangan fibonanci yang pertama, dimana :
fibo(1) = 1
fibo(2) = 1
fibo(n) = fibo(n-1) + fibo(n-2)
sehingga hasilnya : 1,1,2,3,5,8,13,21,34,55
For I = 1 To 10 Step 1 ' Looping 10 kali
If I = 1 Then ' Jika suku ke 1
fKurangSatu = 1
Print 1
ElseIF I = 2 Then ' Jika suku ke 2
fKurangDua = 1
Print 1
Else ' Untuk suku ke n
fibo = fKurangSatu+fKurangDua
Print fibo
fKurangSatu = fKurangDua
fKurangDua = fibo
End IF
Next I
END
2 Looping Trapping
Perulangan jenis ini ditentukan berdasarkan kondisi tertentu.
Pemeriksaan diawal
DO [{WHILE | UNTIL} ekspresi logika]
Statement
...
LOOP
Contoh :
Mencari KPK dari dua bilangan
Input "Bilangan pertama :", pertama
Input "Bilangan kedua :", kedua
If pertama > kedua Then 'Jika bilangan pertama lebih besar
Lipat = pertama
Bagi = kedua
Else
Lipat = kedua
Bagi = pertama
End IF
N = 1
Do While ((Lipat*N) Mod Bagi) <> 0 'Kelipatan dinaikan jika
N = N + 1 'sisa bagi belum nol
Loop
Print "KPK kedua bilangan adalah :", (Lipat*N)
END
NB : operator matematika MOD adalah untuk sisa bagi
Pemeriksaan diakhir
DO
[statementblock]
LOOP [{WHILE | UNTIL} ekspresi logika]
Contoh :
Program password, program akan terus menanyakan password sampai
jawabannya benar.
password$ = "INDOPROG"
DO
Color 7,0
Print "Password";
Color 0,0
Input pass$
LOOP until pass$ = password$
Print "Selamat bergabung !"
END
Perintah EXIT DO dapat digunakan untuk meninggalkan proses DO -
LOOP
Contoh :
N = 1
password$ = "INDOPROG"
DO
Color 7,0
If N > 3 Then
EXIT DO
End IF
Print "Password";
Color 0,0
Input pass$
N = N + 1
LOOP until pass$ = password$
If N > 3 Then
Print "Akses ditolak !"
Else
Print "Selamat bergabung !"
End IF
END
TUGAS
1. Buatlah program menentukan bilangan yang dimasukkan merupakan
bilangan PRIMA atau tidak.
2. Buatlah program mencetak tabel pertumbuhan simpanan anda di
bank.
Jumlah simpanan ?
Suku bunga bank/tahun ?
Lama simpanan ?
Tabel pertumbuhan
------------------------------------------------------------
Tahun Awal Tahun Bunga/tahun Pajak Akhir Tahun
------------------------------------------------------------
1
2
.
.
.
Awal Tahun 1 = Jumlah simpanan
Bunga/tahun = Awal Tahun * Suku bunga bank/100
Pajak dihitung berdasarkan :
Jika Awal Tahun + Bunga/tahun > 7500000
Pajak = 20% dari Bunga/tahun
Jika tidak
Pajak = 0
Akhir Tahun = Awal Tahun + Bunga/tahun - Pajak
Awal Tahun ke n = Akhir Tahun n – 1
BAHASA PEMROGRAMAN BASIC dengan Quick BASIC
Oleh : Hendra, ST.
MODUL 4
VARIABEL ARRAY
Array adalah sekumpulan data yang menggunakan nama variabel yang
sama. Tiap-tiap nilai dari array disebut sebagai elemen dan memiliki
index. Setiap elemen array adalah sebuah variabel juga.
Menciptakan Variabel Array
Untuk menciptakan variabel array dapat menggunakan perintah :
DIM variable[(subscripts)] [AS type]
Contoh :
DIM A(20) As Integer
Akan menciptakan variabel array yang bernama A yang memiliki 20
elemen (mulai dari index 0 s/d 19), yang masing-masing dapat
menampung data integer, dan memiliki nilai awal 0 (nol).
Menggunakan Variabel Array
Penggunakan Variabel Array sama saja dengan variabel biasa, cuma
kita perlu menyebutkan nomor index elemen yang diinginkan.
Contoh :
A(0) = 100
A(1) = 200
A(2) = 300
Akan mengisi nilai 100 ke elemen pertama, 200 ke elemen kedua,
dan 300 ke elemen ketiga.
Catatan : Elemen pertama dari array dimulai dengan nomor index 0
Contoh lain :
For I = 0 To 19 Step 1
Input "Masukkan Nilai :",A(I)
Next I
Akan menanyakan kepada pemakai untuk mengisi elemen pertama s/d
elemen keduapuluh.
Contoh lain :
Total = 0
For I = 0 To 19 Step 1
Total = Total + A(I) 'A(0), A(1), ..., A(19)
Next I
Print "Total :",Total
Akan menjumlahkan nilai elemen pertama s/d elemen keduapuluh ke
variabel total.
Dalam Quick Basic, kita mengenal dua jenis variabel array, yakni
dynamic array dan static array. Static array dapat kita bentuk
tanpa perintah khusus, tetapi terbatas sampai nomor index ke 10
saja tanpa dipengaruhi jumlah dimensi.
Contoh :
For I = 0 To 10 Step 1
Input "Masukkan Nilai :",B(I)
Next I
Total = 0
For I = 0 To 10 Step 1
Total = Total + B(I)
Next I
Print "Total :",Total
Program diatas dapat dijalankan tanpa kesalahan walaupun variabel
array B tidak dideklarasikan sebagai variabel array. Hal ini
karena kita menggunakan Static array yang otomatis disediakan
oleh Quick Basic, tetapi hanya terbatas sampai nomor index ke 10
saja.
Pada defaultnya index awal dari variabel array adalah dimulai
dari 0, tetapi hal ini bisa diubah dengan perintah OPTION BASE 1.
Contoh :
OPTION BASE 1
DIM A(30)
For I = 1 To 30
Input "Masukkan Nilai :",A(I)
Next I
Index awal dari variabel array dapat juga ditentukan pada saat
deklarasi.
Contoh :
DIM C(5 To 15)
For I = 5 To 15 Step 1
Input "Masukkan Nilai :",A(I)
Next I
Akan menghasilkan variabel array C, dengan elemen pertama
memiliki nomor index 5, dan elemen terakhir memiliki nomor index
15.
Anda dapat juga menggunakan fungsi LBound dan UBound untuk
mendapatkan index awal dan index akhir dari suatu array.
Contoh :
DIM C(5 To 15)
For I = LBound(C) To UBound(C) Step 1
Input "Masukkan Nilai :",A(I)
Next I
Static Array dan Dynamic Array
Pada QBasic, semua array yang dideklarasikan dengan numerik
adalah Static Array, dan array yang dideklarasikan dengan
variabel adalah Dynamic Array.
Contoh :
DIM D(30)
D adalah variabel Static Array
E = 30
DIM F(E)
F adalah variabel Dynamic Array, karena jumlah elemennya
ditentukan dengan menggunakan variabel E, dalam hal ini 30.
Perbedaan Static Array dan Dynamic Array :
1. Memory Static Array dialokasikan oleh QBasic pada awal
eksekusi program dimulai, sedangkan Memory Dynamic Array
dialokasikan secara dinamis pada saat eksekusi program
berlangsung.
2. Static Array tidak dapat dideklarasi ulang, sedangkan Dynamic
Array dapat dideklarasikan ulang dengan perintah REDIM
Contoh :
DIM A(10)
REDIM A(20)
Akan terjadi kesalahan, karena variabel A adalah Static Array.
B = 10
DIM C(B)
REDIM C(30)
Tidak terjadi kesalahan.
Catatan : REDIM akan menghapus isi array, dan mendimensi ulang
jumlah elemennya.
3. Static Array tidak dapat dihapus dari memory, sedangkan
Dynamic Array dapat dihapus dari memory dengan perintah ERASE.
OPTION BASE 1
DIM A(3)
A(1) = 1
A(2) = 2
A(3) = 3
ERASE A
Print A(1) ' akan tercetak 0
Print A(2) ' akan tercetak 0
Print A(3) ' akan tercetak 0
Karena perintah Erase hanya mereset isi variabel Static Array ke
0 (jenis numeric) atau "" (Null) (jenis string), sedangkan
Variabel dan dimensinya tetap dipertahankan.
Contoh Lain :
OPTION BASE 1
B = 3
DIM C(B)
C(1) = 1
C(2) = 2
C(3) = 3
ERASE C
Print C(1) ' terjadi kesalahan subscript out of range
Karena variabel array C telah dihapus dari memory.
Variabel Array Multi Dimensi
Anda dapat membentuk variabel array 2 atau 3 dimensi dengan
perintah dim.
Contoh :
DIM A(10,10)
Akan membentuk array 11 baris (0 s/d 10), 11 kolom (0 s/d 10)
(121 elemen)
Cara pemakaian array Multi Dimensi sama saja dengan array 1
dimensi yaitu perlu disebutkan nomor indexnya masing-masing.
Contoh :
A(2,2) = 5
Akan mengisi nilai 5 ke elemen baris 3 kolom 3 dari Array dua
dimensi A. (ingat index dimulai dari 0, kecuali dengan pernyataan
OPTION BASE 1)
Bahan Latihan
1. Susun sebuah program dengan ketentuan berikut :
- program menanyakan jumlah data
- program menerima data sesuai dengan jumlah data satu persatu
- program mengurut data tersebut secara ascending
- program menghitung :
1. data terbesar
2. data terkecil
3. rata-rata
4. median
2. Buatlah program faktur sederhana dengan ketentuan :
- program menanyakan Tanggal dan Penjual
- program menanyakan
1. Jumlah
2. Satuan
3. Nama barang
secara berulang sampai jumlah yang dimasukkan 0 (nol)
- hasil menghasilkan tampilan faktur berikut :
FAKTUR PENJUALAN
Tanggal : 01-Jan-1995
Penjual : Budianto
--------------------------------------------------------
No. Jlh Satuan Nama Barang Harga @ Jumlah
========================================================
1. 30 Kotak Diskette 3M 15,000.00 450,000.00
2. 10 Buah Pita printer 7,000.00 70,000.00
========================================================
Total : 520,000.00
--------------------------------------------------------
BAHASA PEMROGRAMAN BASIC dengan Quick BASIC
Oleh : Hendra, ST.
Modul 5
FUNGSI BANTU BAWAAN
Fungsi bantu adalah fasilitas yang disediakan untuk membantu
programmer dalam mengembangkan program. Dengan adanya fungsi
bantu bawaan programmer tidak perlu mengembangkan program untuk
melakukan hal yang sama.
Contoh :
Pada Qbasic telah tersedia fungsi bantu Sinus yang dapat
digunakan untuk mendapatkan nilai sinus dari suatu sudut dalam
radian.
Dim B As Double
B = Sin(30 * 3.14/180)
Akan mengisi nilai sinus sudut 30 derajat ke variabel B
Tanpa mengunakan fungsi bantu Sinus, programmer dapat
mengembangkan program sendiri untuk melakukan hal yang sama,
tetapi hal ini tentu saja menuntut pengetahuan yang lebih
mendalam.
Contoh :
Dengan menggunakan Ekspansi Trigonometris, suatu nilai Sinus
dapat diturunkan.
DIM S AS DOUBLE
DIM Sinus AS DOUBLE
S = 30 * 3.14 / 180 ' Sudut 30 derajat dalam radian
F = 1
Tanda = 1
Sinus = S
FOR I = 2 TO 11
F = F * I ' Menghitung nilai faktorial
IF I MOD 2 = 1 THEN ' Suku 3, 5, 7, 9, 11
Tanda = -Tanda ' Tanda -1, 1, -1, 1, dst
Sinus = Sinus + (S ^ I / F * Tanda)
END IF
NEXT I
B = Sinus
Potongan program diatas akan menghasilkan nilai Sinus 30 derajat
ke variabel B.
Dengan menggunakan fungsi bantu bawaan yang telah tersedia
pekerjaan programmer akan lebih terfokus pada program yang akan
dikembangkan.
FUNGSI BANTU STRING
LEFT$ (stringexpression,n)
Mengembalikan sejumlah karakter string dari suatu data string
dari sebelah kiri.
Contoh :
Print Left$("IndoProg",4) ' Akan mencetak Indo
RIGHT$ (stringexpression,n)
Mengembalikan sejumlah karakter string dari suatu data string
dari sebelah kanan.
Contoh :
Print Right$("IndoProg",4) ' Akan mencetak Prog
MID$(stringexpression,start[,length])
Mengembalikan sejumlah karakter string dari suatu string mulai
posisi tertentu.
Contoh :
Print Mid$("1234567890",3,4) ' Akan mencetak 3456
Print Mid$("1234567890",3) ' Akan mencetak 34567890
LTRIM$(stringexpression)
Mengembalikan string dengan menghilangkan spasi sebelah kiri.
Contoh :
A$ = " 100"
B$ = LTRIM$(A$)
Print A$ 'Akan mencetak 100
Print B$ 'Akan mencetak 100
RTRIM$(stringexpression)
Mengembalikan string dengan menghilangkan spasi sebelah kanan.
INSTR([start,]stringexpression1,stringexpression2)
Mencari posisi suatu string pada string lain (0 jika tidak
ditemukan).
Contoh :
Print INSTR("ABCD","B") 'Akan mencetak 2
Print INSTR(4,"ABCDABCD","A") 'Akan mencetak 5
Print INSTR("ABCD","a") 'Akan mencetak 0
LCASE$(stringexpression)
Mengembalikan suatu string yang telah diubah ke huruf kecil.
Contoh :
Print LCase$("IndoProg") 'Akan mencetak indoprog
UCASE$(stringexpression)
Mengembalikan string yang telah dibuat huruf besar.
Contoh :
Print UCase$("IndoProg") 'Akan mencetak INDOPROG
SPACE$(n)
Mengembalikan string yang berisi sejumlah spasi.
Contoh :
Print Space$(30), "IndoProg"
STRING$(m,n) atau STRING$(m,stringexpression)
Mengembalikan string yang mengandung sejumlah character yang
berulang.
Contoh :
Print String$(10,65) ' Akan mencetak AAAAAAAAAA
Print String$(10,"A") ' Akan mencetak AAAAAAAAAA
LEN(stringexpression)
Mengembalikan jumlah huruf suatu data string.
Contoh :
Print Len("Indonesia Programmer") ' Akan mencetak 20
FUNGSI BANTU KONVERSI
STR$(numeric-expression)
Mengembalikan string dari suatu expresi numeric
Contoh :
A = 100
B$ = Str$(A) 'B berisi "100"
VAL(stringexpression)
Mengembalikan numeric dari suatu expresi string
Contoh :
B$ = "100"
A = Val(B) 'A berisi 100
C = "IndoProg"
D = Val(C) 'D berisi 0
ASC(stringexpression)
Mengembalikan nilai ASCII dari suatu character.
Contoh :
Print Asc("A") 'Akan mencetak 65
CHR$(n)
Mengembalikan character ASCII n.
Contoh :
Print Chr$(65) 'Akan mencetak "A"
FUNGSI BANTU ARITMATIKA
SIN(numeric-expression)
COS(numeric-expression)
TAN(numeric-expression)
ATN(numeric-expression)
Mengembalikan nilai trigonometri.
numeric-expression dinyatakan dalam radian (sudut*3.14/180).
Cukup jelas
EXP(numeric-expression)
Mengembalikan nilai exponential.
Cukup jelas
LOG(numeric-expression)
Mengembalikan nilai logaritma natural.
Cukup jelas
SQR(numeric-expression)
Mengembalikan nilai akar pangkat dua.
Contoh :
Print Sqr(9) 'Akan mencetak 3
INT(numeric-expression)
Mengembalikan nilai bulat dari suatu desimal.
Contoh :
Print Int(3.5) 'Akan mencetak 3
FUNGSI BANTU RANDOM
RANDOMIZE [integer-expression]
RANDOMIZE TIMER
Memberikan bibit kepada nilai random.
RND
Mengembalikan nilai pseudo random antara 0 s/d < 1
Contoh :
Randomize Timer
Print Int(RND*100) 'Akan mencetak suatu bilangan
'random 0 s/d 99
FUNGSI BANTU WAKTU
DATE$
Mengembalikan tanggal system dalam string dengan format mm-dd-
yyyy.
TIME$
Mengembalikan waktu komputer dalam string dengan format hh:mm:ss.
TIMER
Mengembalikan jumlah detik sejak pukul 00:00:00
TIMER dapat digunakan pada perintah RANDOMIZE TIMER.
Contoh :
'PROGRAM TEBAK ANGKA
CLS
RANDOMIZE TIMER :HASIL = INT(RND*100)+1
N = 0
DO
N = N + 1
INPUT "MASUKKAN TEBAKAN ANDA (1-100)";TEBAK
IF TEBAK > HASIL THEN PRINT "TERLALU BESAR"
IF TEBAK < HASIL THEN PRINT "TERLALU KECIL"
LOOP UNTIL HASIL=TEBAK
PRINT "TEBAKAN ANDA SEBANYAK ";N;" KALI"
END
Latihan :
1. Bandingkan hasil Sinus dengan fungsi bantu Sin dan Ekspansi
Trigonometris.
2. Buatlah program putar String "Indonesia Programmer" dari kiri
ke kanan.
3. Bagaimana kalau putar dari kanan ke kiri.
4. Cobalah program tebak angka, berapa kali anda mampu
selesai menebaknya?