Anda di halaman 1dari 45

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 GWBASIC 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 atau 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 tahaptahap 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

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 kasuskasus 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 + (PKPT100000000)*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 + (PKPT100000000)*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

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

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 --------------------------------------------------------

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-ddyyyy. 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?

MODUL 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 <= SQR(bilangan) 'dari 2 s/d Akar dari bilangan IF (bilangan MOD i) = 0 THEN PRIMA! = 0 'jika habis dibagi, bukan prima

EXIT FUNCTION END IF i=i+1 LOOP PRIMA! = 1 'jika tidak habis dibagi, prima END IF END FUNCTION Menggunakan Fungsi Ciptaan Cara menggunakan fungsi ciptaan sama saja dengan fungsi bawaan, contoh : DIM I AS LONG FOR I = 1 To 30 If PRIMA!(I) = 1 Then Print I End If NEXT I Akan mencetak bilangan prima antara 1 s/d 30 Sub Rutin Sub Rutin merupakan sebagian dari program. Adapun keuntungan dari pembentukan adalah menghindari pengetikan yang berulang-ulang terhadap bagian program yang sama, dan membuat program lebih terstruktur. Pada QBasic tata cara penulisan Sub Rutin adalah sebagai berikut: SUB namasub [(Parameterlist)] [STATIC] [statementblock] END SUB Contoh : Sub KOTAK(Y1%,X1%,Y2%,X2%) posisiX% = POS(0) 'Simpan posisi kursor sekarang posisiY% = CRSLIN LOCATE Y1%,X1% PRINT Chr$(218);String$(X2-X1-2,196);Chr$(191) FOR I%=Y1% TO Y2% STEP 1

LOCATE I%,X1% : PRINT Chr$(179) LOCATE I%,X2% : PRINT Chr$(179) NEXT I% LOCATE Y2%,X1% PRINT Chr$(192);String$(X2-X1-2,196);Chr$(217) LOCATE POSISIY%,POSISIX% END SUB Sub diatas akan mengambar suatu kotak ASCII single berdasarkan koordinat yang diberikan. Contoh : CALL KOTAK(5,10,20,70) pengiriman argumen pada Sub Procedure terdapat dua cara antara lain : 1. Secara referensi Argumen yang diberikan dengan cara ini kepada procedure dan diolah, kemudian hasil akhirnya akan didefinisikan pada variabel tersebut pada main program. 2. Dengan Value/Nilai Argumen ini hanya berupa nilai yang dipergunakan oleh procedure pada saat pengolahan. Contoh : SUB contoh(A as INTEGER) A = 10 END SUB Pengiriman argumen secara Referensi : DIM Nilai As INTEGER Nilai = 1 Call contoh(Nilai) ' Call Print Nilai ' Akan tercetak 10 Pengiriman argumen secara Value : DIM Nilai As INTEGER Nilai = 1 contoh(Nilai) ' Tanpa Call

Print Nilai ' Akan tercetak 1 ---------------------------------------------------------------Jadi anda perlu berhati-hati dalam pemakaian Variabel yang digunakan sebagai parameter pada saat pemanggilan SUB RUTIN. ---------------------------------------------------------------static, menyatakan nilai variabel local dalam function tidak dibuang ketika fungsi atau sub berakhir. Dalam QBasic anda dapat menentukan tingkatan/sifat variabel yang mengatur dimana variabel itu digunakan(level of access). Inilah tingkatan tersebut : 1. Variabel Local, hanya bisa digunakan pada Sub Procedure atau function tersebut telah selesai dikerjakan, maka variabel lokal tersebut dibuang dari memory dan tidak lagi dipergunakan oleh bagian program lain. 2. Variabel Shared, atau variabel global bisa digunakan pada seluruh bagian program maupun Sub Procedure tertentu. Nilai variabel ini dapat berubah selama program tersebut berjalan. 3. Variabel Static, adalah variabel local, tetapi variabel ini nilainya tetap dipertahankan sampai pemanggilan berikutnya.

Latihan : 1. Buatlah fungsi ciptaan terbilang, contoh 1250 akan dibaca sebagai "Seribu Duaratus limapuluh". 2. Buatlah sub kotak double. Bilang.Bas DECLARE FUNCTION angka$ (x AS INTEGER, posisi AS INTEGER) DECLARE FUNCTION ratus$ (x AS INTEGER, posisi AS INTEGER) DECLARE FUNCTION terbilang$ (x AS LONG) PRINT terbilang$(1234567890) FUNCTION angka$ (x AS INTEGER, posisi AS INTEGER)

SELECT CASE x CASE 0: angka$ = "Nol" CASE 1: IF posisi = 1 THEN angka$ = "Satu" 'Posisi paling akhir dibaca ELSE 'Satu angka$ = "Se" END IF CASE 2: angka$ = "Dua" CASE 3: angka$ = "Tiga" CASE 4: angka$ = "Empat" CASE 5: angka$ = "Lima" CASE 6: angka$ = "Enam" CASE 7: angka$ = "Tujuh" CASE 8: angka$ = "Delapan" CASE 9: angka$ = "Sembilan" CASE 10: angka$ = "Sepuluh" CASE 11: angka$ = "Sebelas" CASE 12: angka$ = "Duabelas" CASE 13: angka$ = "Tigabelas" CASE 14: angka$ = "Empatbelas" CASE 15: angka$ = "Limabelas" CASE 16: angka$ = "Enambelas" CASE 17: angka$ = "Tujuhbelas" CASE 18: angka$ = "Delapanbelas" CASE 19: angka$ = "Sembilanbelas" END SELECT END FUNCTION FUNCTION ratus$ (x AS INTEGER, posisi AS INTEGER) DIM a100 AS INTEGER, a10 AS INTEGER, a1 AS INTEGER DIM baca AS STRING a100 = x \ 100 'Ambil angka ratusan a10 = (x MOD 100) \ 10 'Ambil angka puluhan a1 = x MOD 10 'Ambil angka satuan IF a100 > 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

Oleh : Hendra, ST. Modul 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 menawarkan fleksibilitas dan kemudahan dalam pemakaiannya. Contoh : Temp = Peserta1 Peserta1 = Peserta2 Peserta2 = Temp atau

SWAP Peserta1, Peserta2 Menukar data Peserta1 dengan Peserta2 dan sebaliknya, tanpa perlu menyebutkan sub komponennya. Dapatkah saudara bayangkan kalau hal tersebut tidak menggunakan Record Type ? 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 "-------------------------------------------------------------------" 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

Anda mungkin juga menyukai