MAKALAH
TENTANG QBASIC

Nama : - Kukuh Prasetyo
- Kenzi Wira Ahmadi
Kelas : 1SA06
Tanggal : 26 November 2013
Ketua assisten : Anggi S.
Assisten baris : Dwi Fitrian
Laboratorium Sistem Informasi
Universitas Gunadarma
2013
1.DASAR-DASAR QBASICBahasa 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
A>Qbasic
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 ‘
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.
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
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
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)
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 HASIL THEN PRINT “TERLALU BESAR”
IF TEBAK < HASIL THEN PRINT “TERLALU KECIL”
LOOP UNTIL HASIL=TEBAK
PRINT “TEBAKAN ANDA SEBANYAK “;N;” KALI”
END
6.FUNGSI CIPTAAN DAN SUB RUTIN
Fungsi Ciptaan
Fungsi-fungsi bawaan yang disediakan oleh QBasic adalah bersifat
umum, sehingga kadang-kadang programmer harus membuat fungsi
sendiri sesuai dengan kebutuhannya.
Misalnya :
Dalam mengembangkan program keuangan, seorang programmer akan
banyak membutuhkan fungsi-fungsi Time Value of Money seperti
Present Value, Future Value, Depresiasi dll.
QBasic menyediakan fasilitas bagi programmer yang ingin
mengembangkan fungsi ciptaannya sendiri. Adapun tata cara
penulisannya adalah sebagai berikut :
FUNCTION namafungsi[(parameterlist)] [STATIC]
[statementblock]
namafungsi = expression
[statementblock]
END FUNCTION
type data yang dikembalikan ditentukan oleh akhiran pada nama
tersebut(%, &, !, #, atau $) yang masing-masing adalah INTEGER,
LONG, SINGLE, DOUBLE dan STRING.
Contoh :
FUNCTION SLN#(cost AS double, salvage AS double, life AS single)
SLN# = (cost-salvage)/life
END FUNCTION
Fungsi diatas adalah fungsi ciptaan untuk menghitung depresiasi
dengan metode garis lulus.
Contoh Lain :
FUNCTION FV#(pv AS double, rate AS single, term AS integer)
Dim npv as double, i as integer
npv = pv
FOR i = 1 TO term STEP 1
npv = npv + npv*rate ‘nilai akhir = pokok + bunga
NEXT i
FV# = npv
END FUNCTION
atau dengan rumus pertumbuhan
FUNCTION FV#(pv AS double, rate AS single, term AS integer)
FV# = np*(1+rate)^term
END FUNCTION
Fungsi diatas adalah fungsi ciptaan untuk menghitung Future Value
dari suatu nilai uang, jika diketahui suku bunga per periode dan
jumlah periode yang diinginkan.
Contoh :
Misalnya anda memiliki uang Rp. 1.000.000 (satu juta), anda
menyimpannya ke Bank dengan suku bunga 10% per tahun, berapa uang
anda setelah disimpan 3 tahun ?
Catatan :
Pada Qbasic, fungsi ciptaan disimpan pada lokasi yang berlainnan
dengan program utama, untuk beralih ke program utama maupun
fungsi ciptaan anda dapat menggunakan tombol F2
Anda dapat menggunakan perintah EXIT FUNCTION untuk keluar dari
fungsi.
Contoh :
FUNCTION PRIMA! (bilangan AS LONG)
DIM i AS INTEGER
IF bilangan < 2 THEN
PRIMA! = 0 ‘semua bilangan < 2 bukan prima
ELSEIF bilangan < 4 THEN
PRIMA! = 1 ‘bilangan 2 dan 3 adalah prima
ELSE
i = 2 ‘bagi bilangan tersebut mulai
DO WHILE i 0 THEN
baca = angka$(a100, posisi) + “ratus”
END IF
IF a10 = 1 THEN ‘Sepuluh s/d Sembilanbelas
baca = baca + angka$(a10 * 10 + a1, posisi)
ELSE
IF a10 > 0 THEN ‘Duapuluh s/d Sembilanpuluh
baca = baca + angka$(a10, posisi) + “puluh”
END IF
IF a1 > 0 THEN ‘Satu s/d Sembilan
baca = baca + angka$(a1, posisi)
END IF
END IF
ratus$ = baca
END FUNCTION
FUNCTION terbilang$ (x AS LONG)
DIM milyar AS INTEGER, juta AS INTEGER, ribu AS INTEGER, satu AS
INTEGER
DIM baca AS STRING
IF x = 0 THEN ‘Jika x = Nol
baca$ = angka$(0, 1) ‘Dibaca Nol
ELSE
milyar = x \ 1E+09 ‘Ambil bagian ratusan milyar
juta = (x MOD 1E+09) \ 1000000 ‘Ambil bagian ratusan juta
ribu = (x MOD 1000000) \ 1000 ‘Ambil bagian ratusan ribu
satu = x MOD 1000 ‘Ambil bagian ratusan
IF milyar > 0 THEN
baca = ratus$(milyar, 4) + “milyar”
END IF
IF juta > 0 THEN
baca = baca + ratus$(juta, 3) + “juta”
END IF
IF ribu > 0 THEN
baca = baca + ratus$(ribu, 2) + “ribu”
END IF
IF satu > 0 THEN
baca = baca + ratus$(satu, 1)
END IF
END IF
terbilang$ = baca
END FUNCTION
7.TYPE DATA RECORD
Record Type merupakan type ciptaan yang dibuat oleh pemakai
sesuai dengan tuntutan program. Record Type merupakan type
variabel yang terdiri dari kumpulan type-type standar Quick
Basic.
Mendeklarasikan suatu Record Type
Pada QBasic Record Type dapat dideklarasikan dengan penulisan
berikut :
Syntax :
Type nama
AS
AS
…
End Type
Contoh :
Type PESERTA
Nomor AS String*10
Nama AS String*20
Email AS String*30
Umur AS Integer
End Type
Mendeklarasikan type data PESERTA yang merupakan kumpulan dari
data Nomor, Nama, Email, dan Umur.
Mendeklarasikan Variabel Record Type
Untuk mendeklarasikan variabel berdasarkan Record Type tertentu
dengan menggunakan perintah DIM.
Contoh :
Dim DataPeserta As PESERTA
Mendeklarasikan variabel DataPeserta yang memiliki type PESERTA,
sehingga variabel DataPeserta memiliki komponen Nomor, Nama,
Email dan Umur.
Menggunakan Variabel Record Type
Pemakaian variabel Record Type sama saja dengan variabel biasa,
dan kita juga dapat menyatakan masing-masing komponennya.
Contoh :
Dim Peserta1 As PESERTA
Dim Peserta2 As PESERTA
Dim Temp As PESERTA
Peserta1.Nomor = 9224 ‘komponen Nomor
Peserta1.Nama = “Hendra” ‘komponen Nama
Peserta1.Email = “hendra@indoprog.com” ‘Komponen Email
Peserta1.Umur = 27 ‘Komponen Umur
Peserta2.Nomor = 9241 ‘komponen Nomor
Peserta2.Nama = “Limada” ‘komponen Nama
Peserta2.Email = “limada@hsbc.com” ‘Komponen Email
Peserta2.Umur = 26 ‘Komponen Umur
Record Type banyak digunakan dalam pengolahan data, dan random
file karena fleksibilitas dalam pemakaiannya. Contoh:
Temp = Peserta1
Peserta1 = Peserta2
Peserta2 = Temp
SWAP Peserta1, Peserta2
Menukar data Peserta1 dengan Peserta2 dan sebaliknya, tanpa perlu
menyebutkan sub komponennya. Contoh:
‘Program isi data siswa dan sortir
‘DEKLARASI RECORD TYPE SISWA
Type SISWA
NOINDUK AS STRING * 10
NAMA AS STRING * 15
TEORI AS SINGLE
PRAKTEK AS SINGLE
RATA AS SINGLE
End Type
Input “Masukkan jumlah siswa “;JS
Dim DSiswa(JS) AS SISWA ‘Deklarasi Array DSiswa
‘berdasarkan Record Type SISWA
‘MENGISI DATA
For I = 1 TO JS STEP 1
Print “RECORD KE -”;I
Input “NO.INDUK :”,DSISWA(I).NOINDUK
Input “NAMA :”,DSISWA(I).NAMA
Input “TEORI :”,DSISWA(I).TEORI
Input “PRAKTEK :”,DSISWA(I).PRAKTEK
DSISWA(I).RATA = (DSISWA(I).TEORI+DSISWA(I).PRAKTEK)/2
NEXT I
‘MENGURUT DATA BERDASARKAN NILAI RATA-RATA
For I = (JS-1) TO 1 STEP -1
Sempurna = 1
For J = 1 TO I
If DSISWA(J).RATA < DSISWA(J+1).RATA THEN
SWAP DSISWA(J),DSISWA(J+1)
Sempurna = 0
End If
Next J
If Sempurna = 1
I = 0
End If
Next I
CLS
Print ” HASIL UJIAN SISWA”
Print ” BASIC PROGRAMMING MEI 2001″
Print “——————————————————————-”
Print “NO.INDUK NAMA TEORI PRAKTEK RATA-RATA LULUS “
Print “——————————————————————-”
POLA$=”\ \ \ \ ###.## ###.## ###.## \ \ “
VIEW PRINT 4 TO 23
For I = 1 TO JS
IF DSISWA(I).RATA < 60 THEN LULUS$=”TIDAK” ELSE LULUS$ = “YA”
PRINT USING POLA$;DSISWA(I).NOINDUK;DSISWA(I).NAMA;DSISWA(I).TEORI;
DSISWA(I).PRAKTEK;DSISWA(I).RATA;LULUS$
Next I
END
8.PENGOLAHAN SEQUENTIAL FILE
File merupakan fasilitas penyimpanan data pada external storage
yang bersifat permanen, jika dibandingkan dengan penyimpanan ke
RAM yang sifatnya sementara. Dengan pemakaian file kita dapat
menghemat pemakaian RAM komputer yang memiliki jumlah yang
terbatas serta dapat melakukan dokumentasi untuk jangka waktu
yang panjang.
Pada QBasic pengolahan file dapat dibagi atas tiga jenis, yaitu :
1. SEQUENTIAL FILE
2. RANDOM FILE
3. BINARY FILE
Pada Sequential file (file urut) proses pengolahannya dilakukan
secara linier dari awal sampai akhir, tanpa bisa kembali kebagian
sebelumnya, kecuali proses dimulai lagi dari awal. Jadi dalam
pengolahan datanya bersifat first in first out, artinya pembacaan
data dari file ini harus dimulai dari data yang paling awal.
Pada umumnya pengolahan data yang menggunakan file sebagai media
INPUT maupun OUTPUT memiliki tiga tahap, yaitu :
1. Tahap membuka file (OPEN)
2. Tahap memproses (INPUT/OUTPUT)
3. Dan yang terakhir adalah tahap menutup file (CLOSE)
Membuka File SEQUENTIAL
Untuk membuka file sequential yang akan diproses dapat digunakan
penulisan sebagai berikut :
Syntax :
Open filename [FOR mode] AS [#]filenum
dimana mode terdiri dari :
INPUT, membuka file untuk proses INPUT
OUTPUT, membuka file baru untuk proses OUTPUT
APPEND, membuka file untuk untuk proses OUTPUT dimana data baru
ditambahkan pada bagian akhir.
Contoh :
Open “Siswa.Dat” For Append AS #1
Akan membuka Siswa.Dat sebagai OUPUT dimana data baru ditambahkan
pada bagian akhir. Jika file Siswa.Dat belum ada, maka akan
dibuat yang baru.
Proses INPUT/OUTPUT
Perintah proses INPUT/OUTPUT pada sequential file sangat
tergantung kepada bentuk perlakuan terhadap data. Untuk penulisan
yang berorientasi pada baris, anda dapat menggunakan perintah
PRINT, dan pembacaanya dapat menggunakan LINEINPUT. Penulisan
yang berorientasi kepada data, anda dapat menggunakan perintah
WRITE dan INPUT untuk proses pembacaannya.
Syntax :
PRINT #filenumber,[USING stringexpressin;]expression list
WRITE #filenumber[,expressionlist]
INPUT #filenumber, variablelist
LINEINPUT #filenumber, variable-string
Contoh :
Write #1, “920403024″,”Hendra”,80,90
menulis ke file nomor 1, dan data dapat dibaca kembali dengan
perintah :
Input #1,Nim$,Nama$,Teori,Praktek
Catatan :
Anda dapat menggunakan fungsi bantu EOF(filenumber) untuk
memeriksa apakah berada diposisi akhir file.
Proses CLOSE
Untuk menutup file dapat digunakan perintah CLOSE.
Syntax :
CLOSE #filenumber
Contoh :
CLOSE #1
menutup file nomor 1.
Contoh :
‘PROGRAM MENGISI DATA KE FILE SISWA.DAT
OPEN “SISWA.DAT” FOR APPEND AS #1
DO
PRINT “DATA SISWA KE -”;I
INPUT “NO.INDUK :”,NOINDUK$
IF NOINDUK$ “” THEN
INPUT “NAMA :”,NAMA$
INPUT “TEORI :”,TEORI
INPUT “PRAKTEK :”,PRAKTEK
WRITE #1,NOINDUK$,NAMA$,TEORI
ENDIF
LOOP UNTIL NOINDUK$ = “”
CLOSE #1
END
‘PROGRAM BACA DATA DARI SISWA.DAT DAN MENCETAK KE LAYAR
CLS
OPEN “SISWA.DAT” FOR INPUT AS #1
PRINT “——————————————————————-”
PRINT “NO.INDUK NAMA TEORI PRAKTEK RATA-RATA LULUS “
PRINT “——————————————————————-”
POLA$=”\ \ \ \ ###.## ###.## ###.## \ \ “
VIEW PRINT 4 TO 23
WHILE NOT EOF(1)
INPUT #1, NO_INDUK$,NAMA$,TEORI,PRAKTEK
RATA = (TEORI+PRAKTEK)/2
IF RATA < 60 THEN
LULUS$=”TIDAK”
ELSE
LULUS$ = “YA”
ENDIF
PRINT USING POLA$;NO_INDUK$;NAMA$;TEORI;PRAKTEK;RATA;LULUS$
WEND
CLOSE #1
END
9.PENGOLAHAN FILE ACAK
Pada file sequential pengolahan datanya bersifat FIFO, tetapi dalam pengolahan data kadang-kadang diperlukan proses pengolahan yang sifatnya acak sehingga pengolahannya dapat dilakukan dengan cepat dan sederhana.
File sequential banyak digunakan pada ekspor/impor data antar sistem dimana format pada sistem yang satu tidak dikenali oleh sistem lain, sehingga data dari suatu sistem perlu diekspor dalam bentuk teks, kemudian diimpor kembali oleh sistem lain. Pada pengolahan seperti ini tentu saja proses pengolahannya bersifat FIFO.
Pengolahan data yang membutuhkan pencarian, pengurutan dan perbaikan data tentu saja sulit menggunakan proses pengolahan FIFO, karena akan menggunakan sumber daya yang besar dan menjadi rumit. Pada pengolahan data seperti ini sangat dibutuhkan proses pemasukan maupun pengambilannya berdasarkan alamat data tersebut.
Agar data dapat diambil dengan cepat, tentu saja dalam penyimpannannya membutuhkan keteraturan, yaitu setiap data memiliki ukuran yang sama, sehingga alamat data dapat didapatkan dengan cepat.
FILE ACAK
File acak didalam pengolahannya data ditempatkan dalam bentuk record yang memiliki panjang yang tertentu. Dengan sistem pengolahan yang demikian suatu record data dapat langsung dibaca ataupun ditulis tanpa harus memproses record sebelumnya. Dalam hal ini type data record akan berperan.
Contoh :
TYPE SISWA
NOINDUK AS STRING * 10
NAMA AS STRING * 15
TEORI AS SINGLE
PRAKTEK AS SINGLE
RATA AS SINGLE
END TYPE
Dim DAT As SISWA
Perintah pengolahan file ACAK
1. Perintah membuka file ACAK
Sebelum suatu file randon dapat digunakan harus dibuka, jika file tersebut belum ada, maka akan dibuat yang baru. Adapun perintah membuka file ACAK adalah sebagai berikut :
OPEN namafile FOR RANDOM AS [#]filenum [LEN=reclen]
Contoh :
OPEN “SISWA.REC” FOR RANDOM AS #1 LEN = LEN(DAT)
Membuka file “siswa.rec” untuk diolah secara acak sebagai file nomor 1 dan ukuran tiap record adalah sama dengan ukuran variabel DAT.
2. Mendapatkan jumlah record pada file ACAK yang telah terbuka.
JlhRec = LOF(1)/LEN(DAT)
Jumlah record dalam file ACAK adalah ukuran keseluruhan file ACAK dibagi dengan ukuran tiap record.
3. Perintah input/output pada file ACAK Perintah menulis data PUT [#]filenum[,nomorrecord][,variable]
Contoh :
DAT.NOINDUK = “920403024″
DAT.NAMA = “Hendra”
DAT.TEORI = 70
DAT.PRAKTEK = 80
DAT.RATA = (DAT.TEORI+DAT.PRAKTEK)/2
PUT #1,JlhRec+1,DAT
Menyimpan data dari variabel DAT ke file ACAK nomor 1, sebagai
record baru pada akhir file (JlhRec+1).
Perintah membaca data
GET [#]filenum[,nomorrecord][,variabel]
Contoh :
GET #1,1,DAT
Membaca data record nomor 1 dari file ACAK nomor 1 ke variabel
DAT.
4. Perintah menutup file ACAK
Setelah selesai digunakan, file ACAK perlu ditutup untuk memastikan semua data ditulis ke media penyimpanan, dan memberikan indikator EOF.
Contoh :
CLOSE #1 (Menutup file acak nomor 1)
Contoh sederhana program pengolahan data dengan file ACAK.
‘PROGRAM MENGISI DATA KE FILE SISWA.REC
TYPE SISWA
NOINDUK AS STRING * 10
NAMA AS STRING * 15
TEORI AS SINGLE
PRAKTEK AS SINGLE
RATA AS SINGLE
END TYPE
DIM DAT AS SISWA
DIM NOINDUK AS STRING
OPEN “SISWA.REC” FOR RANDOM AS #1 LEN = LEN(DAT)
RECNO = LOF(1)/LEN(DAT)
DO
PRINT “DATA SISWA KE -”;I
INPUT “NO.INDUK :”,NOINDUK
IF NOINDUK “” THEN
DAT.NOINDUK = NOINDUK
INPUT “NAMA :”,DAT.NAMA
INPUT “TEORI :”,DAT.TEORI
INPUT “PRAKTEK :”,DAT.PRAKTEK
DAT.RATA = (DAT.TEORI+DAT.PRAKTEK)/2
PUT #1,RECNO+1,DAT
RECNO = RECNO + 1
ENDIF
LOOP UNTIL NOINDUK = “”
CLOSE #1
END
‘PROGRAM MENGURUT DATA DI FILE SISWA.REC
TYPE SISWA
NOINDUK AS STRING * 10
NAMA AS STRING * 15
TEORI AS SINGLE
PRAKTEK AS SINGLE
RATA AS SINGLE
END TYPE
DIM DAT1 AS SISWA
DIM DAT2 AS SISWA
OPEN “SISWA.REC” FOR RANDOM AS #1 LEN = LEN(DAT)
JD = LOF(1)/LEN(DAT)
FOR I = (JD-1) TO 1 STEP -1
Sempurna = 1
FOR J = 1 TO I STEP 1
GET #1,J,DAT1
GET #1,J+1,DAT2
IF DAT1.NAMA > DAT2.NAMA THEN
PUT #1,J,DAT2
PUT #1,J+1,DAT1
Sempurna = 0
ENDIF
NEXT J
If Sempurna = 1 Then
I = 0
End IF
NEXT I
CLOSE #1
END
‘PROGRAM BACA DATA DARI SISWA.REC DAN MENCETAK KE LAYAR
CLS
TYPE SISWA
NOINDUK AS STRING * 10
NAMA AS STRING * 15
TEORI AS SINGLE
PRAKTEK AS SINGLE
RATA AS SINGLE
END TYPE
DIM DAT AS SISWA
OPEN “SISWA.REC” FOR RANDOM AS #1 LEN = LEN(DAT)
JD = LOF(1)/LEN(DAT)
PRINT ——————————————————————-”
PRINT “NO.INDUK NAMA TEORI PRAKTEK RATA-RATA ULUS “
PRINT “——————————————————————-”
POLA$=”\ \ \ \ ###.## ###.## ###.## \ \ “
VIEW PRINT 4 TO 23
FOR I = 1 TO JD STEP 1
GET #1,I,DAT
IF DAT.RATA 48 jam diberikan Bonus = (jam kerja – 48) * 5000/jam
- jika jam kerja < 48 jan dikenakan Potongan = (48 – jam kerja) * 1000/jam
- Total Gaji = Gaji Pokok + Bonus – Potongan
Output yang diharapkan :
P.T. JAYA WIJAYA
JL. Kemerdekaan Barat No. 12
============================
LAPORAN GAJI PEGAWAI
========================================================
Nama Gol Jam Gaji Bonus Potongan Total
Pegawai Kerja Pokok (Rp) (Rp) (Rp)
——————————————————–
Suryajaya C 50 350,000 10,000 – 360,000
Sutiman B 48 200,000 – - 200,000
========================================================
Total : 560,000
========================================================
10.PENGOLAHAN FILE BINARY
Selain pengolahan data Sequential dan Random, QBasic juga menyediakan pengolahan yang bersifat Binary. Pada pengolahan yang bersifat Binary, file dapat dibaca/ditulis secara per-Byte pada posisi yang diinginkan, sehingga tidak terikat kepada urutan maupun struktur data.
Pengolahan yang bersifat Binary banyak digunakan untuk keperluan- keperluan khusus yang membutuhkan akses langsung ke satuan data di tingkat Byte. Misalnya membuat program Enkripsi dan Dekripsi file, pada proses Enkripsi, isi suatu file disandikan byte-per- byte sehingga tidak dapat dikenali lagi secara normal oleh sistem yang membuatnya. Agar isi file tersebut dapat dikenali kembali, maka diperlukan proses Dekripsi yang mengembalikannya ke keadaan semula.
Pengolahan yang bersifat Binary juga banyak digunakan pada pembuatan program AntiVirus, Crack, Game Cheat yang membutuhkan akses ke byte level.
1. Perintah membuka file Binary
Seperti pada pengolahan file umumnya, sebelum digunakan file binary harus dibuka dengan perintah sebagai berikut :
OPEN namafile FOR BINARY AS [#]filenum
Contoh :
OPEN “Sandi.bin” FOR BINARY AS #1
Membuka file “Sandi.bin” untuk diolah secara binary sebagai file
nomor 1.
2. Mendapatkan jumlah byte pada file binary yang telah terbuka.
JlhByte = LOF(1)
Fungsi LOF (Length Of File) akan mengembalikan ukuran file binary
dalam ukuran byte.
Catatan : 1 KB = 1024 Byte, 1 MB = 1024*1024
3. Perintah input/output pada file Binary
Perintah menulis data
PUT [#]filenum[,posisi][,variable]
Contoh :
MyData = 10
PUT #1, 101, MyData
Menulis karakter ASCII 10 (line feed) pada posisi byte ke 101
dalam file nomor 1.
Contoh Lain :
Dim MyChar As String*1
MyChar = Chr$(10)
Put #1, 101, MyChar
Perintah membaca data
GET [#]filenum[,posisi][,variabel]
Contoh :
Dim MyChar As String*1
GET #1, 101, MyChar
Membaca data byte posisi ke dari file nomor 1 ke variabel
MyChar.
4. Perintah menutup file Binary
Setelah selesai digunakan, file Binary perlu ditutup untuk memastikan semua data ditulis ke media penyimpanan, dan memberikan indikator EOF.
Nb. Untuk mempercepat proses I/O, sistem operasi menyediakan memory buffer sebagai tempat pembacaan dan penulisan sementara. Contoh :
CLOSE #1
Menutup file binary nomor 1. Contoh :
‘Program Enkripsi dan Dekripsi dengan kunci NOT
DIM Source AS STRING
DIM Target AS STRING
DIM FSize AS LONG
DIM MyChar AS STRING * 1
CLS
PRINT “Program Enkripsi/Dekripsi Data”
PRINT “Menggunakan operator NOT”
PRINT “————————”
INPUT “Masukkan Source :”, Source
INPUT “Masukkan Target :”, Target
IF Source = Target THEN
PRINT “Nama file source tidak boleh sama dengan target”
ELSE
OPEN Source FOR BINARY AS #1 ‘Buka source sebagai 1
OPEN Target FOR BINARY AS #2 ‘Buka target sebagai 2
FSize = LOF(1) ‘Mendapatkan ukuran file 1
FOR I = 1 TO FSize
GET #1, I, MyChar ‘Baca byte posisi ke i
‘dari source
MyChar = CHR$(255 – ASC(MyChar)) ‘Enkripsi dengan NOT
PUT #2, I, MyChar ‘Tulis ke posisi ke i
‘Pada Target
NEXT I
CLOSE #1
CLOSE #2
PRINT “Proses Selesai”
END IF
END
‘Program Menghilangkan Password file *.Mdb Microsoft Access 97
Dim nama As String
Dim huruf As String*1
INPUT “Masukkan nama file :”,nama
IF Dir$(nama) = “” THEN
PRINT “File “;nama;” tidak ada !”
ELSE
OPEN nama FOR BINARY AS #1
huruf = Chr$(134)
PUT #1, 66, huruf
CLOSE #1
PRINT “Password “;nama;” telah dihilangkan !”
END IF
END
11.PENGOLAHAN FILE KOMUNIKASI
Pada QBasic tersedia fasilitas untuk melakukan komunikasi data melalui interface RS232 pada Serial Port COM1 dan COM2 yang diperlakukan seperti pengolahan file.
Pada fasilitas perkantoran peralatan seperti PABX dapat dihubungkan dengan PC melalui interface RS232 pada Serial Port COM1 maupun COM2 untuk mendapatkan CMDR log dari pemakaian telepon.
Dengan menggunakan fasilitas pada QBasic, anda dapat membuat program untuk membaca data CMDR dari Serial Port COM1 maupun COM2 untuk disimpan maupun diolah menjadi informasi yang lebih baik, misalnya perhitungan tarif pemakaian telepon tiap individu.
1. Perintah membuka dan menginisialisasi saluran komunikasi Perintah OPEN COM harus dilakukan sebelum peralatan dapat digunakan untuk komunikasi melalui interface RS232.
OPEN “COMn: list1 list2″ FOR RANDOM AS [#]nomor]
dimana :
n adalah nomor port komunikasi yang ingin dibuka
(1 = COM1, 2 = COM2).
list1 adalah parameter komunikasi yang sering digunakan :
[baud] [,[parity] [,[data] [,[stop]]]]
baud adalah baud rate dari peralatan yang dibuka :
75, 110, 150, 300, 600, 1200, 2400, 4800, 9600
parity adalah metode dari pemeriksaan pariti :
N (none) E (even) O (odd)
S (space) M (mark) PE (enable error checking)
data adalah jumlah data bit setiap byte :
5, 6, 7, 8
stop adalah jumlah stop bit :
1, 1.5, 2
Defaultnya: 300 baud, even parity, 7 data bits, 1 stop bit.
list2 adalah parameter komunikasi yang jarang digunakan yang dipisahkan dengan koma.
Option Description
ASC Opens the device in ASCII mode.
BIN Opens the device in binary mode.
CD[m] Sets the timeout period (in milliseconds) on the
Data Carrier Detect (DCD) line.
CS[m] Sets the timeout period (in milliseconds) on the
Clear to Send (CTS) line.
DS[m] Sets the timeout period (in milliseconds) on the
Data Set Ready (DS) line.
LF Sends a line-feed character after a carriage
return.
OP[m] Specifies how long (in milliseconds) OPEN COM
waits for all communications lines to become open.
RB[n] Sets the size (in bytes) of the receive buffer.
RS Suppresses detection of Request to Send (RTS).
TB[n] Sets the size (in bytes) of the transmit buffer.
Contoh :
OPEN “COM1:300,N,8,1,CD0,CS0,DS0,OP0,RS,TB2048,RB2048″ FOR RANDOM AS #1
Akan membuka Serial Port COM1 sebagai file nomor 1, mengenai parameter komunikasi sangat bergantung kepada setting pabrik peralatan tersebut.
Membaca dari peralatan yang terbuka
INPUT$(n,nomor)
dimana
n adalah jumlah karakter yang dibaca. nomor adalah nomor file yang terbuka.
Contoh :
A$ = Input$(1,1)
Dimana akan menbaca 1 huruf dari file nomor 1
Mengirim data ke peralatan yang terbuka
Anda dapat menggunakan perintah print untuk mengirim data ke peralatan yang terbuka.
Print #nomor, ekspresi
Contoh :
Print #1, “A”
Akan mengirim huruf “A” ke file nomor 1
Memeriksa keberadaan data pada Receive Buffer file komunikasi.
Anda dapat menggunakan fungsi LOC(nomorfile) untuk mengetahui apakah input buffer dalam keadaan kosong atau berisi data.
Contoh :
OPEN “COM1:300,N,8,1,CD0,CS0,DS0,OP0,RS,TB2048,RB2048″ FOR RANDOM AS #1
DO
tekan$ = INKEY$
IF tekan$ “” THEN
PRINT #1, tekan$; ‘Kirim apa yang ditekan
END IF
IF LOC(1) 0 THEN ‘Jika ada data pada Recieve Buffer
baca$ = INPUT$(1, 1) ‘Baca satu huruf
PRINT baca$;
END IF
LOOP
CLOSE #1
Program diatas adalah contoh Chatting sederhana melalui kabel
LapLink antara dua komputer yang dihubungkan melalui COM1.
Menutup file
Untuk menutup file, anda dapat menggunakan perintah close.
Close #nomor
Contoh :
Close #1
Contoh program komunikasi RS232 antara Pabx Rolm vscbx dengan PC
melalui COM1, untuk maintenance :
OPEN “COM1:300,E,7,1,CD0,CS0,DS0,OP0,RS,TB2048,RB2048″ FOR RANDOM AS #1
DO
tekan$ = INKEY$
IF tekan$ “” THEN
PRINT #1, tekan$; ‘Kirim apa yang ditekan
END IF
IF LOC(1) 0 THEN ‘Jika ada data pada Recieve Buffer
baca$ = INPUT$(1, 1) ‘Baca satu huruf
PRINT baca$;
END IF
LOOP
CLOSE #1
Contoh program komunikasi RS232 antara Pabx Rolm vscbx dengan PC melalui COM2, untuk CMDR Log :
OPEN “COM2:1200,E,7,1,CD0,CS0,DS0,OP0,RS,TB2048,RB2048″ FOR RANDOM AS #1
OPEN “CMDR.LOG” FOR BINARY AS #2
JlhByte = LOF(2)
DO
tekan$ = INKEY$
IF LOC(1) 0 THEN ‘Jika ada data pada Recieve Buffer
baca$ = INPUT$(1, 1) ‘Baca satu huruf
JlhByte = JlhByte + 1
PUT #2, JlhByte, Baca$
PRINT baca$;
END IF
LOOP UNTIL tekan$ “”
CLOSE #1
CLOSE #2
Tidak ada komentar:
Posting Komentar