Wednesday, April 30, 2008

QBASIC

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?

1 comment:

Unknown said...

kalo buat deret fibonacci gimna?