BAB II. Dasar Teori
2.1.2 Pemrograman Visual Basic 6.0
Dalam pembuatan program dengan Visual Basic 6.0, digunakan dua tipe kode sumber, yaitu form untuk meletakkan kontrol, fungsi dan variabel dan module terdapat prosedur/fungsi dan variabel [2]. Kode merupakan milik dari objek yang disisiplan kode. Objek atau kontrol lainnya tidak dapat menggunakan kode yang bukan menjadi miliknya. Jika blok kode akan digunakan bersama, maka kode tersebut diletakkan di luar kontrol. Blok kode disebut juga dengan prosedur atau fungsi. Selain fungsi yang dapat dibuat
sendiri, Visual Basic 6.0 juga telah menyediakan banyak sekali fungsi – fungsi yang siap pakai. Fungsi ini dapat dipakai hanya dengan memanggil nama fungsi tersebut beserta argumennya yang harus dilewatkan. Print dan InputBox merupakan salah satu contoh fungsi yang disediakan oleh Visual Basic 6.0 yang sering dipakai. Pada pemrograman
Visual Basic 6.0 terdapat kontrol seperti If….Then….Else, Select….Case, Do….Loop, For….Next, GoTo dan Exit yang memudahkan dalam membuat suatu program. Selain itu pada pemrograman Visual Basic 6.0 juga telah tersedia beberapa operator yang dapat digunakan yaitu operator matematik, operator perbandingan dan operator logika.
2.1.2.1 Variabel
Dalam melakukan pemrograman akan selalu memerlukan tempat penyimpanan data, misalnya untuk menampung data hasil perhitungan, menampung data hasil pembacaan register, atau lainnya. Tempat penyimpanan itu dinamakan Variabel yang merupakan pointer yang menunjuk pada alamat memori fisik tertentu di komputer.
a. Tipe Data dan Deklarasi Variabel
Tabel 2-1. Tipe data pada Visual Basic 6.0 [2] Tipe Data Ukuran Byte Range
Integer 2 byte -32.768 sampai 32.767
Long Integer 4 byte -2.147.483.648 sampai 2.147.483.647 Single-precision
floating point
4 byte -3,402823 E38 sampai 3,402823 E38 Double-precision
floating point
8 byte -1,79769313486232 D308 sampai 1,79769313486232 D308
Currency 8 byte -922337203685477,5808 sampai
922337203685477,5807 String 1 byte per karakter 0 sampai 65.535
Boolean 2 byte True atau False
Date 8 byte 1 januari 100 sampai 31 Desember 9999
Byte 1 byte 0 sampai 255
Variant 16 byte untuk angka, 22 byte + 1 byte per karakter untuk string
Semua tipe data
Nama Variabel menunjuk pada suatu tempat dalam memori komputer, sedangkan tipe data mengontrol besarnya memori yang disediakan untuk variabel tersebut.
Berkut ini adalah tipe data pada Visual Basic 6.0 beserta ukuran byte dan range
tipe data tersebut. Tipe data ditunjukkan pada tabel 2-1.
Pada Visual Basic 6.0 terdapat dua cara untuk mendeklarasikan sebuah variabel, yaitu dengan cara deklarasi eksplisit dan deklarasi implisit. Deklarasi eksplisit menggunakan pernyataan “DIM” diikuti nama dan tipe datanya, sedanglan deklarasi implisit menggunakan simbol di belakang nama variabel yang merepresentasikan tipe data yang digunakan.
Contoh penggunaan deklarasi eksplisit:
Dim Nama As String
Dim Angka As Integer
Pada Deklarasi implisit digunakan simbol yang merepresentasikan tipe data yang digunakan. Tabel 2-2 adalah tabel simbol yang digunakan dan contoh pemakaiannya.
Tabel 2-2. Deklarasi implisit [2]
Tipe Data Simbol karakter Contoh pemakaian
Integer % Angka%=100
Long Integer & Angka&=2147483647
Single ! Angka!= 2147483647000
Double # Konstanta_Pi#=3.1415926535
Currency @ Saldo@=1000.50
String $ Nama$=”pipit”
2.1.2.2 Kontrol Program
Kontrol program pada Visual Basic 6.0 meliputi kontrol pertimbangan kondisi dan keputusan , kontrol pengulangan serta kontrol penyaluran alternatif. Dan kontrol-kontrol nya adalah sebagai berikut:
a. If……Then
Pernyataan ini adalah untuk mentes suatu kondisi tertentu dan kemudian menentukan suatu tindakan jika kondisi tersebut di penuhi. Sentak penulisan:
If <syarat kondisi> Then <Pernyataan>
Bisa juga, jika menggunakan multiple-line, sebagai berikut:
If <syarat kondisi> Then
<pernyataan kedua> • • <pernyataan ke-n> End If b. If…..Then…..Else
Pernyataan ini hampir sama dengan pernyataan If…Then, yaitu digunakan untuk mentes kondisi tertentu. Hanya saja, jika suatu kondisi tidak terpenuhi, maka alur program akan mengeksekusi pernyataan yang lain. Berikut sentak
penggunaanya:
If <syarat kondisi 1> Then
<blok Pernyataan pertama>
ElseIf <syarat kondisi 2> Then
<blok Pernyataan kedua> •
•
ElseIf <syarat kondisi n> Then
<blok Pernyataan ke-n>
Else
<blok Pernyataan >
End If
c. Select …. Case
Pada dasarnya perintah ini sama dengan perintah If …. Then …. Else, yaitu akan mengeksekusi satu blok pernyataan dari beberapa pilihan blok pernyataan. Hanya saja penulisannya lebih ringkas dan lebih mudah dimengerti. Sentak penulisannya adalah sebagai berikut:
Select Case <kondisi yang diuji>
Case <syarat kondisi 1>
<blok pernyataan pertama>
Case <syarat kondisi 2>
• •
Case Else
<blok pernyataan ke-n>
End Select
d. Do …. Loop
Perintah Do …. Loop digunakan untuk perulangan suatu blok pernyataan sampai dipenuhi syarat kondisi yang ditetapkannya. Sentak penulisannya adalah sebagai berikut:
Do While <syarat kondisi> <blok pernyataan>
Loop
e. For …. Next
Perintah ini sama dengan melakukan perulangan seperti perintah Do …. Loop, tetapi dengan For …. Next bisa ditentukan nilai awal dan nilai akhir perulangan serta nilai kenaikannya. Sentak penggunaanya adalah sebagai berikut:
For <nama_variabel> = <nilai_awal> To
<nilai akhir> [Step <nilai_kenaikan>]
<blok pernyataan>
Next [<nama_variabel>]
f. GoTo
Perintah GoTo digunakan untuk melakukan percabangan ke suatu baris label tertentu. Dengan perintah GoTo, program dapat langsung melompat ke baris tertentu sehingga kode-kode program yang dilewatinya tidak akan dieksekusi. Sentak penulisannya adalah sebagai berikut:
GoTo <nama_label>
<blok pernyataan> <nama_label>:
Biasanya perintah GoTo digunakan bersama dengan perintah On Error untuk menangani error, yaitu untuk memerintahkan program melompat ke baris
tertentu jika ditemui error. Error dapat terjadi karena kesalahan logika program kita, kesalahan perhitungan (misal pembagian dengan nol), kesalahan yang disebabkan oleh perangkat keras, maupun kesalahan lainnya. Penanganan error dalam programan adalah sangat penting karena error dapat menyebabkan program berhenti dan dapat menyebabkan komputer menjadi hang. Sentak penulisannya adalah sebagai berikut:
On Error GoTo <nama_label> <blok pernyataan>
<nama_label>: g. Exit
Perintah exit digunakan untuk keluar secara langsung dari blok program For …. Next, Do …. Loop, Sub Procedure, atau Function Procedure. Sentak
penulisannya adalah sebagi berikut:
f. Exit Do, digunakan untuk keluar dari blok program Do …. Loop g. Exit For, digunakan untuk keluar dari blok program For …. Next h. Exit Sub, digunakan untuk keluar dari sub procedure
i. Exit Function, digunakan untuk keluar dari Function Procedure 2.1.2.3 Prosedur
Blok-blok komponen yang lebih kecil dari pecahan program disebut prosedur. Prosedur sangat berguna dalam penggunaan tugas yang sama secara berulang-ulang. Dengan prosedur akan lebih mudah men-debug program karena dapat melakukan pengujian per prosedur.
a. Sub Procedure
Sub Procedure adalah blok kode yang dijalankan sebagai tanggapan atas terbentuknya even, baik even itu merupakan even pemanggilan dari prosedur lain maupun even yang yang terjadi dari pemakaian program, misal even penekanan tombol kiri mouse. Sentak penulisannya adalah sebagai berikut:
[private/public] [Static] Sub
<nama_prosedur> (argumen) <blok pernyataan>
b. Function Procedure
Function Procedure sebenarnya hampir sama dengan sub procedure, tetapi Function Procedure ini akan mengembalikan nilai tertentu setelah pemanggilannya. Sentak penilisannya adalah sebagai berikut:
[private/Public] [Static] Function
<nama_prosedur> (argumen) [As tipe data]
<blok pernyataan>
End sub
Ada beberapa fungsi disediakan oleh Visual Basic 6.0 yang sering digunakan dalam pemrograman, antara lain:
1. Fungsi-fungsi Manipulasi String
Tabel 2-3. Fungsi-fungsi Manipulasi String [2]
Nama fungsi Keterangan Contoh penggunaan Len Menentukan panjang sebuah string Len (“Pipit”)
Menghasilkan 5 Ucase Mengubah huruf string menjadi huruf
besar.
Ucase (“Pipit”)
Menghasilkan “PIPIT” Lcase Mengubah huruf string menjadi huruf
kecil.
Len (“PIPIT”)
Menghasilkan “pipit” Right Menghasilkan karakter yang dihitung
dari sisi kanan string.
Right (“abcdefg”,3) Menghasilkan “efg” Left Menghasilkan karakter yang dihitung
dari sisi kiri string.
Left (“abcdefg”,3) Menghasilkan “abc” Mid
Menghasilkan karakter yang dihitung dari tengah-tengah string dimulai dari titik awal tertentu.
Mid (“abcdefg”,3,3) Menghasilkan “cde” String Mengulangi karakter string String (3,”a”)
Menghasilkan “aaa” Asc Menghasilkan kode ASCII tertentu. Asd (“A”)
Menghasilkan 65 Chr Menghasilkan karakter untuk kode
ASCII.
Chr $ (65) Menghasilkan “A” Trim Menghasilkan karakter dengan
menghilangkan karakter space-nya.
Trim$(“ <a> ”) Menghasilkan “<a>” Str Menghasilkan karakter yang
mempresentasikan angka numerik.
Str$(-12.34)
Menghasilkan “-12.34” InStr Mencari titik awal dari sebuah string
dalam string besar.
InStr (“abcdf”, “cd”) Menghasilkan 3 Val Menghasilkan angka numerik yang
terkandung dalam string.
Val (“12.34abcde”) Menghasilkan 12,34
Fungsi-fungsi dalam kelompok menipulasi string ini biasa digunakan untuk tugas-tugas yang berhubungan dengan pemrosesan string. Pada tabel 2-3 merupakan fungsi-fungsi tersebut dan contoh penggunaannya. 2. Fungsi-Fungsi Konversi Data
Fungsi-fungsi dalam kelompok konversi data ini biasa digunakan untuk konversi data.
Tabel 2-4. Fungsi-fungsi Konversi Data [2] Nama
fungsi Keterangan Contoh Penggunaan CInt
Mengembalikan nilai integer dan membulatkan pecahan ke integer tertinggi.
Cint (“12.34”) ‘Menghasilkan 12 CStr Mengembalikan nilai string. CStr (12.34)
‘Menghasilkan “12,34” Cbyte Mengembalikan nilai byte, nilai
maksimumnya adalan 255.
Cbyte (“12.5”) ‘Menghasilkan 13 Fix
Memotong bagian fraksial, tetapi untuk bilangan negatif akan mengembalikan nilai yang lebih besar atau sama dengan bilangan tersebut. Fix (1.23) ‘Menghasilkan 1 Fix (-1.23) ‘Menghasilkan –1 Int
Memotong bagian fraksial, tetapi untuk bilangan negatif akan mengembalikan nilai yang lebih kecil atau sama dengan bilangan tersebut. Int (1.23) ‘Menghasilkan 1 Int (-1.23) ‘Menghasilkan –2 Hex
Mengembalikan nilai heksa-desimal dari nilai numerik yang dilewatkan.
Hex (10) ‘Menghasilkan “A”
2.1.2.4 Operator
Operator digunakan pada Visual Basic 6.0 untuk memanipulasi data maupun untuk melakukan perhitungan. Operator pada Visual Basic 6.0 dapat dikelompokkan menjadi tiga kelompok, yaitu operator matematik, operator perbandingan dan operator logika. Berikut adalah tabel operator-operator tersebut berdasarkan pengelompokannya.
a. Operator Matematik
Operator matematik digunakan untuk meakukan operasi perhitungan matematik. Dalam Visual Basic 6.0, jika suatu ekspresi mempunyai operator lebih dari satu kategori, maka operator matematik yang akan dievaluasi lebih dahulu dilanjutkan dengan operator perbandingan, dan yang terakhir operator logika. Tabel 2-5 adalah operator matematik dimulai dari hirarki paling tinggi ke paling rendah.
Tabel 2-5. Operator Matematik [2]
Operator Operasi Contoh Pemakaian ^ Pemangkatan Nilai%=2^2 ‘Menghasilkan 4
- Tanda Negatif Nilai%=-5
‘Menghasilkan angka –5
*,/ Perkalian dan pembagian Nilai%=(2*6)/4 ‘Menghasilkan 3 \ Pembagian integer Nilai%=10\3 ‘Menghasilkan 3 Mod Modulus (sisa pembagian) Nilai%=10 mod 3
‘Menghasilkan 1 +,- Penambahan dan pengu
rangan
Nilai%=10+3-2 ‘Menghasilkan 11 & Penggabungan string Teks$=”ab”&”cd”
‘Menghasilkan “abcd” b. Operator Perbandingan
Operator perbandingan digunakan untuk membandingkan suatu ekspresi dengan ekspresi lain yang mengasilkan nilai boolean (False atau True). Tabel 2-6 adalah operator perbandingan pada Visual Basic 6.0.
Tabel 2-6. Operator Perbandingan [2]
Operator Operasi Contoh Pemakaian
= Sama dengan Nilai = (2+1) = 3 ‘Menghasilkan True <> Tidak sama dengan Nilai = (2+1) <> 3‘Menghasilkan False
< Lebih kecil Nilai = 1 < 2 ‘Menghasilkan True > Lebih besar Nilai = 1 > 2 ‘Menghasilkan False <= Lebih kecil atau sama dengan Nilai = 1 <= 2 ‘Menghasilkan True >= Lebih besar atau sama dengan Nilai = 1 >= 2 ‘Menghasilkan False Like Mempunyai ciri yang sama
Nilai = “abba” Like “a*” ‘True Nilai = “abba” Like “a??a” ‘True Nilai = “abba” Like “a?a” ‘False Nilai = “a” Like “[a-z]” ‘True
Sentak penggunaannya adalah sebagai berikut.
result = <ekspresi1> operator_perbandingan
<ekspresi2>
result = <objek1> Is <objek2> result = <string> Like <pattern> c. Operator Logika
Operator logika digunakan untuk mengekspresikan satu atau lebih ekspresi logika yang akan menghasilkan nilai boolean. Tabel 2-7 adalah operator logika dimulai dari hirarki paling tinggi ke paling rendah beserta tabel kebenarannya.
Tabel 2-7. Operator Logika [2]
Tabel Kebenaran Operasi Operator Keterangan
Operan Hasil Not True False Not
Akan menghasilkan nilai kebalikan dari nilai ekspresi
operan. Not False True
True And True True True And False False False And True False And
Akan menghasilkan nilai True hanya jika ekspresi operan keduanya bernilai
logika True. False And False False True Or True True True Or False True False Or True True Or
Akan menghasilkan nilai True jika salah satu ekspresi operannya bernilai logika
True. False Or False False
True Xor True False True Xor False True False Xor True True Xor
Akan menghasilkan nilai True jika ekspresi operannya bernilai logika berbeda.
False Xor False False True Eqv True True True Eqv False False False Eqv True False Eqv
Akan menghasilkan nilai True jika ekspresi operannya bernilai logika sama.
False Eqv False True True Imp True True True Imp False False False Imp True True Imp
Akan menghasilkan nilai False jika ekspresi operan sebelah kiri operator bernilai logika True dan sebelah
2.2 Port Serial
Dikenal dua cara komunikasi data secara serial, yaitu komunikasi data serial secara sinkron dan komunikasi data serial secara asinkron [2]. Pada komunikasi data serial sinkron, clock dikirimkan bersama-sama dengan data serial, sedangkan komunikasi data serial secara asinkron, clock tidak dikirimkan bersama data serial, tetapi dibangkitkan secara sendiri-sendiri baik pada sisi pengirim (transmitter) maupun pada sisi penerima (receiver). Pada IBM PC kompatibel port serialnya termasuk jenis asinkron. Komunikasi data serial ini dikerjakan oleh UART (Universal Asynchronous Reciver/Transmitter). IC UART dibuat khusus untuk mengubah data paralel menjadi data serial dan menerima data serial yang kemudian diubah kembali menjadi data paralel. IC UART 8250 dari Intel merupakan salah satunya. Selain berbentuk IC mandiri, berbagai maecam mikrokontroler ada yang dilengkapi UART, misalnya keluarga mikrokontroler MCS51 (termasuk AT89C2051).
Pada UART, kecepatan pengiriman data (baud rate) dan fase clock pada sisi Tx dan pada sisi Rx harus sinkron. Untuk itu diperlukan sinkronisasi antara Tx dan Rx. Hal ini dilakukan oleh bit ‘Start’ dan bit ‘Stop’. Ketika saluran pengirim dalam keadaan kondisi nol, keluaran UART adalah dalam keadaan logika ‘1’. Ketika Tx ingin mengirimkan data, output UART akan diset lebih dahulu ke logika ‘0’ untuk waktu satu bit. Sinyal ini pada Rx akan dikenali sebagai sinyal ‘Start’ yang digunakan untuk mensinkronkan fase clocknya sehingga sesuai dengan fase clock Tx. Selanjutnya, data akan dikirimkan secara serial dari bit paling rendah (bit0) sampai bit tertinggi (bit7). Selanjutnya, akan dikirim sinyal ‘Stop’ sebagai akhir dari pengiriman data serial. Cara pemberian kode data yang disalurkan tidak ditetapkan secara pasti. Berikut adalah contoh pengiriman huruf ‘A’ dalam format ASCII (41 heksa/1000001 biner) tanpa bit paritas.
5V 0V S T A R T 1 0 0 0 0 0 1 0 S T O P
Kecepatan transmisi (baud rate) dapat dipilih bebas dalam rentang tertentu. Baud rate yang umumnya dipakai adalah 110, 135, 150, 300, 600, 1200, 2400, dan 9600 (bit/detik). Dalam komunikasi data serial, baud rate dari kedua alat yang berhubungan harus diatur pada kecepatan yang sama. Selanjutnya harus ditentukan panjang data (6, 7 atau 8 bit), paritas (genap, ganjil atau tanpa paritas), dan jumlah bit ‘Stop’ (1, 1½ , atau 2 bit).