Dasar pemrograman
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
6,703
On Slideshare
6,639
From Embeds
64
Number of Embeds
4

Actions

Shares
Downloads
440
Comments
1
Likes
1

Embeds 64

http://materikuliah.info 43
http://techscien.wordpress.com 16
http://materisobhy.blogspot.com 4
http://www.materikuliah.info 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Dasar Pemrograman Oleh : Hendra, ST. KATA PENGANTARSelamat datang di dunia pemrograman komputer. Dewasa ini, jurusan komputer telah menjadi salah satu jurusan favorit bagi lulusan SMUuntuk melanjutkan pendidikannya di perguruan tinggi. Sebagai salah satu mahasiswa jurusankomputer, tentu saja topik algoritma dan pemrograman merupakan mata kuliah wajib, karenakesuksesan sebagai seorang mahasiswa jurusan komputer adalah kemampuan pemanfaatankomputer dan kemampuan menghasilkan berbagai aplikasi yang dapat bermanfaat bagi perusahaanmaupun masyarakat. Sesuatu yang harus disadari para mahasiswa adalah dalam mempelajari pemrogramankomputer bukanlah sesuatu yang mudah, karena sangat membutuhkan minat dan bakat, dan bukuini 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
  • 2. Dasar Pemrograman Oleh : Hendra, ST.Modul 1, PROGRAM KOMPUTER dan ALGORITMAPROGRAM KOMPUTERProgram komputer adalah suatu himpunan dari instruksi yang memberitahukan kepada komputerapa yang harus dilakukan. Instruksi tersebut mungkin memberitahukan kepada komputer untukmenambah, membandingkan, dan membuat keputusan berdasarkan hasilnya.BAHASA KOMPUTERAgar suatu komputer dapat mengenali instruksi yang anda berikan, instruksi tersebut perlu ditulisdalam bahasa yang dimengerti oleh komputer.HIGH-LEVEL dan LOW-LEVELPada dasarnya orang mengolongkan Bahasa komputer menjadi dua golongan besar yaitu High-Level dan Low-Level.Bahasa pemrograman seperti BASIC, PASCAL, FORTRAN dan C, memungkinkan programmeruntuk menulis program yang tidak begitu tergantung pada jenis komputer. Berdasarkan hal inilahbahasa-bahasa ini dapat dikategorikan sebagai high-level karena lebih dekat kepada manusia.Sebaliknya, bahasa assembly dikategorikan sebagai low-level karena mereka sangat dekat kepadahardware.Keuntungan utama dari bahwa high-level dibandingkan dengan low level adalah lebih mudahdibaca, ditulis, dan ditangani. Selanjutnya program yang ditulis dengan bahasa high-level harusditerjemahkan menjadi bahasa mesin melalui suatu compiler atau interpreter.INTERPRETER dan COMPILERKetika anda menggunakan suatu interpreter, ia akan membaca perintah source code baris perbaris,kemudian menterjemahkannya menjadi perintah mesin yang bersesuaian (kode mesin) danmenjalankannya seketika. Kode mesin ini tidak disimpan; sehingga ketika anda mencobamenjalankan program yang sama pada kesempatan berikutnya, anda membutuhkan source code daninterpreter untuk menjalankannya.Indoprog 2
  • 3. Dasar Pemrograman Oleh : Hendra, ST.Ketika anda menggunakan suatu compiler, ia akan membaca perintah source code ... dan menuliskode mesin. Setelah selesai keseluruhan kode mesin akan disimpan untuk pemakaian selanjutnya.Ketika anda ingin menjalankan program tersebut, system operasi akan menjalankan kode mesinyang telah disimpan – dalam hal ini source code tidak diperlukan lagi. Eksekusi menjadi lebihcepat, dan dapat dijalankan dikomputer lain (dalam hal ini pada komputer dan system operasi yangsama)KOMPUTER dan ALGORITMAUntuk membuat komputer melakukan sesuatu, anda perlu untuk menulis program komputer. Dalammenulis suatu program komputer, kita perlu memberitahukan kepada komputer, langkah-langkahpersis apa yang harus ia lakukan. Ketika komputer menjalankan program tersebut, ia akanmelakukan setiap langkah secara mesin untuk mencapai tujuan akhir.Ketika anda memberitahu kepada komputer apa yang harus dilakukan, anda perlu memilihbagaimana hal tersebut dilakukan. Dari sinilah Algoritma Komputer muncul. Algoritma adalahteknik dasar untuk menyelesaikan suatu pekerjaan. Perhatikan contoh berikut untuk membantupengertian anda tentang konsep dari algoritma.Katakanlah misalnya anda mempunyai teman yang baru tiba di airport, dan teman anda inginberangkat dari airport ke rumah anda. Berikut ini adalah empat algoritma yang berbeda yangmungkin 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 dengancara yang berbeda. Masing-masing algoritma diatas juga menghabiskan waktu dan biaya yangberbeda. Naik taxi, adalah contoh yang paling cepat, tetapi paling mahal. Naik bus mungkin adalahpaling hemat, tetapi lambat. Tentu saja anda perlu memilih algortima sesuai dengan situasi dankondisi.Dalam pemrograman komputer, juga terdapat banyak cara – algoritma -- yang berbeda. Masing-masing algoritma memiliki keuntungan dan kerugian untuk situasi yang berbedaIndoprog 3
  • 4. Dasar Pemrograman Oleh : Hendra, ST.PSEUDOCODEPSEUDOCODE adalah cara sederhana untuk menggambarkan algoritma tanpa salah satu bahasapemrograman. Pseudocode sering digunakan pada buku-buku Computer science dalam contohmereka sehingga dapat dimengerti oleh para programmer dengan bahasa komputer yang berbeda.Contoh notasi pseudocode:<variable> = <expression>Berhubungan dengan kondisi:if <condition> lakukan sesuatuelse lakukan hal yang lainBerhubungan dengan looping:while <condition> lakukan sesuatufor <variable> from <nilai awal> to <nilai akhir> by <step> lakukan sesuatuPemanggilan fungsi:<function>(<arguments>)Deklarasi fungsi:function <function name>(<arguments>) lakukan sesuatu dengan arguments return sesuatu (optional)Deklarasi variabel:declare <variable-name> as <type>Deklarasi array:declare <array-name>[<lower-bound> to <upper-bound>] of <type>Struktur data:struct <name_of_new_type> <declaration(s) of internal variables>Mengakses field yang terdapat pada struktur:<structure variable name>.<field name>FLOWCHARTFLOWCHART adalah salah satu cara menggambarkan algoritma dengan menggunakan simbol.Start dan EndIndoprog 4
  • 5. Dasar Pemrograman Oleh : Hendra, ST.Input dan OutputProsesKondisiKonektorAliranTugas : 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
  • 6. Dasar Pemrograman Oleh : Hendra, ST.Modul 2, BAHASA PEMROGRAMAN BASICSEJARAH BAHASA BASICBahasa BASIC (standing for Beginners All Purpose Symbolic Instruction Code) dibuat oleh JohnG.Kemmeny dan Thomas E.Kurtz di Dartmouth College pada tahun 1964 merupakan bahasatingkat tinggi yang relatif mudah dipelajari dan dimengerti.Adapun tokoh yang berperan penting dalam kepopularan bahasa BASIC adalah Bill Gates dan PaulAllen (Microsoft Corporation), dimana mereka membuat intepreter BASIC untuk Altair PC(dengan menggunakan memori sebesar 4KB meliputi programd dan source code). Dalamperkembangan 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 systemoperasi PC-DOS, sedangkan salah satu compilernya yang terkenal adalah BASIC yang dilengkapidengan sistem pemrograman yang terstruktur, Library, on-line help yang terpadu, editor yangefisien (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 systemUnstructured 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 30Indoprog 6
  • 7. Dasar Pemrograman Oleh : Hendra, ST. 110 PRINT "Goodbye "; 120 FOR I = 1 TO 200 130 PRINT A$; " "; 140 NEXT I 150 PRINTModern 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 PRINTLIMA LANGKAH DASAR PEMBUATAN PROGRAM 1. Recognizing the need for a program to solve a problem. 2. Planning the program and selecting the tools to solve the problem. 3. Writing the program in the programming language of choice. 4. 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 Suffix Maximum Minimum Size Strings $ 32,767 chars 0 chars Integers % 32,767 -32,767 2 Long Integers & 2,147,483,647 -2,147,483,648 4 Single ! +-3.402823 E+38 +-1.401298 E-45 4 Double # +-1.7976931 D+308 +-4.940656 D-324 8 User definedOPERATORArithmetic operators : melakukan tugas perhitungan Operator Kegunaan Operator KegunaanIndoprog 7
  • 8. Dasar Pemrograman Oleh : Hendra, ST. ^ Pangkat Pembagian Integer - Negatif Mod Sisa bagi * Perkalian + Penjumlahan / Pembagian - PenguranganRelational 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 denganLogical 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 TString operators: mengabung (+), dan membandingkan StringLABEL dan VARIABELPenulisan label pada Basic harus memenuhi ketentuan :Maksimum 40 character, dimulai dengan huruf A..Zhuruf besar/kecil sama, tidak sama dengan reserved word, dan tidak pakai spasiNama variabel juga memiliki ketentuan antara lain :Maksimum 40 character, diawali dengan huruf A..Z, diakhiri dengan $, %, &, !, # untukmenunjukan typeTidak boleh sama dengan reserved word, tidak boleh pakai spasi dan spesial character.PERINTAH DASAR INPUT OUTPUTKomputer hanya melaksanakan apa yang diperintahkan pemrogram. Jadi, dalam membuat programuntuk menyelesaikan suatu masalah, kita harus tahu cara penyelesaiannya. Untuk itu diperlukantahap-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 akanberarti tanpa proses OUTPUT.Indoprog 8
  • 9. 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 ENDContoh 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% ENDCatatan :Untuk memberi keterangan pada program dapat digunakan REM atau LATIHAN 1. Tuliskan hasil evaluasi ekspresi berikut 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 AndIndoprog 9
  • 10. Dasar Pemrograman Oleh : Hendra, ST. (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.2. 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 1 + 1 ______ 1 + "100" Type mismatch, mengapa ? "A" + "B" ______ Tuliskan kesimpulan anda operator pada type data. Print "Untuk kemajuan Indonesia"Indoprog 10
  • 11. 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
  • 12. 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.BasTugas 4. Buatlah program menghitung luas lingkaran. 5. Buatlah program konversi suhu Celcius ke Farenheit, Kelvin, Reamur. Jawaban : REM Program Konversi Celcius ke Reamur, Kelvin dan Fahrenheit DIM c AS SINGLE DIM r AS SINGLE DIM k AS SINGLE DIM f AS SINGLE CLSIndoprog 12
  • 13. 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 ENDIndoprog 13
  • 14. Dasar Pemrograman Oleh : Hendra, ST.Modul 3, STRUKTUR KENDALI IFStruktur Kendali memegang peranan yang sangat penting dalam pembuatan program dengankomputer, tanpa adanya struktur kendali kita hanya dapat membuat program yang sederhanadimana prosesnya hanya dijalankan dari baris pertama sampai selesai. Pada kasus-kasus tertentu,ada kalanya baris tertentu tidak boleh dilaksanakan apabila kondisi tidak dipenuhi, ataupun baris-baris tertentu harus diulang sampai suatu kondisi terpenuhi.PILIH TAMBAHANIf ekspresi logika Then Statement ...End IfContoh :PTKP = 240000If Nikah$ = "Y" Then PTKP = PTKP + 120000End IfKeterangan : Jika status nikah adalah "Y" (Ya), maka PTKP (Penghasilan Tidak Kena Pajak)ditambah 120000PILIH ANTARA DUAIF ekspresi logika Then Statement1 ...Else Statement2 ...End IfContoh :If JlhAnak > 3 Then PTKP = PTKP + (3 * 120000)Else PTKP = PTKP + (JlhAnak * 120000)End IfKeterangan : Jika Jumlah Anak diatas 3 Orang, maka PTKP ditambah 360000, sebaliknya adalahJlhAnak dikali 120000.PILIH ANTARA BANYAKIF ekspresi logika 1 Then Statement1 ...Indoprog 14
  • 15. Dasar Pemrograman Oleh : Hendra, ST.ElseIF ekspresi logika 2 Then Statement2 ...ElseEndifBerfungsi menentukan Block statement yang mana akan dijalankan oleh komputer sesuai denganekspresi logika yang menghasilkan nilai benar.Contoh :PKP = Penghasilan - PTKP Penghasilan Kena Pajak 1 BulanPKPT = PKP * 12 Penghasilan Kena Pajak 1 TahunIf PKPT <= Then PPH = 0ElseIF PKPT <= 25000000 Then PPH = PKP * 0.05ElseIF PKPT <= 50000000 Then PPH = 1250000 + (PKPT-25000000)* 0.1ElseIF PKPT <= 100000000 Then PPH = 1250000 + 2500000 + (PKPT-50000000)*0.25ElseIF PTKP <= 200000000 Then PPH = 1250000 + 2500000 + 7500000 + (PKPT-100000000)*0.25Else PPH = 1250000 + 2500000 + 7500000 + 25000000 + (PKPT-100000000)*0.35End IfPPHB = PPH / 12 Pajak Penghasilan Bulan TersebutKeterangan : PPH dihitung berdasarkan PKPTatauSelect Case Variabel Case ekspresi 1 Statement1 ... Case ekspresi 2 Statement2 ... ... Case Else ...End SelectContoh :Select Case PKPT Case <= 0 PPH = 0 Case <= 25000000 PPH = PKP * 0.05 Case <= 50000000 PPH = 1250000 + (PKPT-25000000)* 0.1Indoprog 15
  • 16. 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.35End SelectLatihanBuatlah 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
  • 17. Dasar Pemrograman Oleh : Hendra, ST.Modul 5, STRUKTUR KENDALI PERULANGANSalah satu kelebihan komputer daripada manusia adalah ia tidak pernah bosan terhadap tugas-tugasrutin. Inilah yang menyebabkan komputerisasi selalu diterapkan terhadap tugas-tugas yang rutin.LOOPING COUNTERDigunakan untuk proses berulang yang jumlah perulangannya ditentukan berdasarkan perhitungan(sistem counter).FOR counter = mulai TO selesai [STEP selisih] Statement ...NEXT [counter]Contoh :Mencetak bilangan 0123456789For I = 0 To 9 Step 1 Print INext ILOOPING TRAPPINGPerulangan jenis ini ditentukan berdasarkan kondisi tertentu.Pemeriksaan diawalDO [{WHILE | UNTIL} ekspresi logika] Statement ...LOOPContoh :Mencari KPK dari dua bilanganInput "Bilangan pertama :", pertamaInput "Bilangan kedua :", keduaIf pertama > kedua Then Jika bilangan pertama lebih besar Lipat = pertama Bagi = keduaElse Lipat = kedua Bagi = pertamaEnd IFN = 1Do While ((Lipat*N) Mod Bagi) <> 0 Kelipatan dinaikan jikaIndoprog 17
  • 18. Dasar Pemrograman Oleh : Hendra, ST. N = N + 1 sisa bagi belum nolLoopPrint "KPK kedua bilangan adalah :", (Lipat*N)ENDNB : operator matematika MOD adalah untuk sisa bagiPemeriksaan diakhirDO [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 !"ENDPerintah EXIT DO dapat digunakan untuk meninggalkan proses DO - LOOPContoh :N = 1password$ = "INDOPROG"DO Color 7,0 If N > 3 Then EXIT DO End IF Print "Password"; Color 0,0 Input pass$ N = N + 1LOOP until pass$ = password$If N > 3 Then Print "Akses ditolak !"Else Print "Selamat bergabung !"End IFENDLatihan :1. Buatlah program mencetakIndoprog 18
  • 19. Dasar Pemrograman Oleh : Hendra, ST.11111 1234522222 1234533333 1234544444 1234555555 1234512345 123451234 2345123 34512 451 5Jawaban A:REM Jawaban soal ADIM i AS INTEGERDIM j AS INTEGERFOR i = 1 TO 5 STEP 1 FOR j = 1 TO 5 STEP 1 PRINT j; NEXT j PRINTNEXT iJawaban B:REM Jawaban Soal BDIM i AS INTEGERDIM j AS INTEGERFOR i = 5 TO 1 STEP -1 FOR j = 1 TO i STEP 1 PRINT j; NEXT j PRINTNEXT i2. Buatlah program mencetak barisan fibonacci : 1 1 2 3 5 8 13 …Jawaban :REM Program Cetak barisan FibonacciDIM i AS INTEGERDIM n AS INTEGERDIM f1 AS LONGDIM f2 AS LONGDIM fi AS LONGINPUT "Jumlah Suku ?", if1 = 1f2 = 1FOR 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 = fiIndoprog 19
  • 20. Dasar Pemrograman Oleh : Hendra, ST. END IFNEXT nENDTugas 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 - 1Indoprog 20
  • 21. Dasar Pemrograman Oleh : Hendra, ST.Modul 6, VARIABEL ARRAYArray adalah sekumpulan data yang menggunakan nama variabel yang sama. Tiap-tiap nilai dariarray disebut sebagai elemen dan memiliki index. Setiap elemen array adalah sebuah variabel juga.MENCIPTAKAN VARIABEL ARRAYUntuk menciptakan variabel array dapat menggunakan perintah :DIM variable[(subscripts)] [AS type]Contoh :DIM A(20) As IntegerAkan menciptakan variabel array yang bernama A yang memiliki 20 elemen (mulai dari index 0 s/d19), yang masing-masing dapat menampung data integer, dan memiliki nilai awal 0 (nol).MENGGUNAKAN VARIABEL ARRAYPenggunakan Variabel Array sama saja dengan variabel biasa, Cuma kita perlu menyebutkannomor index elemen yang diinginkan.Contoh :A(0) = 100A(1) = 200A(2) = 300Akan mengisi nilai 100 ke elemen pertama, 200 ke elemen kedua,dan 300 ke elemen ketiga.Catatan : Elemen pertama dari array dimulai dengan nomor index 0Contoh lain :For I = 0 To 19 Step 1 Input "Masukkan Nilai :",A(I)Next IAkan menanyakan kepada pemakai untuk mengisi elemen pertama s/d elemen keduapuluh.Contoh lain :Total = 0For I = 0 To 19 Step 1 Total = Total + A(I) A(0), A(1), ..., A(19)Next IPrint "Total :",TotalIndoprog 21
  • 22. 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. Staticarray dapat kita bentuk tanpa perintah khusus, tetapi terbatas sampai nomor index ke 10 saja tanpadipengaruhi jumlah dimensi.Contoh :For I = 0 To 10 Step 1 Input "Masukkan Nilai :",B(I)Next ITotal = 0For I = 0 To 10 Step 1 Total = Total + B(I)Next IPrint "Total :",TotalProgram diatas dapat dijalankan tanpa kesalahan walaupun variabel array B tidak dideklarasikansebagai variabel array. Hal ini karena kita menggunakan Static array yang otomatis disediakan olehBasic, tetapi hanya terbatas sampai nomor index ke 10 saja.Pada defaultnya index awal dari variabel array adalah dimulai dari 0, tetapi hal ini bisa diubahdengan perintah OPTION BASE 1.Contoh :OPTION BASE 1DIM A(30)For I = 1 To 30 Input "Masukkan Nilai :",A(I)Next IIndex 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 IAkan menghasilkan variabel array C, dengan elemen pertama memiliki nomor index 5, dan elementerakhir memiliki nomor index 15.Anda dapat juga menggunakan fungsi LBound dan UBound untuk mendapatkan index awal danindex akhir dari suatu array.Contoh :DIM C(5 To 15)Indoprog 22
  • 23. Dasar Pemrograman Oleh : Hendra, ST.For I = LBound(C) To UBound(C) Step 1 Input "Masukkan Nilai :",A(I)Next ILatihan1. 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 ENDIndoprog 23
  • 24. Dasar Pemrograman Oleh : Hendra, ST.Tugas1. 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
  • 25. Dasar Pemrograman Oleh : Hendra, ST.Modul 7, FUNGSI BANTU BAWAANFungsi bantu adalah fasilitas yang disediakan untuk membantu programmer dalammengembangkan program. Dengan adanya fungsi bantu bawaan programmer tidak perlumengembangkan program untuk melakukan hal yang sama.Contoh :Pada Basic telah tersedia fungsi bantu Sinus yang dapat digunakan untuk mendapatkan nilai sinusdari suatu sudut dalam radian.Dim B As DoubleB = Sin(30 * 3.14/180)Akan mengisi nilai sinus sudut 30 derajat ke variabel BTanpa mengunakan fungsi bantu Sinus, programmer dapat mengembangkan program sendiri untukmelakukan 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 = SinusPotongan program diatas akan menghasilkan nilai Sinus 30 derajat ke variabel B.Dengan menggunakan fungsi bantu bawaan yang telah tersedia pekerjaan programmer akan lebihterfokus pada program yang akan dikembangkan.FUNGSI BANTU STRINGLEFT$ (stringexpression,n)Mengembalikan sejumlah karakter string dari suatu data string dari sebelah kiri.Contoh :Print Left$("IndoProg",4) Akan mencetak IndoIndoprog 25
  • 26. 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 ProgMID$(stringexpression,start[,length])Mengembalikan sejumlah karakter string dari suatu string mulai posisi tertentu.Contoh :Print Mid$("1234567890",3,4) Akan mencetak 3456Print Mid$("1234567890",3) Akan mencetak 34567890LTRIM$(stringexpression)Mengembalikan string dengan menghilangkan spasi sebelah kiri.Contoh :A$ = " 100"B$ = LTRIM$(A$)Print A$ Akan mencetak 100Print B$ Akan mencetak 100RTRIM$(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 2Print INSTR(4,"ABCDABCD","A") Akan mencetak 5Print INSTR("ABCD","a") Akan mencetak 0LCASE$(stringexpression)Mengembalikan suatu string yang telah diubah ke huruf kecil.Contoh :Print LCase$("IndoProg") Akan mencetak indoprogUCASE$(stringexpression)Mengembalikan string yang telah dibuat huruf besar.Contoh :Print UCase$("IndoProg") Akan mencetak INDOPROGSPACE$(n)Mengembalikan string yang berisi sejumlah spasi.Contoh :Indoprog 26
  • 27. 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) Akan mencetak AAAAAAAAAAPrint String$(10,"A") Akan mencetak AAAAAAAAAALEN(stringexpression)Mengembalikan jumlah huruf suatu data string.Contoh :Print Len("Indonesia Programmer") Akan mencetak 20FUNGSI BANTU KONVERSISTR$(numeric-expression)Mengembalikan string dari suatu expresi numericContoh :A = 100B$ = Str$(A) B berisi "100"VAL(stringexpression)Mengembalikan numeric dari suatu expresi stringContoh :B$ = "100"A = Val(B) A berisi 100C = "IndoProg"D = Val(C) D berisi 0ASC(stringexpression)Mengembalikan nilai ASCII dari suatu character.Contoh :Print Asc("A") Akan mencetak 65CHR$(n)Mengembalikan character ASCII n.Contoh :Print Chr$(65) Akan mencetak "A"FUNGSI BANTU ARITMATIKASIN(numeric-expression)Indoprog 27
  • 28. 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 jelasEXP(numeric-expression)Mengembalikan nilai exponential.Cukup jelasLOG(numeric-expression)Mengembalikan nilai logaritma natural.Cukup jelasSQR(numeric-expression)Mengembalikan nilai akar pangkat dua.Contoh :Print Sqr(9) Akan mencetak 3INT(numeric-expression)Mengembalikan nilai bulat dari suatu desimal.Contoh :Print Int(3.5) Akan mencetak 3FUNGSI BANTU RANDOMRANDOMIZE [integer-expression]RANDOMIZE TIMERMemberikan bibit kepada nilai random.RNDMengembalikan nilai pseudo random antara 0 s/d < 1Contoh :Randomize TimerPrint Int(RND*100) Akan mencetak suatu bilangan random 0 s/d 99FUNGSI BANTU WAKTUIndoprog 28
  • 29. 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.TIMERMengembalikan jumlah detik sejak pukul 00:00:00TIMER dapat digunakan pada perintah RANDOMIZE TIMER.Contoh :‘PROGRAM TEBAK ANGKACLSRANDOMIZE TIMER :HASIL = INT(RND*100)+1N = 0DO 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=TEBAKPRINT "TEBAKAN ANDA SEBANYAK ";N;" KALI"ENDLatihan : 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
  • 30. Dasar Pemrograman Oleh : Hendra, ST.Modul 8, FUNGSI CIPTAAN DAN SUB RUTINFUNGSI CIPTAANFungsi-fungsi bawaan yang disediakan oleh Basic adalah bersifat umum, sehingga kadang-kadangprogrammer harus membuat fungsi sendiri sesuai dengan kebutuhannya.Misalnya :Dalam mengembangkan program keuangan, seorang programmer akan banyak membutuhkanfungsi-fungsi Time Value of Money seperti Present Value, Future Value, Depresiasi dll.Basic menyediakan fasilitas bagi programmer yang ingin mengembangkan fungsi ciptaannyasendiri. Adapun tata cara penulisannya adalah sebagai berikut :FUNCTION namafungsi[(parameterlist)] [STATIC] [statementblock] namafungsi = expression [statementblock]END FUNCTIONtype data yang dikembalikan ditentukan oleh akhiran pada nama tersebut(%, &, !, #, atau $) yangmasing-masing adalah INTEGER, LONG, SINGLE, DOUBLE dan STRING.Contoh :FUNCTION SLN#(cost AS double, salvage AS double, life AS single) SLN# = (cost-salvage)/lifeEND FUNCTIONFungsi 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# = npvEND FUNCTIONatau dengan rumus pertumbuhanFUNCTION FV#(pv AS double, rate AS single, term AS integer) FV# = np*(1+rate)^termEND FUNCTIONFungsi diatas adalah fungsi ciptaan untuk menghitung Future Value dari suatu nilai uang, jikadiketahui suku bunga per periode dan jumlah periode yang diinginkan.Indoprog 30
  • 31. Dasar Pemrograman Oleh : Hendra, ST.Contoh :Misalnya anda memiliki uang Rp. 1.000.000 (satu juta), anda menyimpannya ke Bank dengan sukubunga 10% per tahun, berapa uang anda setelah disimpan 3 tahun ?Catatan :Pada Basic, fungsi ciptaan disimpan pada lokasi yang berlainnan dengan program utama, untukberalih ke program utama maupun fungsi ciptaan anda dapat menggunakan tombol F2Anda dapat menggunakan perintah EXIT FUNCTION untuk keluar dari fungsi.Contoh :FUNCTION PRIMA! (bilangan AS LONG)DIM i AS INTEGERIF bilangan < 2 THEN PRIMA! = 0 semua bilangan < 2 bukan primaELSEIF bilangan < 4 THEN PRIMA! = 1 bilangan 2 dan 3 adalah primaELSE 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, primaEND IFEND FUNCTIONMENGGUNAKAN FUNGSI CIPTAANCara menggunakan fungsi ciptaan sama saja dengan fungsi bawaan, contoh :DIM I AS LONGFOR I = 1 To 30 If PRIMA!(I) = 1 Then Print I End IfNEXT IAkan mencetak bilangan prima antara 1 s/d 30SUB RUTINSub Rutin merupakan sebagian dari program. Adapun keuntungan dari pembentukan adalahmenghindari pengetikan yang berulang-ulangterhadap bagian program yang sama, dan membuatprogram lebih terstruktur.Pada Basic tata cara penulisan Sub Rutin adalah sebagai berikut:SUB namasub [(Parameterlist)] [STATIC] [statementblock]Indoprog 31
  • 32. Dasar Pemrograman Oleh : Hendra, ST.END SUBContoh :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 SUBSub 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, kemudianhasil akhirnya akan didefinisikan pada variabel tersebut pada main program.Dengan Value/Nilai, Argumen ini hanya berupa nilai yang dipergunakan oleh procedure pada saatpengolahan.Contoh :SUB contoh(A as INTEGER) A = 10END SUBPengiriman argumen secara Referensi :DIM Nilai As INTEGERNilai = 1Call contoh(Nilai) CallPrint Nilai Akan tercetak 10Pengiriman argumen secara Value :DIM Nilai As INTEGERNilai = 1contoh(Nilai) Tanpa CallPrint Nilai Akan tercetak 1Jadi anda perlu berhati-hati dalam pemakaian Variabel yang digunakan sebagai parameter pada saatpemanggilan SUB RUTIN.static, menyatakan nilai variabel local dalam function tidak dibuang ketika fungsi atau sub berakhir.Indoprog 32
  • 33. Dasar Pemrograman Oleh : Hendra, ST.Dalam Basic anda dapat menentukan tingkatan/sifat variabel yang mengatur dimana variabel itudigunakan(level of access). Inilah tingkatan tersebut :Variabel Local, hanya bisa digunakan pada Sub Procedure atau function tersebut telah selesaidikerjakan, maka variabel lokal tersebut dibuang dari memory dan tidak lagi dipergunakan olehbagian program lain.Variabel Shared, atau variabel global bisa digunakan pada seluruh bagian program maupun SubProcedure tertentu. Nilai variabel ini dapat berubah selama program tersebut berjalan.Variabel Static, adalah variabel local, tetapi variabel ini nilainya tetap dipertahankan sampaipemanggilan 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
  • 34. Dasar Pemrograman Oleh : Hendra, ST.MODUL 9, TYPE DATA RECORDRecord 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 TYPEPada Basic Record Type dapat dideklarasikan dengan penulisan berikut :Syntax :Type nama <nama elemen 1> AS <typedata> <nama elemen 2> AS <typedata> ...End TypeContoh :Type PESERTA Nomor AS String*10 Nama AS String*20 Email AS String*30 Umur AS IntegerEnd TypeMendeklarasikan type data PESERTA yang merupakan kumpulan dari data Nomor, Nama, Email,dan Umur.MENDEKLARASIKAN VARIABEL RECORD TYPEUntuk mendeklarasikan variabel berdasarkan Record Type tertentu dengan menggunakan perintahDIM.Contoh :Dim DataPeserta As PESERTAMendeklarasikan variabel DataPeserta yang memiliki type PESERTA, sehingga variabelDataPeserta memiliki komponen Nomor, Nama, Email dan Umur.MENGGUNAKAN VARIABEL RECORD TYPEPemakaian variabel Record Type sama saja dengan variabel biasa, dan kita juga dapat menyatakanmasing-masing komponennya.Contoh :Dim Peserta1 As PESERTADim Peserta2 As PESERTAIndoprog 34
  • 35. Dasar Pemrograman Oleh : Hendra, ST.Dim Temp As PESERTAPeserta1.Nomor = 9224 komponen NomorPeserta1.Nama = "Hendra Soewarno" komponen NamaPeserta1.Email = "hendra@indoprog.com" Komponen EmailPeserta1.Umur = 27 Komponen UmurPeserta2.Nomor = 9241 komponen NomorPeserta2.Nama = "Limada" komponen NamaPeserta2.Email = "limada@hsbc.com" Komponen EmailPeserta2.Umur = 26 Komponen UmurRecord Type banyak digunakan dalam pengolahan data, dan random file karena menawarkanfleksibilitas dan kemudahan dalam pemakaiannya.Contoh :Temp = Peserta1Peserta1 = Peserta2Peserta2 = TempatauSWAP Peserta1, Peserta2Menukar data Peserta1 dengan Peserta2 dan sebaliknya, tanpa perlu menyebutkan subkomponennya. Dapatkah saudara bayangkan kalau hal tersebut tidak menggunakan Record Type ?Contoh :Program isi data siswa dan sortirDEKLARASI RECORD TYPE SISWAType SISWA NOINDUK AS STRING * 10 NAMA AS STRING * 15 TEORI AS SINGLE PRAKTEK AS SINGLE RATA AS SINGLEEnd TypeInput "Masukkan jumlah siswa ";JSDim DSiswa(JS) AS SISWA Deklarasi Array DSiswa berdasarkan Record Type SISWAMENGISI DATAFor 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 IIndoprog 35
  • 36. Dasar Pemrograman Oleh : Hendra, ST.MENGURUT DATA BERDASARKAN NILAI RATA-RATAFor 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 IfNext ICLSPrint " HASIL UJIAN SISWA"Print " BASIC PROGRAMMING MEI 2001"PrintPrint "-------------------------------------------------------------------"Print "NO.INDUK NAMA TEORI PRAKTEK RATA-RATA LULUS "Print "-------------------------------------------------------------------"POLA$=" ###.## ###.## ###.## "VIEW PRINT 4 TO 23For 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 IENDLATIHAN1. Buatlah program untuk mengisi data berikut. NAMA GOL JAM KERJA SURYAJAYA A 50 SUTIMAN C 48 JUSMAN B 60 WIJAYA A 50 YUSNI B 48 TUTI A 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
  • 37. 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
  • 38. Dasar Pemrograman Oleh : Hendra, ST.Modul 10, PENGOLAHAN SEQUENTIAL FILEFile merupakan fasilitas penyimpanan data pada external storage yang bersifat permanen, jikadibandingkan dengan penyimpanan ke RAM yang sifatnya sementara. Dengan pemakaian file kitadapat menghemat pemakaian RAM komputer yang memiliki jumlah yang terbatas serta dapatmelakukan dokumentasi untuk jangka waktu yang panjang.Pada Basic pengolahan file dapat dibagi atas tiga jenis, yaitu : 1. SEQUENTIAL FILE 2. RANDOM FILE 3. BINARY FILEPada Sequential file (file urut) proses pengolahannya dilakukan secara linier dari awal sampaiakhir, tanpa bisa kembali kebagian sebelumnya, kecuali proses dimulai lagi dari awal. Jadi dalampengolahan datanya bersifat first in first out, artinya pembacaan data dari file ini harus dimulai daridata yang paling awal.Pada umumnya pengolahan data yang menggunakan file sebagai media INPUT maupun OUTPUTmemiliki tiga tahap, yaitu : 1. Tahap membuka file (OPEN) 2. Tahap memproses (INPUT/OUTPUT) 3. Dan yang terakhir adalah tahap menutup file (CLOSE)MEMBUKA FILE SEQUENTIALUntuk membuka file sequential yang akan diproses dapat digunakan penulisan sebagai berikut :Syntax :Open filename [FOR mode] AS [#]filenumdimana mode terdiri dari :INPUT, membuka file untuk proses INPUTOUTPUT, membuka file baru untuk proses OUTPUTAPPEND, membuka file untuk untuk proses OUTPUT dimana data baru ditambahkan padabagian akhir.Contoh :Open "Siswa.Dat" For Append AS #1Akan membuka Siswa.Dat sebagai OUPUT dimana data baru ditambahkan pada bagian akhir. Jikafile Siswa.Dat belum ada, maka akan dibuat yang baru.PROSES INPUT/OUTPUTPerintah proses INPUT/OUTPUT pada sequential file sangat tergantung kepada bentuk perlakuanterhadap data. Untuk penulisan yang berorientasi pada baris, anda dapat menggunakan perintahIndoprog 38
  • 39. Dasar Pemrograman Oleh : Hendra, ST.PRINT, dan pembacaanya dapat menggunakan LINEINPUT. Penulisan yang berorientasi kepadadata, anda dapat menggunakan perintah WRITE dan INPUT untuk proses pembacaannya.Syntax :PRINT #filenumber,[USING stringexpressin;]expression listWRITE #filenumber[,expressionlist]INPUT #filenumber, variablelistLINEINPUT #filenumber, variable-stringContoh :Write #1, "920403024","Hendra Soewarno",80,90menulis ke file nomor 1, dan data dapat dibaca kembali dengan perintah :Input #1,Nim$,Nama$,Teori,PraktekCatatan :Anda dapat menggunakan fungsi bantu EOF(filenumber) untuk memeriksa apakah berada diposisiakhir file.PROSES CLOSEUntuk menutup file dapat digunakan perintah CLOSE.Syntax :CLOSE #filenumberContoh :CLOSE #1menutup file nomor 1.Contoh :PROGRAM MENGISI DATA KE FILE SISWA.DATOPEN "SISWA.DAT" FOR APPEND AS #1DO 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 #1ENDPROGRAM BACA DATA DARI SISWA.DAT DAN MENCETAK KE LAYARCLSIndoprog 39
  • 40. Dasar Pemrograman Oleh : Hendra, ST.OPEN "SISWA.DAT" FOR INPUT AS #1PRINT "-------------------------------------------------------------------"PRINT "NO.INDUK NAMA TEORI PRAKTEK RATA-RATA LULUS "PRINT "-------------------------------------------------------------------"POLA$=" ###.## ###.## ###.## "VIEW PRINT 4 TO 23WHILE 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$WENDCLOSE #1ENDLatihanBuatlah program yang dapat menyimpan data latihan Modul 10 ke Siswa.dat.Indoprog 40
  • 41. Dasar Pemrograman Oleh : Hendra, ST.Modul 11, PENGOLAHAN FILE ACAKPada file sequential pengolahan datanya bersifat FIFO, tetapi dalam pengolahan data kadang-kadang diperlukan proses pengolahan yng sifatnya acak sehingga pengolahannya dapat dilakukandengan cepat dan sederhana.File sequential banyak digunakan pada ekspor/impor data antar sistem dimana format pada sistemyang satu tidak dikenali oleh sistem lain, sehingga data dari suatu sistem perlu diekspor dalambentuk teks, kemudian diimpor kembali oleh sistem lain. Pada pengolahan seperti ini tentu sajaproses pengolahannya bersifat FIFO.Pengolahan data yang membutuhkan pencarian, pengurutan dan perbaikan data tentu saja sulitmenggunakan proses pengolahan FIFO, karena akan menggunakan sumber daya yang besar danmenjadi rumit. Pada pengolahan data seperti ini sangat dibutuhkan proses pemasukan maupunpengambilannya berdasarkan alamat data tersebut.Agar data dapat diambil dengan cepat, tentu saja dalam penyimpannannya membutuhkanketeraturan, yaitu setiap data memiliki ukuran yang sama, sehingga alamat data dapat didapatkandengan cepat.FILE ACAKFile acak didalam pengolahannya data ditempatkan dalam bentuk record yang memiliki panjangyang tertentu. Dengan sistem pengolahan yang demikian suatu record data dapat langsung dibacaataupun ditulis tanpa harus memproses record sebelumnya. Dalam hal ini type data record akanberperan.Contoh :TYPE SISWA NOINDUK AS STRING * 10 NAMA AS STRING * 15 TEORI AS SINGLE PRAKTEK AS SINGLE RATA AS SINGLEEND TYPEDim DAT As SISWAPERINTAH MEMBUKA FILE ACAKSebelum suatu file randon dapat digunakan harus dibuka, jika file tersebut belum ada, maka akandibuat 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 recordadalah sama dengan ukuran variabel DAT.Indoprog 41
  • 42. 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 tiaprecord.PERINTAH INPUT/OUTPUT PADA FILE ACAKPerintah menulis dataPUT [#]filenum[,nomorrecord][,variable]Contoh :DAT.NOINDUK = "920403024"DAT.NAMA = "Hendra"DAT.TEORI = 70DAT.PRAKTEK = 80DAT.RATA = (DAT.TEORI+DAT.PRAKTEK)/2PUT #1,JlhRec+1,DATMenyimpan data dari variabel DAT ke file ACAK nomor 1, sebagai record baru pada akhir file(JlhRec+1).PERINTAH MEMBACA DATAGET [#]filenum[,nomorrecord][,variabel]Contoh :GET #1,1,DATMembaca data record nomor 1 dari file ACAK nomor 1 ke variabel DAT.PERINTAH MENUTUP FILE ACAKSetelah selesai digunakan, file ACAK perlu ditutup untuk memastikan semua data ditulis ke mediapenyimpanan, dan memberikan indikator EOF.Contoh :CLOSE #1Menutup file acak nomor 1.Contoh sederhana program pengolahan data dengan file ACAK.PROGRAM MENGISI DATA KE FILE SISWA.RECIndoprog 42
  • 43. Dasar Pemrograman Oleh : Hendra, ST.TYPE SISWA NOINDUK AS STRING * 10 NAMA AS STRING * 15 TEORI AS SINGLE PRAKTEK AS SINGLE RATA AS SINGLEEND TYPEDIM DAT AS SISWADIM NOINDUK AS STRINGOPEN "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 ENDIFLOOP UNTIL NOINDUK = ""CLOSE #1ENDPROGRAM MENGURUT DATA DI FILE SISWA.RECTYPE SISWA NOINDUK AS STRING * 10 NAMA AS STRING * 15 TEORI AS SINGLE PRAKTEK AS SINGLE RATA AS SINGLEEND TYPEDIM DAT1 AS SISWADIM DAT2 AS SISWAOPEN "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 IFNEXT ICLOSE #1ENDIndoprog 43
  • 44. Dasar Pemrograman Oleh : Hendra, ST.‘PROGRAM BACA DATA DARI SISWA.REC DAN MENCETAK KE LAYARCLSTYPE SISWA NOINDUK AS STRING * 10 NAMA AS STRING * 15 TEORI AS SINGLE PRAKTEK AS SINGLE RATA AS SINGLEEND TYPEDIM DAT AS SISWAOPEN "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 23FOR 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 ICLOSE #1ENDLATIHANBuatlah program yang dapat menyimpan data latihan Modul 10 ke Siswa.rec.Indoprog 44
  • 45. Dasar Pemrograman Oleh : Hendra, ST.Modul 12, PENGOLAHAN FILE BINARYSelain pengolahan data Sequential dan Random, Basic juga menyediakan pengolahan yang bersifatBinary. Pada pengolahan yang bersifat Binary, file dapat dibaca/ditulis secara per-Byte pada posisiyang diinginkan, sehingga tidak terikat kepada urutan maupun struktur data.Pengolahan yang bersifat Binary banyak digunakan untuk keperluan- keperluan khusus yangmembutuhkan akses langsung ke satuan data di tingkat Byte. Misalnya membuat program Enkripsidan Dekripsi file, pada proses Enkripsi, isi suatu file disandikan byte-per-byte sehingga tidak dapatdikenali lagi secara normal oleh sistem yang membuatnya. Agar isi file tersebut dapat dikenalikembali, 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 BINARYSeperti pada pengolahan file umumnya, sebelum digunakan file binary harus dibuka denganperintah sebagai berikut :OPEN namafile FOR BINARY AS [#]filenumContoh :OPEN "Sandi.bin" FOR BINARY AS #1Membuka 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*1024PERINTAH INPUT/OUTPUT PADA FILE BINARYPerintah menulis dataPUT [#]filenum[,posisi][,variable]Contoh :MyData = 10PUT #1, 101, MyData Menulis karakter ASCII 10 (line feed) pada posisi byte ke 101 dalam file nomor 1.Contoh Lain :Indoprog 45
  • 46. Dasar Pemrograman Oleh : Hendra, ST.Dim MyChar As String*1MyChar = Chr$(10)Put #1, 101, MyCharPerintah membaca dataGET [#]filenum[,posisi][,variabel]Contoh :Dim MyChar As String*1GET #1, 101, MyCharMembaca data byte posisi ke dari file nomor 1 ke variabel MyChar.PERINTAH MENUTUP FILE BINARYSetelah selesai digunakan, file Binary perlu ditutup untuk memastikan semua data ditulis ke mediapenyimpanan, dan memberikan indikator EOF.Nb. Untuk mempercepat proses I/O, sistem operasi menyediakan memory buffer sebagai tempatpembacaan dan penulisan sementara. Perintah Close untuk memastikan semua data dari bufferbenar-benar ditulis ke media penyimpanan.Contoh :CLOSE #1Menutup file binary nomor 1.Contoh :Program Enkripsi dan Dekripsi dengan kunci NOTDIM Source AS STRINGDIM Target AS STRINGDIM FSize AS LONGDIM MyChar AS STRING * 1CLSPRINT "Program Enkripsi/Dekripsi Data"PRINT "Menggunakan operator NOT"PRINT "------------------------"INPUT "Masukkan Source :", SourceINPUT "Masukkan Target :", TargetIF Source = Target THEN PRINT "Nama file source tidak boleh sama dengan target"ELSE OPEN Source FOR BINARY AS #1 Buka source sebagai 1 OPEN Target FOR BINARY AS #2 Buka target sebagai 2 FSize = LOF(1) Mendapatkan ukuran file 1Indoprog 46
  • 47. 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 IFENDIndoprog 47
  • 48. Dasar Pemrograman Oleh : Hendra, ST.Modul 13, PENANGANAN ERRORSebagai manusia normal tidak akan terlepas dari berbagai kesilapan, demikian juga seorangprogrammer dalam pengembangan program dapat saja berbuat berbagai kesalahan maupunkesilapan.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 tingkatkesalahan yang minimal, dan usaha untuk meminimalisasi tingkat kesalahan program disebutproses debug.Pada Basic tersedia berbagai fasilitas untuk menangani kesalahan yang mungkin dilakukan olehprogrammer, misalnya :Indoprog 48
  • 49. 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 IFIndoprog 49
  • 50. Dasar Pemrograman Oleh : Hendra, ST. END SELECT END Catatan : Nomor Error dapat dilihat pada bagian Help Basic "Runtime Error Code"Indoprog 50