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.
Hendra, ST.
Indoprog 1
Dasar Pemrograman Oleh : Hendra, ST.
BAHASA KOMPUTER
Agar suatu komputer dapat mengenali instruksi yang anda berikan, instruksi tersebut perlu ditulis
dalam bahasa yang dimengerti oleh komputer.
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.
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)
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 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. Masing-
masing 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.
Pemanggilan 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>
FLOWCHART
FLOWCHART adalah salah satu cara menggambarkan algoritma dengan menggunakan simbol.
Indoprog 4
Dasar Pemrograman Oleh : Hendra, ST.
Proses
Kondisi
Konektor
Aliran
Tugas :
Tugas rumah :
Carilah nama-nama bahasa komputer dan pembuatnya, minimal 10.
Indoprog 5
Dasar Pemrograman Oleh : Hendra, ST.
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.
Indoprog 6
Dasar Pemrograman Oleh : Hendra, ST.
TYPE DATA
OPERATOR
Arithmetic operators : melakukan tugas perhitungan
Indoprog 7
Dasar Pemrograman Oleh : Hendra, ST.
Operator Kegunaan
= Sama dengan
<> Tidak sama dengan
< Lebih kecil
> Lebih besar
<= Lebih kecil atau sama dengan
>= Lebih besar atau sama dengan
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.
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
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
Indoprog 9
Dasar Pemrograman Oleh : Hendra, ST.
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 ?
1 + 1 ______
1 + "100" Type mismatch, mengapa ?
"A" + "B" ______
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
Print 1;2;3
Print tab(10),"Hendra";tab(30);"Soewarno"
Input nama$
print nama$
Hasilnya :? Hendra
__________________________________
Indoprog 11
Dasar Pemrograman Oleh : Hendra, ST.
__________________________________
Jalankan program diatas (gunakan menu Run Start atau tekan F5)
Tugas
Jawaban :
Indoprog 12
Dasar Pemrograman Oleh : Hendra, ST.
Indoprog 13
Dasar Pemrograman Oleh : Hendra, ST.
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
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.
Indoprog 14
Dasar Pemrograman Oleh : Hendra, ST.
Berfungsi menentukan Block statement yang mana akan dijalankan oleh komputer sesuai dengan
ekspresi logika yang menghasilkan nilai benar.
Contoh :
PKP = Penghasilan - PTKP ' Penghasilan Kena Pajak 1 Bulan
PKPT = PKP * 12 ' Penghasilan Kena Pajak 1 Tahun
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.
Latihan
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 :
3. Buatlah program untuk menentukan tahun yang dimasukan pemakai kabisat atau bukan.
Indoprog 16
Dasar Pemrograman Oleh : Hendra, ST.
LOOPING COUNTER
Digunakan untuk proses berulang yang jumlah perulangannya ditentukan berdasarkan perhitungan
(sistem counter).
Contoh :
LOOPING TRAPPING
Perulangan jenis ini ditentukan berdasarkan kondisi tertentu.
Pemeriksaan diawal
DO [{WHILE | UNTIL} ekspresi logika]
Statement
...
LOOP
Contoh :
N = 1
Indoprog 17
Dasar Pemrograman Oleh : Hendra, ST.
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
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 :
Indoprog 18
Dasar Pemrograman Oleh : Hendra, ST.
11111 12345
22222 12345
33333 12345
44444 12345
55555 12345
12345 12345
1234 2345
123 345
12 45
1 5
Jawaban A:
Jawaban B:
Jawaban :
Indoprog 19
Dasar Pemrograman Oleh : Hendra, ST.
END IF
NEXT n
END
Tugas
Jawaban :
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.
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).
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.
Contoh lain :
For I = 0 To 19 Step 1
Input "Masukkan Nilai :",A(I)
Next I
Akan menanyakan kepada pemakai untuk mengisi elemen pertama s/d elemen keduapuluh.
Contoh lain :
Total = 0
For I = 0 To 19 Step 1
Total = Total + A(I) 'A(0), A(1), ..., A(19)
Next I
Print "Total :",Total
Indoprog 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.
Latihan
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.
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)
Tanpa mengunakan fungsi bantu Sinus, programmer dapat mengembangkan program sendiri untuk
melakukan hal yang sama, tetapi hal ini tentu saja menuntut pengetahuan yang lebih mendalam.
Contoh :
Dengan menggunakan Ekspansi Trigonometris, suatu nilai Sinus dapat diturunkan.
DIM S AS DOUBLE
DIM Sinus AS DOUBLE
S = 30 * 3.14 / 180 ' Sudut 30 derajat dalam radian
F = 1
Tanda = 1
Sinus = S
FOR I = 2 TO 11
F = F * I ' Menghitung nilai faktorial
IF I MOD 2 = 1 THEN ' Suku 3, 5, 7, 9, 11
Tanda = -Tanda ' Tanda -1, 1, -1, 1, dst
Sinus = Sinus + (S ^ I / F * Tanda)
END IF
NEXT I
B = Sinus
Dengan menggunakan fungsi bantu bawaan yang telah tersedia pekerjaan programmer akan lebih
terfokus pada program yang akan dikembangkan.
LEFT$ (stringexpression,n)
Mengembalikan sejumlah karakter string dari suatu data string dari sebelah kiri.
Contoh :
Print Left$("IndoProg",4) ' Akan mencetak Indo
Indoprog 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) ' Akan mencetak 3456
Print Mid$("1234567890",3) ' Akan mencetak 34567890
LTRIM$(stringexpression)
Mengembalikan string dengan menghilangkan spasi sebelah kiri.
Contoh :
A$ = " 100"
B$ = LTRIM$(A$)
Print A$ 'Akan mencetak 100
Print B$ 'Akan mencetak 100
RTRIM$(stringexpression)
Mengembalikan string dengan menghilangkan spasi sebelah kanan.
INSTR([start,]stringexpression1,stringexpression2)
Mencari posisi suatu string pada string lain (0 jika tidak ditemukan).
Contoh :
Print INSTR("ABCD","B") 'Akan mencetak 2
Print INSTR(4,"ABCDABCD","A") 'Akan mencetak 5
Print INSTR("ABCD","a") 'Akan mencetak 0
LCASE$(stringexpression)
Mengembalikan suatu string yang telah diubah ke huruf kecil.
Contoh :
Print LCase$("IndoProg") 'Akan mencetak indoprog
UCASE$(stringexpression)
Mengembalikan string yang telah dibuat huruf besar.
Contoh :
Print UCase$("IndoProg") 'Akan mencetak INDOPROG
SPACE$(n)
Mengembalikan string yang berisi sejumlah spasi.
Contoh :
Indoprog 26
Dasar Pemrograman Oleh : Hendra, ST.
Contoh :
Print String$(10,65) ' Akan mencetak AAAAAAAAAA
Print String$(10,"A") ' Akan mencetak AAAAAAAAAA
LEN(stringexpression)
Mengembalikan jumlah huruf suatu data string.
Contoh :
Print Len("Indonesia Programmer") ' Akan mencetak 20
STR$(numeric-expression)
Mengembalikan string dari suatu expresi numeric
Contoh :
A = 100
B$ = Str$(A) 'B berisi "100"
VAL(stringexpression)
Mengembalikan numeric dari suatu expresi string
Contoh :
B$ = "100"
A = Val(B) 'A berisi 100
C = "IndoProg"
D = Val(C) 'D berisi 0
ASC(stringexpression)
Mengembalikan nilai ASCII dari suatu character.
Contoh :
Print Asc("A") 'Akan mencetak 65
CHR$(n)
Mengembalikan character ASCII n.
Contoh :
Print Chr$(65) 'Akan mencetak "A"
SIN(numeric-expression)
Indoprog 27
Dasar Pemrograman Oleh : Hendra, ST.
COS(numeric-expression)
TAN(numeric-expression)
ATN(numeric-expression)
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
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
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
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.
Indoprog 29
Dasar Pemrograman Oleh : Hendra, ST.
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
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
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
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 :
Tugas
1. Kembangkan fungsi yang dapat menghasilkan terbilang sampai triliunan
rupiah, serta kemampuan SEN.
Indoprog 33
Dasar Pemrograman Oleh : Hendra, ST.
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.
Untuk mendeklarasikan variabel berdasarkan Record Type tertentu dengan menggunakan perintah
DIM.
Contoh :
Dim DataPeserta As PESERTA
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 Oleh : Hendra, ST.
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
Indoprog 35
Dasar Pemrograman Oleh : Hendra, ST.
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
Indoprog 36
Dasar Pemrograman Oleh : Hendra, ST.
Indoprog 37
Dasar Pemrograman Oleh : Hendra, ST.
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)
Untuk membuka file sequential yang akan diproses dapat digunakan penulisan sebagai berikut :
Syntax :
Open filename [FOR mode] AS [#]filenum
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
Syntax :
CLOSE #filenumber
Contoh :
CLOSE #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
Indoprog 39
Dasar Pemrograman Oleh : Hendra, ST.
Latihan
Indoprog 40
Dasar Pemrograman Oleh : Hendra, ST.
File sequential banyak digunakan pada ekspor/impor data antar sistem dimana format pada sistem
yang satu tidak dikenali oleh sistem lain, sehingga data dari suatu sistem perlu diekspor dalam
bentuk teks, kemudian diimpor kembali oleh sistem lain. Pada pengolahan seperti ini tentu saja
proses pengolahannya bersifat FIFO.
Pengolahan data yang membutuhkan pencarian, pengurutan dan perbaikan data tentu saja sulit
menggunakan proses pengolahan FIFO, karena akan menggunakan sumber daya yang besar dan
menjadi rumit. Pada pengolahan data seperti ini sangat dibutuhkan proses pemasukan maupun
pengambilannya berdasarkan alamat data tersebut.
Agar data dapat diambil dengan cepat, tentu saja dalam penyimpannannya membutuhkan
keteraturan, yaitu setiap data memiliki ukuran yang sama, sehingga alamat data dapat didapatkan
dengan cepat.
FILE ACAK
File acak didalam pengolahannya data ditempatkan dalam bentuk record yang memiliki panjang
yang tertentu. Dengan sistem pengolahan yang demikian suatu record data dapat langsung dibaca
ataupun ditulis tanpa harus memproses record sebelumnya. Dalam hal ini type data record akan
berperan.
Contoh :
TYPE SISWA
NOINDUK AS STRING * 10
NAMA AS STRING * 15
TEORI AS SINGLE
PRAKTEK AS SINGLE
RATA AS SINGLE
END TYPE
Dim DAT As SISWA
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.
Jumlah record dalam file ACAK adalah ukuran keseluruhan file ACAK dibagi dengan ukuran tiap
record.
Contoh :
DAT.NOINDUK = "920403024"
DAT.NAMA = "Hendra"
DAT.TEORI = 70
DAT.PRAKTEK = 80
DAT.RATA = (DAT.TEORI+DAT.PRAKTEK)/2
PUT #1,JlhRec+1,DAT
Menyimpan data dari variabel DAT ke file ACAK nomor 1, sebagai record baru pada akhir file
(JlhRec+1).
Contoh :
GET #1,1,DAT
Membaca data record nomor 1 dari file ACAK nomor 1 ke variabel DAT.
Contoh :
CLOSE #1
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
Indoprog 43
Dasar Pemrograman Oleh : Hendra, ST.
LATIHAN
Indoprog 44
Dasar Pemrograman Oleh : Hendra, ST.
Pengolahan yang bersifat Binary banyak digunakan untuk keperluan- keperluan khusus yang
membutuhkan akses langsung ke satuan data di tingkat Byte. Misalnya membuat program Enkripsi
dan Dekripsi file, pada proses Enkripsi, isi suatu file disandikan byte-per-byte sehingga tidak dapat
dikenali lagi secara normal oleh sistem yang membuatnya. Agar isi file tersebut dapat dikenali
kembali, maka diperlukan proses Dekripsi yang mengembalikannya ke keadaan semula.
Pengolahan yang bersifat Binary juga banyak digunakan pada pembuatan program AntiVirus,
Crack, Game Cheat yang membutuhkan akses ke byte level.
Contoh :
OPEN "Sandi.bin" FOR BINARY AS #1
Membuka file "Sandi.bin" untuk diolah secara binary sebagai file nomor 1.
Fungsi LOF (Length Of File) akan mengembalikan ukuran file binary dalam ukuran byte.
Catatan : 1 KB = 1024 Byte, 1 MB = 1024*1024
Contoh :
MyData = 10
PUT #1, 101, MyData
Contoh Lain :
Indoprog 45
Dasar Pemrograman Oleh : Hendra, ST.
Contoh :
Dim MyChar As String*1
GET #1, 101, MyChar
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
Contoh :
'Program Enkripsi dan Dekripsi dengan kunci NOT
Indoprog 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
Indoprog 47
Dasar Pemrograman Oleh : Hendra, ST.
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
Indoprog 49
Dasar Pemrograman Oleh : Hendra, ST.
END SELECT
END
Catatan : Nomor Error dapat dilihat pada bagian Help Basic "Runtime Error Code"
Indoprog 50