Dasar Pemrograman
Oleh : Hendra, ST.
KATA PENGANTAR Selamat datang di dunia pemrograman komputer. Dewasa ini, jurusan komputer telah menjadi salah satu jurusan favorit bagi lulusan SMU untuk melanjutkan pendidikannya di perguruan tinggi. Sebagai salah satu mahasiswa jurusan komputer, tentu saja topik algoritma dan pemrograman merupakan mata kuliah wajib, karena kesuksesan sebagai seorang mahasiswa jurusan komputer adalah kemampuan pemanfaatan komputer dan kemampuan menghasilkan berbagai aplikasi yang dapat bermanfaat bagi perusahaan maupun masyarakat. Sesuatu yang harus disadari para mahasiswa adalah dalam mempelajari pemrograman komputer bukanlah sesuatu yang mudah, karena sangat membutuhkan minat dan bakat, dan buku ini memcoba membimbing anda secara step-by-step menuju ke dunia pemrograman komputer. Akhirnya, selamat belajar dan berlatih. Medan, 17 Agustus 2003
Hendra, ST.
Indoprog
1
Dasar Pemrograman
Oleh : Hendra, ST.
Modul 1, PROGRAM KOMPUTER dan ALGORITMA PROGRAM KOMPUTER Program komputer adalah suatu himpunan dari instruksi yang memberitahukan kepada komputer apa yang harus dilakukan. Instruksi tersebut mungkin memberitahukan kepada komputer untuk menambah, membandingkan, dan membuat keputusan berdasarkan hasilnya.
BAHASA KOMPUTER Agar suatu komputer dapat mengenali instruksi yang anda berikan, instruksi tersebut perlu ditulis dalam bahasa yang dimengerti oleh komputer.
HIGH-LEVEL dan LOW-LEVEL Pada dasarnya orang mengolongkan Bahasa komputer menjadi dua golongan besar yaitu HighLevel dan Low-Level. Bahasa pemrograman seperti BASIC, PASCAL, FORTRAN dan C, memungkinkan programmer untuk menulis program yang tidak begitu tergantung pada jenis komputer. Berdasarkan hal inilah bahasa-bahasa ini dapat dikategorikan sebagai high-level karena lebih dekat kepada manusia. Sebaliknya, bahasa assembly dikategorikan sebagai low-level karena mereka sangat dekat kepada hardware. Keuntungan utama dari bahwa high-level dibandingkan dengan low level adalah lebih mudah dibaca, ditulis, dan ditangani. Selanjutnya program yang ditulis dengan bahasa high-level harus diterjemahkan menjadi bahasa mesin melalui suatu compiler atau interpreter.
INTERPRETER dan COMPILER Ketika anda menggunakan suatu interpreter, ia akan membaca perintah source code baris perbaris, kemudian menterjemahkannya menjadi perintah mesin yang bersesuaian (kode mesin) dan menjalankannya seketika. Kode mesin ini tidak disimpan; sehingga ketika anda mencoba menjalankan program yang sama pada kesempatan berikutnya, anda membutuhkan source code dan interpreter untuk menjalankannya.
Indoprog
2
Dasar Pemrograman
Oleh : Hendra, ST.
Ketika anda menggunakan suatu compiler, ia akan membaca perintah source code ... dan menulis kode mesin. Setelah selesai keseluruhan kode mesin akan disimpan untuk pemakaian selanjutnya. Ketika anda ingin menjalankan program tersebut, system operasi akan menjalankan kode mesin yang telah disimpan – dalam hal ini source code tidak diperlukan lagi. Eksekusi menjadi lebih cepat, dan dapat dijalankan dikomputer lain (dalam hal ini pada komputer dan system operasi yang sama)
KOMPUTER dan ALGORITMA Untuk membuat komputer melakukan sesuatu, anda perlu untuk menulis program komputer. Dalam menulis suatu program komputer, kita perlu memberitahukan kepada komputer, langkah-langkah persis apa yang harus ia lakukan. Ketika komputer menjalankan program tersebut, ia akan melakukan setiap langkah secara mesin untuk mencapai tujuan akhir. Ketika anda memberitahu kepada komputer apa yang harus dilakukan, anda perlu memilih bagaimana hal tersebut dilakukan. Dari sinilah Algoritma Komputer muncul. Algoritma adalah teknik dasar untuk menyelesaikan suatu pekerjaan. Perhatikan contoh berikut untuk membantu pengertian anda tentang konsep dari algoritma. Katakanlah misalnya anda mempunyai teman yang baru tiba di airport, dan teman anda ingin berangkat dari airport ke rumah anda. Berikut ini adalah empat algoritma yang berbeda yang mungkin dilakukan teman anda: Algoritma taxi: Pergi ke pemberhentian taxi. Masuk ke taxi. Berikan alamat rumah anda. Algoritma Telepon untuk dijemput: Ketempat pemberhentian, telepon ke handphone anda. Menunggu saja ditempat pengambilan bagasi. Algoritma Bus: Keluar dari tempat pengambilan bagasi, naik bus nomor 70. Turun dan naik bus nomor 14 pada jalan utama. Turun di jalan pada jalan AB. Jalan kaki dua blok arah utara ke rumah anda. Ketiga algoritma diatas memiliki tujuan yang sama, tetapi masing-masing melakukannya dengan cara yang berbeda. Masing-masing algoritma diatas juga menghabiskan waktu dan biaya yang berbeda. Naik taxi, adalah contoh yang paling cepat, tetapi paling mahal. Naik bus mungkin adalah paling hemat, tetapi lambat. Tentu saja anda perlu memilih algortima sesuai dengan situasi dan kondisi. Dalam pemrograman komputer, juga terdapat banyak cara – algoritma -- yang berbeda. Masingmasing algoritma memiliki keuntungan dan kerugian untuk situasi yang berbeda
Indoprog
3
Dasar Pemrograman
Oleh : Hendra, ST.
PSEUDOCODE PSEUDOCODE adalah cara sederhana untuk menggambarkan algoritma tanpa salah satu bahasa pemrograman. Pseudocode sering digunakan pada buku-buku Computer science dalam contoh mereka sehingga dapat dimengerti oleh para programmer dengan bahasa komputer yang berbeda. Contoh notasi pseudocode:
= <expression> Berhubungan dengan kondisi: if lakukan sesuatu else lakukan hal yang lain Berhubungan dengan looping: while lakukan sesuatu for from to by <step> lakukan sesuatu Pemanggilan fungsi: (<arguments>) Deklarasi fungsi: function (<arguments>) lakukan sesuatu dengan arguments return sesuatu (optional) Deklarasi variabel: declare as Deklarasi array: declare <array-name>[ to ] of Struktur data: struct <declaration(s) of internal variables> Mengakses field yang terdapat pada struktur: <structure variable name>.
FLOWCHART FLOWCHART adalah salah satu cara menggambarkan algoritma dengan menggunakan simbol. Start dan End
Indoprog
4
Dasar Pemrograman
Oleh : Hendra, ST.
Input dan Output
Proses
Kondisi
Konektor
Aliran Tugas : 1. Tuliskan pengertian anda tentang Program Komputer, Bahasa Komputer, dan Algoritma ! 2. Tuliskan algoritma yang anda lakukan dari rumah menuju ke tempat kuliah ! 3. Apa perbedaan menurut anda antara Program Komputer dan Pseudocode ? 4. Apa persamaan dan perbedaan antara pseudocode dengan flowchart ? Tugas rumah : Carilah nama-nama bahasa komputer dan pembuatnya, minimal 10.
Indoprog
5
Dasar Pemrograman
Oleh : Hendra, ST.
Modul 2, BAHASA PEMROGRAMAN BASIC SEJARAH BAHASA BASIC Bahasa BASIC (standing for Beginner's All Purpose Symbolic Instruction Code) dibuat oleh John G.Kemmeny dan Thomas E.Kurtz di Dartmouth College pada tahun 1964 merupakan bahasa tingkat tinggi yang relatif mudah dipelajari dan dimengerti. Adapun tokoh yang berperan penting dalam kepopularan bahasa BASIC adalah Bill Gates dan Paul Allen (Microsoft Corporation), dimana mereka membuat intepreter BASIC untuk Altair PC (dengan menggunakan memori sebesar 4KB meliputi programd dan source code). Dalam perkembangan selanjutnya, mereka juga membuat intepreter BASIC untuk Apple, Commodore, dan Atari PC. Pada IBM-PC, Bahasa BASIC dikembangkan dalam dua jenis, yaitu Interpreter dan compiler. Interpreter seperti GW-BASIC pada sistem operasi MS-DOS, maupun BASICA pada system operasi PC-DOS, sedangkan salah satu compilernya yang terkenal adalah BASIC yang dilengkapi dengan sistem pemrograman yang terstruktur, Library, on-line help yang terpadu, editor yang efisien (bisa merapikan teks serta memberitahukan kesalahan syntax penulisan suatu perintah). Dalam perkembangan bahasa BASIC, juga dikembangkan Turbo Basic oleh Robert S. Zale (Borland International), dan untuk versi Power Basic oleh dirinya sendiri. Pada dasarnya bahasa BASIC dirancang untuk : 1. Be easy for beginners to use 2. Be a general-purpose language 3. Allow advanced features to be added for experts (while keeping the language simple for beginners) 4. Be interactive 5. Provide clear and friendly error messages 6. Respond fast for small programs 7. Not require an understanding of computer hardware 8. Shield the user from the operating system Unstructured original BASIC 10 INPUT "What is your name: "; A$ 20 PRINT "Hello "; A$ 30 INPUT "How many stars do you want: "; S 35 S$ = "" 40 FOR I = 1 TO S 50 S$ = S$ + "*" 55 NEXT I 60 PRINT S$ 70 INPUT "Do you want more stars? "; Q$ 80 IF LEN(Q$) = 0 GOTO 70 90 Q$ = LEFT$(Q$, 1) 100 IF (Q$ = "Y") OR (Q$ = "y") THEN GOTO 30
Indoprog
6
Dasar Pemrograman 110 120 130 140 150
Oleh : Hendra, ST.
PRINT "Goodbye "; FOR I = 1 TO 200 PRINT A$; " "; NEXT I PRINT
Modern Structured BASIC INPUT "What is your name"; UserName$ PRINT "Hello "; UserName$ DO INPUT "How many stars do you want"; NumStars Stars$ = "" Stars$ = REPEAT$("*", NumStars) '<-ANSI BASIC 'Stars$ = STRING$(NumStars, "*") '<-MS BASIC PRINT Stars$ DO INPUT "Do you want more stars"; Answer$ LOOP UNTIL Answer$ <> "" LOOP WHILE UCASE$(LEFT$(Answer$, 1)) = "Y" PRINT "Goodbye "; FOR A = 1 TO 200 PRINT UserName$; " "; NEXT A PRINT
LIMA LANGKAH DASAR PEMBUATAN PROGRAM 1. 2. 3. 4.
Recognizing the need for a program to solve a problem. Planning the program and selecting the tools to solve the problem. Writing the program in the programming language of choice. Compiling: translating the human-readable source code into machine-readable executable code, which is done by compilers and other tools.
5. Testing the program to make sure it works; if not, return to step 3 (see code and fix).
TYPE DATA Data Type Strings Integers Long Integers Single Double User defined
Suffix $ % & ! #
Maximum 32,767 chars 32,767 2,147,483,647 +-3.402823 E+38 +-1.7976931 D+308
Minimum 0 chars -32,767 -2,147,483,648 +-1.401298 E-45 +-4.940656 D-324
Size 2 4 4 8
OPERATOR Arithmetic operators : melakukan tugas perhitungan Operator
Indoprog
Kegunaan
Operator
Kegunaan
7
Dasar Pemrograman ^ * /
Pangkat Negatif Perkalian Pembagian
Oleh : Hendra, ST. \ Mod + -
Pembagian Integer Sisa bagi Penjumlahan Pengurangan
Relational operators : membandingkan strings dan nilai numerik Operator = <> < > <= >=
Kegunaan Sama dengan Tidak sama dengan Lebih kecil Lebih besar Lebih kecil atau sama dengan Lebih besar atau sama dengan
Logical operators : test kondisi dan manipulasi bits Expresi1 Expresi2 Not And T T F T T F F F F T T F F F T F
Or T T T F
Xor F T T F
Eqv T F F T
Imp T F T T
String operators: mengabung (+), dan membandingkan String
LABEL dan VARIABEL Penulisan label pada Basic harus memenuhi ketentuan : Maksimum 40 character, dimulai dengan huruf A..Z huruf besar/kecil sama, tidak sama dengan reserved word, dan tidak pakai spasi 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.
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 untukdiolah dan data-data yang telah selesai diolah tidak akan berarti tanpa proses OUTPUT.
Indoprog
8
Dasar Pemrograman
Oleh : Hendra, ST.
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. Tuliskan hasil evaluasi ekspresi berikut Ekspresi :
Hasilnya ?
1 + 2 2 - 1 2 * 3 5 / 2 5 \ 2 5 Mod 2 3^2 1+2*6^2/4-1 (1+2)*6^2/4-1
_____ _____ _____ _____ _____ _____ _____ _____ _____
Penjumlahan Pengurangan Perkalian Pembagian mengapa ? ____________ Pembagian bulat mengapa ? ____________ Sisa bagi Pangkat Urutan operasi Prioritas operasi
Tuliskan kesimpulan anda tentang : 1. Pembagian bulat ____________________________________________ 2. Sisa bagi __________________________________________________ 3. Urutan operasi _____________________________________________ 4. Prioritas operasi __________________________________________ 1 1 2 2 1 3
> 2 < 1 = 2 >= 2 <= 2 <> 3
_____ _____ _____ _____ _____ _____
lebih besar lebih kecil sama dengan lebih besar atau sama lebih kecil atau sama tidak sama dengan
Mengapa True (-1) dan False (0) ? (1 > 2) (1 > 2) (1 < 2)
Indoprog
and (2 = 2) and (1 < 2) and (2 = 2)
_____ Operasi And _____ Operasi And _____ Operasi And
9
Dasar Pemrograman
Oleh : Hendra, ST.
(3 <> 2) and (1 > 2)
_____ Operasi And
(1 (1 (1 (3
> 2) > 2) < 2) <> 2)
and and and and
(2 (1 (2 (1
= < = >
2) 2) 2) 2)
_____ _____ _____ _____
Operasi Operasi Operasi Operasi
Or Or Or Or
(1 (1 (1 (3
> 2) > 2) < 2) <> 2)
Xor Xor Xor Xor
(2 (1 (2 (1
= < = >
2) 2) 2) 2)
_____ _____ _____ _____
Operasi Operasi Operasi Operasi
Xor Xor Xor Xor
(1 (1 (1 (3
> 2) > 2) < 2) <> 2)
Eqv Eqv Eqv Eqv
(2 (1 (2 (1
= < = >
2) 2) 2) 2)
_____ _____ _____ _____
Operasi Operasi Operasi Operasi
Eqv Eqv Eqv Eqv
(1 (1 (1 (3
> 2) > 2) < 2) <> 2)
Imp Imp Imp Imp
(2 (1 (2 (1
= < = >
2) 2) 2) 2)
_____ _____ _____ _____
Operasi Operasi Operasi Operasi
Imp Imp Imp Imp
Not (1 > 2) Not (2 > 2)
_____ Operasi Imp _____ Operasi Imp
Not (1 > 2) Or (2 = 2) And (3 < 2) ______ Urutan operasi Tuliskan kesimpulan anda tentang urutan operasi pada operator logika. 2. Ketiklah ekspresi berikut pada jendela immedietly : A = 123 B = 1234567890 C% = 32767 D% = 100000 D& = 100000 E$ = "Indoprog" F$ = 123 G = "hendra" H_1 = 123 nilai ujian = 90 next = 5 cls = 6 A% A%
= 1.2 = 1.5
Overflow, mengapa ?
Type mismatch, mengapa ? Type mismatch, mengapa ? expected : end-of-statement, mengapa ? Syntax error, mengapa ? expected : variable or end-of-statement ? expected : variable or end-of-statement ? Berapa nilai A% ? Berapa nilai A% ?
Tuliskan kesimpulan anda tentang variabel dan nama variabel 1 + 1 1 + "100" "A" + "B"
______ Type mismatch, mengapa ? ______
Tuliskan kesimpulan anda operator pada type data. Print "Untuk kemajuan Indonesia"
Indoprog
10
Dasar Pemrograman
Oleh : Hendra, ST.
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);"Soewarno" Hasilnya : __________________________________, mengapa ?
Input nama$ print nama$ Hasilnya :? Hendra __________________________________
Input "Masukkan nama :", nama$ print nama$ Hasilnya :Masukkan nama : Hendra __________________________________
Indoprog
11
Dasar Pemrograman
Oleh : Hendra, ST.
Input "Masukkan nama "; nama$ print nama$ Hasilnya :Masukkan nama ? Hendra __________________________________
Input "Masukkan nama "; nama print nama Hasilnya : Masukkan nama ? Hendra Redo from start, mengapa ? 2. 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) 3. 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 Tugas 4. Buatlah program menghitung luas lingkaran. 5. Buatlah program konversi suhu Celcius ke Farenheit, Kelvin, Reamur. Jawaban : REM DIM DIM DIM DIM CLS
Program Konversi Celcius ke Reamur, Kelvin dan Fahrenheit c AS SINGLE r AS SINGLE k AS SINGLE f AS SINGLE
Indoprog
12
Dasar Pemrograman
Oleh : Hendra, ST.
INPUT "Masukkan Derajat Celcius ? ", c r = 4 / 5 * c k = 273 + c f = 9 / 5 * c + 32 PRINT "Derajat Reamur : ", r PRINT "Derajat Kelvin : ", k PRINT "Derajat Fahrenheit : ", f END
Indoprog
13
Dasar Pemrograman
Oleh : Hendra, ST.
Modul 3, 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 barisbaris tertentu harus diulang sampai suatu kondisi terpenuhi.
PILIH TAMBAHAN If ekspresi logika Then Statement ... 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
PILIH ANTARA DUA IF ekspresi logika Then Statement1 ... Else Statement2 ... End If
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.
PILIH ANTARA BANYAK IF ekspresi logika 1 Then Statement1 ...
Indoprog
14
Dasar Pemrograman
Oleh : Hendra, ST.
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 PKPT = PKP * 12
' Penghasilan Kena Pajak 1 Bulan ' 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
Indoprog
15
Dasar Pemrograman
Oleh : Hendra, ST.
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
Latihan Buatlah program perhitungan Pajak Penghasilan Perorangan untuk penghasilan bulanan ! Tugas 1. Buatlah program untuk mencetak kata sesuai dengan bilangan yang dimasukan oleh pemakai ( 1 s/d 9 ) Contoh : Input : 1 Output : Satu 2. Buatlah program untuk menentukan bilangan yang dimasukan pemakai genap atau ganjil. Jawaban : REM Program memeriksa bilangan Genap atau Ganjil DIM bil AS INTEGER INPUT "Masukkan Bilangan ?", bil IF bil MOD 2 = 0 THEN PRINT "Genap" ELSE PRINT "Ganjil" END IF END
3. Buatlah program untuk menentukan tahun yang dimasukan pemakai kabisat atau bukan.
Indoprog
16
Dasar Pemrograman
Oleh : Hendra, ST.
Modul 5, STRUKTUR KENDALI PERULANGAN 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.
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 bilangan 0123456789 For I = 0 To 9 Step 1 Print I Next I
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 Lipat = Bagi = Else Lipat = Bagi = End IF
> kedua Then pertama kedua
'Jika bilangan pertama lebih besar
kedua pertama
N = 1 Do While ((Lipat*N) Mod Bagi) <> 0
Indoprog
'Kelipatan dinaikan jika
17
Dasar Pemrograman N = N + 1 Loop
Oleh : Hendra, ST. 'sisa bagi belum nol
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 Latihan : 1. Buatlah program mencetak
Indoprog
18
Dasar Pemrograman 11111 22222 33333 44444 55555
12345 12345 12345 12345 12345
12345 1234 123 12 1
12345 2345 345 45 5
Oleh : Hendra, ST.
Jawaban A: REM Jawaban soal A DIM i AS INTEGER DIM j AS INTEGER FOR i = 1 TO 5 STEP 1 FOR j = 1 TO 5 STEP 1 PRINT j; NEXT j PRINT NEXT i Jawaban B: REM DIM DIM FOR
Jawaban Soal B i AS INTEGER j AS INTEGER i = 5 TO 1 STEP -1 FOR j = 1 TO i STEP 1 PRINT j; NEXT j PRINT NEXT i
2. Buatlah program mencetak barisan fibonacci : 1 1 2 3 5 8 13 … Jawaban : REM DIM DIM DIM DIM DIM
Program Cetak barisan Fibonacci i AS INTEGER n AS INTEGER f1 AS LONG f2 AS LONG fi AS LONG
INPUT "Jumlah Suku ?", i f1 = 1 f2 = 1 FOR n = 1 TO i STEP 1 IF n = 1 THEN PRINT f1; ELSEIF n = 2 THEN PRINT f2; ELSE fi = f1 + f2 PRINT fi; f1 = f2 f2 = fi
Indoprog
19
Dasar Pemrograman
Oleh : Hendra, ST.
END IF NEXT n END
Tugas 1. Buatlah program menentukan bilangan yang dimasukkan merupakan bilangan PRIMA atau tidak. Jawaban : REM Menentukan bilangan prima atau bukan DIM bil AS LONG DIM bagi AS INTEGER DIM akar AS SINGLE INPUT "Bilangan yang akan diperiksa ?", bil IF bil < 2 THEN PRINT "Bukan Prima" ELSEIF bil < 4 THEN PRINT "Prima" ELSE akar = sqrt(bil) bagi = 2 WHILE bagi <= akar AND bil MOD bagi <> 0 bagi = bagi + 1 WEND IF bagi <= akar THEN PRINT "Bukan Prima" ELSE PRINT "Prima" END IF END IF END
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
Indoprog
20
Dasar Pemrograman
Oleh : Hendra, ST.
Modul 6, 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) Next I Print "Total :",Total
Indoprog
'A(0), A(1), ..., A(19)
21
Dasar Pemrograman
Oleh : Hendra, ST.
Akan menjumlahkan nilai elemen pertama s/d elemen keduapuluh ke variabel total. Dalam 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 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)
Indoprog
22
Dasar Pemrograman
Oleh : Hendra, ST.
For I = LBound(C) To UBound(C) Step 1 Input "Masukkan Nilai :",A(I) Next I
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 REM Pengolahan Data DIM jd AS INTEGER DIM i AS INTEGER DIM j AS INTEGER INPUT "Masukkan Jumlah Data ?", jd DIM dat(jd) AS INTEGER 'Baca Data FOR i = 1 TO jd STEP 1 PRINT "Masukan data ke-"; i; INPUT dat(i) NEXT i 'Urut Data FOR i = jd - 1 TO 1 STEP -1 FOR j = 1 TO i STEP 1 IF dat(j) > dat(j + 1) THEN temp = dat(j) dat(j) = dat(j + 1) dat(j + 1) = temp END IF NEXT j NEXT i 'Menghitung Total DIM Total AS LONG Total = 0 FOR i = 1 TO jd STEP 1 Total = Total + dat(i) NEXT i DIM rata AS SINGLE rata = Total / jd DIM median AS INTEGER IF jd MOD 2 = 0 THEN median = (dat(jd \ 2) + dat(jd \ 2 + 1)) / 2 ELSE median = dat(jd \ 2 + 1) END IF PRINT "Data Terbesar :", dat(i) PRINT "Data Terkecil :", dat(jd) PRINT "Ratat-rata :", rata PRINT "Median :", median END
Indoprog
23
Dasar Pemrograman
Oleh : Hendra, ST.
Tugas 1. 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 : Hendra Soewarno -------------------------------------------------------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 --------------------------------------------------------
Indoprog
24
Dasar Pemrograman
Oleh : Hendra, ST.
Modul 7, 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 Basic 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 F = 1 Tanda = 1 Sinus = S FOR I = 2 TO 11 F = F * I ' Menghitung nilai IF I MOD 2 = 1 THEN ' Suku 3, 5, 7, 9, Tanda = -Tanda ' Tanda -1, 1, -1, Sinus = Sinus + (S ^ I / F * Tanda) END IF NEXT I B = Sinus
dalam radian
faktorial 11 1, dst
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)
Indoprog
' Akan mencetak Indo
25
Dasar Pemrograman
Oleh : Hendra, ST.
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) Print Mid$("1234567890",3)
' Akan mencetak 3456 ' Akan mencetak 34567890
LTRIM$(stringexpression) Mengembalikan string dengan menghilangkan spasi sebelah kiri. Contoh : A$ = " 100" B$ = LTRIM$(A$) Print A$ Print B$
'Akan mencetak 100 '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") Print INSTR(4,"ABCDABCD","A") Print INSTR("ABCD","a")
'Akan mencetak 2 'Akan mencetak 5 '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 :
Indoprog
26
Dasar Pemrograman
Oleh : Hendra, ST.
Print Space$(30), "IndoProg"
STRING$(m,n) atau STRING$(m,stringexpression) Mengembalikan string yang mengandung sejumlah character yang berulang. Contoh : Print String$(10,65) Print String$(10,"A")
' Akan mencetak AAAAAAAAAA ' 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$ A C D
= = = =
"100" Val(B) "IndoProg" Val(C)
'A berisi 100 '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)
Indoprog
27
Dasar Pemrograman
Oleh : Hendra, ST.
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
Indoprog
28
Dasar Pemrograman
Oleh : Hendra, ST.
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. REM Tulisan Putar DIM tulisan AS STRING CLS INPUT "Tulisan anda :", tulisan DO LOCATE 13, (80 - LEN(tulisan)) \ 2 PRINT tulisan tulisan = RIGHT$(tulisan, 1) + LEFT$(tulisan, LEN(tulisan) - 1) LOOP UNTIL INKEY$ <> "" END
3. Bagaimana kalau putar dari kanan ke kiri. 4. Cobalah program tebak angka, berapa kali anda mampu selesai menebaknya?
Indoprog
29
Dasar Pemrograman
Oleh : Hendra, ST.
Modul 8, FUNGSI CIPTAAN DAN SUB RUTIN FUNGSI CIPTAAN Fungsi-fungsi bawaan yang disediakan oleh Basic 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. Basic 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.
Indoprog
30
Dasar Pemrograman
Oleh : Hendra, ST.
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 Basic, 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-ulangterhadap bagian program yang sama, dan membuat program lebih terstruktur. Pada Basic tata cara penulisan Sub Rutin adalah sebagai berikut: SUB namasub [(Parameterlist)] [STATIC] [statementblock]
Indoprog
31
Dasar Pemrograman
Oleh : Hendra, ST.
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 : Secara referensi, Argumen yang diberikan dengan cara ini kepada procedure dan diolah, kemudian hasil akhirnya akan didefinisikan pada variabel tersebut pada main program. 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) Print Nilai
' Call ' Akan tercetak 10
Pengiriman argumen secara Value : DIM Nilai As INTEGER Nilai = 1 contoh(Nilai) Print Nilai
' Tanpa Call ' 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.
Indoprog
32
Dasar Pemrograman
Oleh : Hendra, ST.
Dalam Basic anda dapat menentukan tingkatan/sifat variabel yang mengatur dimana variabel itu digunakan(level of access). Inilah tingkatan tersebut : 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. Variabel Shared, atau variabel global bisa digunakan pada seluruh bagian program maupun Sub Procedure tertentu. Nilai variabel ini dapat berubah selama program tersebut berjalan. Variabel Static, adalah variabel local, tetapi variabel ini nilainya tetap dipertahankan sampai pemanggilan berikutnya. Latihan : 1. Buatlah sub kotak double dan contoh pemakaiannya. 2. Buatlah fungsi ciptaan angka yang akan mencetak nama dari suatu angka yang diberikan. (0 = nol, 1 = satu, 2 = dua, …, 9 = sembilan). 3. Kembangkan fungsi yang dapat menghasilkan terbilang sampai angka ribuan. (1250 = Seribu duaratus limapuluh rupiah). Tugas 1. Kembangkan fungsi yang dapat menghasilkan terbilang sampai triliunan rupiah, serta kemampuan SEN.
Indoprog
33
Dasar Pemrograman
Oleh : Hendra, ST.
MODUL 9, 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 Basic.
MENDEKLARASIKAN SUATU RECORD TYPE Pada Basic 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
Indoprog
34
Dasar Pemrograman Dim Temp
Oleh : Hendra, ST.
As PESERTA
Peserta1.Nomor Peserta1.Nama Peserta1.Email Peserta1.Umur
= = = =
9224 "Hendra Soewarno" "[email protected]" 27
'komponen 'komponen 'Komponen 'Komponen
Nomor Nama Email Umur
Peserta2.Nomor Peserta2.Nama Peserta2.Email Peserta2.Umur
= = = =
9241 "Limada" "[email protected]" 26
'komponen 'komponen 'Komponen 'Komponen
Nomor Nama Email 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 Type SISWA NOINDUK NAMA TEORI PRAKTEK RATA End Type
RECORD TYPE SISWA AS AS AS AS AS
STRING * 10 STRING * 15 SINGLE SINGLE SINGLE
Input "Masukkan jumlah siswa ";JS Dim DSiswa(JS) AS SISWA 'MENGISI DATA For I = 1 TO JS STEP Print "RECORD KE Input "NO.INDUK Input "NAMA Input "TEORI Input "PRAKTEK DSISWA(I).RATA = NEXT I
Indoprog
'Deklarasi Array DSiswa 'berdasarkan Record Type SISWA
1 -";I :",DSISWA(I).NOINDUK :",DSISWA(I).NAMA :",DSISWA(I).TEORI :",DSISWA(I).PRAKTEK (DSISWA(I).TEORI+DSISWA(I).PRAKTEK)/2
35
Dasar Pemrograman
Oleh : Hendra, ST.
'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 END LATIHAN 1. Buatlah program untuk mengisi data berikut. NAMA SURYAJAYA SUTIMAN JUSMAN WIJAYA YUSNI TUTI
GOL A C B A B A
JAM KERJA 50 48 60 50 48 45
menghasilkan laporan dengan ketentuan. - Gaji Pokok PEGAWAI ditentukan sebagai berikut : Golongan Gaji Pokok/Bulan A Rp. 175.000,00 B Rp. 220.000,00 C Rp. 350.000,00 - jika jam kerja > 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 (berurut berdasarkan nama):
Indoprog
36
Dasar Pemrograman
Oleh : Hendra, ST. 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 ========================================================
Indoprog
37
Dasar Pemrograman
Oleh : Hendra, ST.
Modul 10, 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 Basic 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 bagian akhir.
ditambahkan pada
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 Indoprog
38
Dasar Pemrograman
Oleh : Hendra, ST.
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 Soewarno",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
Indoprog
39
Dasar Pemrograman
Oleh : Hendra, ST.
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 Latihan
Buatlah program yang dapat menyimpan data latihan Modul 10 ke Siswa.dat.
Indoprog
40
Dasar Pemrograman
Oleh : Hendra, ST.
Modul 11, PENGOLAHAN FILE ACAK Pada file sequential pengolahan datanya bersifat FIFO, tetapi dalam pengolahan data kadangkadang diperlukan proses pengolahan yng 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 NAMA TEORI PRAKTEK RATA END TYPE Dim DAT As
AS AS AS AS AS
STRING * 10 STRING * 15 SINGLE SINGLE SINGLE
SISWA
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. Indoprog
41
Dasar Pemrograman
Oleh : Hendra, ST.
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.
PERINTAH INPUT/OUTPUT PADA FILE ACAK Perintah menulis data PUT [#]filenum[,nomorrecord][,variable] Contoh : DAT.NOINDUK DAT.NAMA DAT.TEORI DAT.PRAKTEK DAT.RATA
= = = = =
"920403024" "Hendra" 70 80 (DAT.TEORI+DAT.PRAKTEK)/2
PUT #1,JlhRec+1,DAT
Menyimpan data dari variabel DAT ke file ACAK nomor 1, sebagai (JlhRec+1).
record baru pada akhir file
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.
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
Indoprog
42
Dasar Pemrograman
Oleh : Hendra, ST.
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
Indoprog
43
Dasar Pemrograman
Oleh : Hendra, ST.
‘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 < 60 THEN LULUS$="TIDAK" ELSE LULUS$ = "YA" PRINT USING POLA$;DAT.NOINDUK;DAT.NAMA$;DAT.TEORI; DAT.PRAKTEK;DAT.RATA;LULUS$ NEXT I CLOSE #1 END
LATIHAN Buatlah program yang dapat menyimpan data latihan Modul 10 ke Siswa.rec.
Indoprog
44
Dasar Pemrograman
Oleh : Hendra, ST.
Modul 12, PENGOLAHAN FILE BINARY Selain pengolahan data Sequential dan Random, Basic 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 keperluankeperluan 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.
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. 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
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 : Indoprog
45
Dasar Pemrograman
Oleh : Hendra, ST.
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.
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. Perintah Close untuk memastikan semua data dari buffer benar-benar ditulis ke media penyimpanan. 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)
Indoprog
'Mendapatkan ukuran file 1
46
Dasar Pemrograman
Oleh : Hendra, ST.
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 PRINT "Proses Selesai" END IF END
Indoprog
47
Dasar Pemrograman
Oleh : Hendra, ST.
Modul 13, PENANGANAN ERROR Sebagai manusia normal tidak akan terlepas dari berbagai kesilapan, demikian juga seorang programmer dalam pengembangan program dapat saja berbuat berbagai kesalahan maupun kesilapan. Berdasarkan jenisnya kesalahan dalam pemrograman terbagi menjadi tiga yaitu : 1. Syntax Error, adalah kesalahan yang disebabkan oleh kesalahan tata cara penulisan tanda baca, kesalahan pemakaian operator dan nilai. Kesalahan jenis ini akan dengan mudah dideteksi oleh kompiler maupun interpreter. 2. Logical Error, adalah kesalahan yang disebabkan oleh kesalahan logika maupun model atau metode yang digunakan untuk pemrosesan data, sehingga menyebabkan informasi yang dihasilkan menjadi salah. Kesalahan ini tidak dapat dideteksi oleh kompiler maupun interpreter, kesalahan ini disadari setelah melihat penyimpanan pada saat proses maupun hasil proses. Contoh : N = 1 Do Print N N = N + 2 Loop Until N = 10
Program diatas tidak pernah berhenti. karena nilai N tidak pernah sama dengan 10. Kesalahan Logika dapat juga terjadi karena kesalahan pengetikan nama variabel, dan ini merupakan salah satu kelemahan bahasa pemrograman Basic, jika dibandingan dengan Pascal muapun C Language dimana variabel harus dideklarasikan terlebih dahulu. Contoh : GajiPokok = 1000000 Bonus = 10000 GajiBersih = GajiPokol + Bonus Print GajiBersih
'Hasilnya 10000, bukan 1010000
3. Runtime Error, adalah kesalahan yang disebabkan oleh tidak tersedianya sumber daya atau kondisi yang normal bagi program untuk berjalan dengan baik, misalnya kekurangan memori komputer, disk full, atau pintu drive tidak terkunci, dll. Sebagai programmer yang baik, tentu saja harus mampu menghasilkan program dengan tingkat kesalahan yang minimal, dan usaha untuk meminimalisasi tingkat kesalahan program disebut proses debug. Pada Basic tersedia berbagai fasilitas untuk menangani kesalahan yang mungkin dilakukan oleh programmer, misalnya :
Indoprog
48
Dasar Pemrograman
Oleh : Hendra, ST.
4. Fasilitas Syntax Checking pada menu Option yang sangat berguna untuk mendeteksi kesalahan jenis "Syntax Error". 5. Menu Debug, yang memiliki fasilitas yang sangat bermanfaat untuk melacak Logical Error, tetapi keberhasilannya sangat tergantung kepada pemahaman programmer akan masalah yang terjadi. Adapun fasilitas pada menu Debug adalah sebagai berikut : • Step atau F8, digunakan untuk menjalankan program baris per baris, sehingga programmer dapat mengamati alur program secara baris perbaris sambil mengevaluasi hasil output yang dihasilkan. • Procedure Step atau F10, digunakan untuk menjalankan program baris per baris tanpa masuk ke bagian sub rutin, artinya sub rutin dianggap sebagai satu baris dari program. Fasilitas ini digunakan jika programmer telah yakin pada kebenaran sub rutin yang dibuat, sehingga proses pencarian lebih terfokus pada bagian tertentu. • Trace On, digunakan untuk memberikan sorotan pada baris yang sedang dijalankan. • Toggle BreakPoint, digunakan untuk menandai baris dimana proses eksekusi Pause dan masuk ke modus Step, fasilitas ini dapat digunakan programmer untuk memperkecil jangkauan pencarian kesalahan dengan modus Step karena tidak perlu melakukan Step dari awal, tetapi Step dilakukan mulai pada baris dimana sumber kesalahan dicurigai. • Clear Breakpoint, digunakan untuk menghapus semua Breakpoint. • On Error Goto label, digunakan untuk error handling, dimana jika terjadi kesalahan, maka proses program dialihkan ke label tertentu, dan jenis kesalahan dapat ditelusuri dari fungsi ERR yang akan mengembalikan nomor kesalahan, dan proses dapat diulangi dengan RESUME atau RESUME NEXT , dan anda dapat juga menggunakan On Error Resume Next untuk mengabaikan kesalahan. Fasilitas ini cocok untuk mengatasi Run Time Error, Contoh : ON ERROR GOTO Salah OPEN "A:Sumber.Dat" FOR INPUT AS #1 DO WHILE NOT EOF(1) LINE INPUT #1, Baris$ PRINT Baris$ LOOP END Salah: SELECT CASE ERR CASE 53 PRINT "File Sumber.Dat tidak ada" END CASE 71 PRINT "Drive tidak siap, [U]lang, [B]atal"; INPUT tanya$ IF tanya$ = "U" OR tanya$ = "u" THEN RESUME ELSE END END IF
Indoprog
49
Dasar Pemrograman
Oleh : Hendra, ST.
END SELECT END
Catatan : Nomor Error dapat dilihat pada bagian Help Basic "Runtime Error Code"
Indoprog
50