Kamis, 03 Desember 2009

Contoh program pada materi berikut dapat dijalankan dengan Borland C++ (turbo C++ juga boleh). Secara umum struktur program dalam C++ adalah sebagai berikut:
deklarasi header file/preprocessor
deklarasi konstanta
deklarasi var global
deklarasi fungsi
deklarasi class
program utama (fungsi utama)
main() {
……
……
}
Keterangan :
Deklarasi header file diawali dengan #include <.......> atau #include "........." Titik-titik diisi dengan nama
Header file yang ingin digunakan. Header file merupakan suatu fungsi yang mendukung eksekusi instruksi tertentu dalam C++
Deklarasi konstanta (bisa ada bisa tidak)
Deklarasi variabel global (bisa ada bisa tidak)
Deklarasi fungsi bisa ada bisa tidak. Fungsi juga dapat diletakkan seletah fungsi main().
Deklarasi class (bisa ada bisa tidak)
Fungsi utama, harus ada, diawali dengan { dan diakhiri dengan }. Didalamnya berisi instruksi-instruksi yang nantinya akan dieksekusi berikut deklarasi variabel (variabel lokal) yang diperlukan.

Beberapa header file yang sering digunakan :
iostream.h
Untuk instruksi:
cout<<”.....................”; cin>>nama_var;

conio.h
Untuk instruksi:
getch();
clrscr();

Instruksi untuk memindah cursor dibaris berikut:
”\n”
<&ltendl; Menuliskan komentar : // Jika komentar hanya satu baris /*.....*/ Sangat berguna jika komentar lebih dari satu baris. C++ bersifar case sensitive à membedakan huruf besar dan huruf kecil, sehingga: instruksi harus ditulis dalam huruf kecil Variabel yang ditulis dengan huruf kecil dan huruf besar berbeda. Contoh program : Contoh pertama berikut akan menampilkan teks Belajar C++ di layar.


//ini contoh pertama
#include "iostream.h"
#include "conio.h"
main() {
cout<<"Belajar C++"; getch(); }
//ini contoh kedua
#include "iostream.h"
#include "conio.h"
main() {
cout<<"Belajar C++";
cout<<"Media Belajar";
cout<<"Pemrograman Dasar";
getch(); }



Contoh kedua diatas akan menampilkan tulisan sesuai dengan yang diapit tanda petik dan ditampilkan dalam satu baris


Contoh ketiga berikut akan menampilkan tulisan sesuai dengan yang diapit tanda petik dan ditampilkan dalam tiga baris

//ini contoh ketiga
#include "iostream.h"
#include "conio.h"
main() {
cout<<"Belajar C++\n";
cout<<"Media Belajar\n";
cout<<"Pemrograman";
getch(); }


Contoh
keempat akan memberikan output sama dengan contoh tiga.
//ini contoh keempat
#include "iostream.h"
#include "conio.h"
main() {
cout<<"Belajar C++"<&ltendl;
cout<<"Media Belajar"<&ltendl;
cout<<"Pemrograman Dasar"<&ltendl;
getch(); }


Coba tebak...output dari contoh kelima berikut.

//ini contoh kelima
/* Pengggunaan \n
untuk mengatur tampilan */
#include "iostream.h"
#include "conio.h"
main() {
cout<<"Belajar\n C++\n";
cout<<"\nMedia Belajar";
cout<<"\nPemrograman\nDasar"; getch(); }
     

Pendahuluan
Pada proyek robot kali ini, penulis memaparkan cara membuat robot berkaki 6 (hexapod) menggunakan 3 buah sensor, yaitu 1 sensor  jarak SRF04 (Sonar Range Finder) dan 2 bh  Sharp GP2D12.  Dijamin dechhh penasaran dan  menarik untuk dicoba J.


Blok Rangkaian
Robot ini bergerak berdasarkan informasi dari ketiga sensor jarak. Robotini diharapkan dapat melakukaneksplorasike daerah yang dilaluinya, untuk memberikan informasi kepemiliknyamenggunakan kamera wireless misalnya, oleh karena itu robot ini dinamakan Explorer HexapodGambar di bawah ini menampilkan blok rangkaian yang akan dibuat:








                                                       Gambar 1.  Blok rangkaian robot Explorer Hexapod

Bahanbahan
Berikut ini ialah bahanbahan yang diperlukan, yang paling penting tentunya ialah kerangka dari kaki hexapod ini, yang dapat Anda buat sendiri atau membeli kit yang sudah jadi :
1.       2 buah servo motor HS311
2.       Body dan kaki hexapod
(Dapat membeli kit kaki hexapod lengkap dengan 2 bh servo HS311)
3.       Min. System  ATmega 8535, ATmega16 atau Atmega32
4.       Driver Motor DC 293D/ deKits SPC DC Motor
5.       1 sensor jarak  ultrasonic SRF 04 (jarak 3cm-3m)
6.       2 sensor jarak infrared SharpGP2D12(10cm -80cm)
7.       Tempat baterai 9V 2bh
Berikut ini ialah konstruksi dari kaki hexapod standar, yang digerakkan dari putaran motor servo continuous.  Servo ini dikendalikan dari port B.0-3  melalui Driver motor  yaitu kit DC motor Driver menggunakan IC L293D (dapat menggunakan juga kit dekits SPC DC Motor)  atau jika ingin lebih kuat lagi menggunakan IC H bridge  L298. Perlu diingat, kaki servo ini ada 3 pin, cukup gunakan 2 kaki yang menggerakan motor DC di dalam servo tersebut saja.








                            
                                                                      Gambar 2.  Susunan  sisi  kaki hexapod
Servo HS311 merupakan servo dengan torsi yang cukup besar untuk menggerakkan robot dengan beban maksimal 1.5kg.

Cara kerja
Pertama, kita lihat dulu bagian sensor.  Sensor SRF04 digunakan untuk mengetahui jarak depan Robot, apakah ada penghalang atau tidak, yang mampu mendeteksi jarak dari 3cm hingga  3 meter. Sensor ini bekerja berdasarkan prinsip gelombang ultrasonic. Pencari jarak ini bekerja dengan cara memancarkan pulsa suara dengan kecepatan suara (0.9 ft/milidetik) berfrekwensi 40 KHz.  Keluaran sensor ini dihubungkan ke Port C.0 dan Port C.1, dan dengan nilai trigger input sebesar 10 uS pada pulsa TTL.   Alasan mengapa digunakan sensor ini, ialah karena sensor  jarak ini paling banyak digunakan pada Kontes Robot Cerdas di Indonesia, sehingga pembaca pemula menjadi familiar. Anda dapat menambah sensor ini hingga 4 buah untuk digunakan pada  sisi kanan, kiri dan belakang robot biar lebih akurat.
                                                                      
                                                Gambar 3.  Susunan kaki SRF04

Sedangkan 2 sensor infrared GP2D12 di sisi samping kanan dan kiri dapat mengukur jarak sejauh 10cm-  80cm dengan output analog, sehingga dapat langsung dihubungkan ke port A.0 dan port A.1  dari mikrokontroler AVR tersebutKarakteristik dari sensor ini tidak linear, oleh karena itu idealnya perlu digunakan look up table untuk mengolah raw data dari sensor tersebut.
Hasil pembacaan sensor-sensor jarak ini diolah oleh mikrokontroler, untuk memutuskan gerakan yang akan dilakukan apakah maju, mundur atau belok. Dengan memutarnya servo, menyebabkan bagian kaki yang terhubung ke servo  bergerak bergantian sehingga robot dapat berjalan.  

Explorer.bas:
‘Program Demo Robot Explorer Hexapod
‘By Mr. Widodo Budiharto
‘Univ. de Bourgogne 2007
deklarasi fungsi dan variabel
Declare Sub Initialize_ultrasonic()
Declare Function Ultrasonic_depan() As Integer
Dim Jarakdepan As Integer
Dim Jaraksampingkanan As Word
Dim Jaraksampingkiri As Word
Dim W As Word
Config Portb = Output
Config Portd = Input
Config Portc = Output
Config Adc = Single , Prescaler = Auto , Reference = Avcc   'konfigurasi ADC
Start Adc
Call Initialize_ultrasonicpanggil fungsi
Do
baca SRF04 untuk jarak depan
Print "jarak sampingkiri" ; Jaraksampingkiri
‘Demo jika ada halangan, maka belok kiri
 If Jarakdepan > 40 Then
   Portb = 8                                   'maju
Wait 2 ‘delay
Else if jarak depan <40 and jaraksampingkanan >150 then
    Portb = 0     'belok kiri 
    Wait 2
End If
Loop
End
Function Ultrasonic_depan() As Integer
    …                                             ' set initial state pin trigger
    …                                  ' buat pulsa  5us @ 4 MHz
    …                 ' ukur return pulse
End Function
Sub Initialize_ultrasonic inisialisasi  sensor ultrasonik
  …
End Sub

Gambar berikut merupakan hasil yang sudah jadi yang dapat berjalan dengan cukup cepat dan kuat karena menggunakan servo torsi tinggi dari Hitec.

                   
               A.                                                        B.
                      Gambar 4. Robot in action a). Tampak samping     b). Tampak depan

Pengembangan Selanjutnya
Untuk keperluan riset atau hobi, Anda dapat menambahkan kemampuan Artificial Intelligent menggunakan Fuzzy Logic, Algoritma Genetic atau Neural Network, agar robot ini menjadi robot yang cerdasSilahkan baca artikel selanjutnya mengenai Neural Network  di majalah kesayangan Anda ini
keNapa seH banyak orang bingung  nyari² proGram untuk haCk billing di warnet??? kaLo mau bayaR muRah, ya main interNetnya jangan Lama².he,he, tapi kaLo emang bener² buTuh koneksi internet sedangkan dirumah kita ga ada, ataupun uang kiTa yang pas²an. Semoga cara ini bisa membantu, tanpa software Lho!!!! Tapi pake biaya, dikit doank!!!! (Dosa & Resiko ditanggung peLaku).

Sebenernya saya udah pernah baCa artikeL kayak gini (sekitar 7buLan lalu), tapi saya lupa dari mana & pada saat saya baCa, saya tidak pernah mempraktekannya hingga suatu saat saya mencobanya (sekitar 2minggu sebelum saya buaT tuLisan ini). daLam proses pe-ngerjain yang pernah saya coba, biLLing yang dipake oleh warnet adalah Billing Explorer.

Tu de Poin aja, jadi caranya adaLah seperti ini :

  1. Baca doa & mintalah ampun atas perbuatan yang akan anda lakukan.
  2. Pergilah ke Warnet sasaRan. Lalu masuk, jangan Lupa pintunya dibuka terlebih dahuLu :D
  3. Login lah seperti biasa pada Billing Explorer.
  4. Nikmatilah internet selama beberapa menit (biar ga terlalu mahaL bayarnya)
  5. Jangan di Stop Billingnya, taPi cabutLah kabeL jaringan yang terhubung ke CPU (biasanya Warnet itu pake kabeL UTP yang seperti kaBeL telepon, yang disampingnya ada lampu keciL keLap-keLip)
  6. Supaya ga ketahuan, beraksi lah sambil memasukkan Flashdisk ke sLot USB dekat kabeL tersebut tertancap.
  7. seteLah kabeL jaringan tercabut, pergiLah ke Operator warnet dan bilang kaLo kompuTer no.sekian udah seLesai (dan biasanya sang Operator akan men-Stop billing melalui komputer yang ia miliki :P )
  8. Lalu, baYarlah sesuai tarif (jangan nguTang meLuLu)
  9. Setelah membayar, berpura-puralah ada barang yang tertinggal atau bisa juga berpura-pura mau ke toilet.
  10. Lalu pergiLah ke komputer no.sekian tadi, coLokkan kembaLi kaBeL jaringan yang tadi di lepas & Browsinglah sesuka hati.
  11. kaLo udah puas, Stop lah billing di komputer tersebut (ga di stop juga ga pa² seh).
  12. Lalu keluarlah dari Warnet dengan waJah tak bersaLah (InsyaAllah saNg operator tidak akan meminta uang sepeser pun kepada anda karena di biLLing server tidak ada tagihan yang harus kita bayar :D
Hal² yang haRus diperhatikan oLeh saNg peLaku :

  • guNakan waJah beGo (kLo bisa idiot) dari awaL anda masuk Warnet tersebut dan jangan melakukan sesuatu yang mencurigakan.
  • Baca keadaan di sekitar, pe-kerjain ini akan lebih muLus biLa Warnet daLam keadaan sedang² saja (tidak penuh, tidak puLa sepi)
  • warNet yg paling mudah untuk melakukan pe-kerjain ini adalah Warnet dengan kapasitas tampung besar (minimal 15PC) dengan seKat² di antara Komputer²nya.
  • pe-Kerjain ini juGa akan lebih muLus jika sang Operator Warnet tidak hafaL dengan waJah anda (untuk itu gantilah waJah aNda setiap kaLi pergi keWarnet :))
  • Berdoalah semoga Operator Warnet tidak mengetahui apa yg anda lakukan kepada Warnet .
  • jikalau berhasiL, berilah comment pada saya & jangan Sering² menggunakan kejahatan ini. Karena Sang Operator pasti akan haFaL & curiGa dengan anda. :-?
HaL² yang perlu diperhatikan oLeh Sang Operator Warnet :

  • guNakan waJah jenius & akrab, sehingga tidak ada user yang berani melakukan hal ini.
  • perhatikan selalu program Billing Explorer yg ada di server & bandingkan dengan user yang ada pada setiap komputer jika ada user yang baru masuk/keluar.
  • perhatikan uSer baik² apabila ada barang² nya yang tertinggaL.
  • Akrablah dengan setiap user yang datang. Minimal SKSD lah (Sok Kenal Sok Deket).
  • Jangan terLaLu serius Chat & Buka FS (apalagi nonton bokeF)...
  • IngaT pesan Bang Napi: "Kejahatan terjadi bukan karena ada niat pelakunya, tapi juga karena ada kesempatan. Waspadalah!!! Waspadalah!!!"

Selasa, 01 Desember 2009

FLASH 8 USER INTERFACE Graphic1

PENJELASAN USER INTERFACE User interface di Flash terbagi atas 5 bagian, yaitu:
1. Stage Stage merupakan daerah yang bewarna putih, dimana area kerja utama jika anda ingin membuat animasi maupun aplikasi flash lainnya. Seluruh objek/gambar/animasi yang ada di stage nantinya akan tampil di flash movie, dan sebaliknya apabila objek/gambar tersebut berada di daerah abu-abu di pinggiran Stage tidak akan terlihat di flash movie.
2. Tools Merupakan kumpulan alat gambar dan mewarnai sesuatu yang ada di stage.
3.Panel Merupakan kumpulan kotak-kotak yang berfungsi untuk mengubah, mengatur dan mempercantik objek yang ada di stage. Misalkan memberi warna gradasi, meletakan objek persis di tengah stage, dan merotasi objek dengan sudut yang tepat.
4. property inspector merupakan bagian informasi objek yang ada di stage. sebagai contoh, klik saja salah satu objek di stage, maka informasinya akan terlihat disini. atau klik saja di daerah kosong yang ada di stage, maka informasi mengenai stage akan terlihat.
5. Timeline terdiri dari baris dan kolom. Kolom berhubungan dengan waktu, baris berhubungan dengan objek. Setiap software animasi pasti memliki timeline untuk mencatat aktivitas objek kapan harus tampil di stage dan kapan harus menghilang.
PENGENALAN TOOL UTAMA DALAM FLASH Bitmap in Graphic2
1. selection tool (V) Merupakan tool utama yang berfungsi untuk menseleksi benda, baik berupa shape, line, titik maupun symbol
2. subselection tool (A) Merupakan tool utama yang berfungsi untuk menseleksi dan memodifikasi titik maupun garis (stroke)
3. Free Transform Tool (Q) Merupakan tool yang berfungsi untuk memodifikasi scale(skala),skew(kemiringan), rotation(rotasi), distorsi, dan envelop
4. Gradien transform tool(F) Merupakan tool yang berfungsi untuk memodifikasi warna warna gradasi .
5. Line tool (N) Tool yang berfungsi untuk membentuk garis
6. Laso Tool (L) Tool yang berfungsi untuk menyeleksi benda
7. Pen Tool (P) Tool yang berfungsi untuk membuat sebuah bentuk path, dapat di gunakn juga untuk tracing.
8. Text Tool (T) Tool yang berfungsi untuk membuat tulisan
9. Oval Tool (O) Tool yang berfungsi untuk membuat bentuk lingkaran
10.Rectangle Tool (R) Tool yang berfungsi untuk membuat bentuk kotak. Rectangle Tool juga memiliki sub tool, yakni polystar Tool yang berfungsi membuat bermacam bentuk segi.
11. Pencil Tool (Y) Pencil Tool berfungsi untuk membuat goresan yang seperti pensil. setiap goresan akan menjadi tipe stroke
12. Brush Tool (B) Berfungsi untuk membuat goresan seperti brush(kuas) yang merupakan tipe fill.
13. Ink bottle Tool (S) berfungsi untuk membuat stroke
14. Paint bucket (K) Berfungsi untuk membuat fill
15. Eye dropper (I) berfungsi untuk mengambil sampel warna
16. Eraser (E) Penghapus
Sebenernya aku nggak terlalu ngerti tentang flash. tapi, aku cuma ngerti dikit aja. kalo gitu langsung aja ya. Cara membuat animasi flash dengan motion tweening
1. Kamu harus buat gambar. Contoh yang paling mudah adalah buat gambar lingkaran dengan menggunakan oval tool
2. Jaring gambar itu dengan menggunakan selection  tool (panah hitam pojok kiri)
3. Tekan F8 sehingga muncul kotak yang bertuliskan Convert To Symbol
4. Klik pada bulatan movie clip. Registration digunakan untuk memindahkan poros atau pusat gambar. Setelah selesai klik OK
flash1
5. Klik pada frame yang diinginkan.Misal pada frame ke 20
6. Klik kanan pada frame 20 tersebut, kemudian klik insert key frame atau tekan F6 motion tween 2
7. Pindahkan gambar sesuai keinginan, misal ke kanan, kiri atau bawah.
Jika ingin gambar berpindah lurus maka, tekan shift saat memindahkan gambar.
8. Klik frame yang ada di tengah-tengah antara frame 1 dan frame 20
9. Klik kanan pada frame tersebut dan klik create motion tweening.
Sehingga muncul tanda panah antara frame 1 dan frame 20. Atau pada  Properties di bawah stage pilih Tween Motion.
3-20
10. Tekan enter atau ctrl+ enter untuk menjalankan animasi tersebut. Selamat mencoba!!!!!!
Cara membuat web server lokal yaitu kita install applikasi web server di komputer kita sendiri. Ada banyak applikasi yang bisa dijadikan sebagai Server Website di komputer kita. Baik itu web server di Windows XP ataupun OS lain seperti linux ( Ubuntu , Suse , dll). Oo...iya hampir lupa, satu yang penting web server lokal ini adalah gratis karena kita tidak perlu sewa domain dan hositng. Software aplikasi web server yang paling populer adalah :
  • Internet Information Service (IIS). IIS ini biasanya sebagai bawaan dari windows. Pada umumnya digunakan pada windows 2000 server dan windows 2003. IIS ini menggunakan bahasa ASP dan banyak dipadukan dengan database MSSQL. Bagi anda yang jago vb script , maka ASP ini sangat cocok buat anda.
  • Apache. Ini biasanya untuk website dengan bahasa PHP dan dipadukan dengan database MySQL. Software yang satu ini gratis.
Karena pertimbangan biaya maka banyak orang memakai Apache , PHP & MySQL untuk membuat server website lokal. Dan juga di hostingan , rata-rata sudah menyediakan fasilitas PHP & MySQL tersebut. Karena itu kita fokuskan topik kita ke web server ini saja.
Kita bisa download Apache , PHP dan MySql dari websitenya dan install satu -satu di komputer kita untuk membuat server website lokal. Tapi ini lebih ribet. Ada beberapa pengembang yang sudah menyediakan satu installer untuk paket tersebut ( Apache , PHP dan MySql ) , seperti :
  • XAMPP
  • WAMPP
  • DONGKRAK
Yang pernah saya coba dan saya pakai di komputer saya adalah XAMPP (basic package) version 1.6.7 untuk Windows. XAMPP ini cukup bagus dan fitur juga cukup lengkap. Berikut fitur - fitur dari XAMPP :
  1. Apache 2.2.9
  2. MySQL 5.0.51b
  3. PHP 5.2.6 + PHP 4.4.9 + PEAR
  4. PHP-Switch win32 1.0 (please use the "php-switch.bat")
  5. XAMPP Control Version 2.5 from www.nat32.com
  6. XAMPP Security 1.0
  7. SQLite 2.8.15
  8. OpenSSL 0.9.8h
  9. phpMyAdmin 2.11.7
  10. ADOdb 4.98
  11. Mercury Mail Transport System v4.52
  12. FileZilla FTP Server 0.9.25
  13. Webalizer 2.01-10
  14. Zend Optimizer 3.3.0
  15. eAccelerator 0.9.5.3 for PHP 5.2.6 (comment out in the php.ini)
Sebagian fungsi fitur ini saya juga belum begitu paham. Tapi yang penting adalah ada Apache , PHP dan MySql , dimana ketiga inilah yang paling kita butuhkan untuk membuat lokal web server di komputer kita.
Cara menginstall XAMPP ini juga mudah. Berikut cara cara install XAMPP menjadi web server di komputer kita.
  1. Download XAMPP di servernya ( http://www.apachefriends.org/en/xampp-windows.html)
  2. Double klik pada file yang baru dodownload untuk unpack installer. Pilih folder pada level tertinggi untuk tempat unpack file tersebut seperti E:\xampp atau C:\xampp atau folder yang lainnya. Ingat jangan gunakan folder flash disk dan sejenisnya.
  3. Buka folder tempat anda unpack sebelumnya.
  4. Double klik setup_xampp.bat untuk install XAMPP
  5. Cari dan double klik file xampp-control.exe untuk membuka setting XAMPP.
  6. Disini anda bisa start dan stop Apache , MySQL server dan fitur lain. Untuk latihan ini saya kira anda cukup start Apache , MySQL saja.
  7. Buka browser anda dan ketik http://127.0.0.1 atau http://localhost maka server website lokal anda akan terbuka.
Sampai disini anda sudah berhasil membuat komputer kita menjadi web server. Anda bisa menggunakan phpMyAdmin untuk membuat database.
Copy kan web page anda ke ?:\xampp\htdocs atau buat subfolder dari htdocs untuk website anda. Contoh : Jika anda buat subfolder "coba" maka dari browser anda akan diakses dengan http://localhost/coba
........Selamat Mencoba............
Program kalkulator adalah program standar yang sudah tersedia di Microsoft Windows. Tetapi, tak ada salahnya jika kita mencoba membuat kalkulator sendiri dengan Microsoft Visual Basic 6.0.
Pertama-tama, buatlah sebuah form sesuai selera Anda, yang bentuknya kurang lebih seperti
kalkulator standar Windows, seperti ini:




Untuk properties dari masing-masing objek, saya contohkan seperti dibawah ini, dengan letak
masing-masing objek disesuaikan dengan gambar diatas.
Textbox 1:
(Name) : txtDisplay
Alignment: 1-Right Justify
Text : (kosongkan)
Maxlength : 12

Command Button 1:
(Name) : cmdAngka
Index : 1
Caption : 1

Command Button 2:
(Name) : cmdAngka
Index : 2
Caption : 2

Command Button 3:
(Name) : cmdAngka
Index : 3
Caption : 3

Command Button 4:
(Name) : cmdAngka
Index : 4
Caption : 4

Command Button 5:
(Name) : cmdAngka
Index : 5
Caption : 5

Command Button 6:
(Name) : cmdAngka
Index : 6
Caption : 6

Command Button 7:
(Name) : cmdAngka
Index : 7
Caption : 7

Command Button 8:
(Name) : cmdAngka
Index : 8
Caption : 8

Command Button 9:
(Name) : cmdAngka
Index : 9
Caption : 9

Command Button 10:
(Name) : cmdAngka
Index : 0
Caption : 0

Command Button 11:
(Name) : cmdPlusMinus
Caption : +/-

Command Button 12:
(Name) : cmdKoma
Caption : .

Command Button 13:
(Name) : cmdOperator
Index : 1
Caption : +

Command Button 14:
(Name) : cmdOperator
Index : 2
Caption : -

Command Button 15:
(Name) : cmdOperator
Index : 3Caption : x

Command Button 16:
(Name) : cmdOperator
Index : 4
Caption : /

Command Button 17:
(Name) : cmdClearEntry
Caption : CE

Command Button 18:
(Name) : cmdClear
Caption : C

Command Button 19:
(Name) : cmdSamaDengan
Caption : =

Berikutnya, Anda tinggal membuat coding dari kalkulator tersebut. Jika Anda mengikuti semua
setting properties seperti diatas, maka codingnya saya contohkan seperti ini:

Option Explicit
Private Hasil As Double
Private Const opNol = 0
Private Const opTambah = 1
Private Const opKurang = 2
Private Const opKali = 3
Private Const opBagi = 4
Private Operator As Integer
Private NilaiBaru As Boolean

' untuk menghapus karakter terakhir
Private Sub Hapus()
Dim txt As String
Dim min_len As Integer
txt = txtDisplay.Text
If Left$(txt, 1) = "-" Then
min_len = 2
Else
min_len = 1
End If
If Len(txt) > min_len Then
txtDisplay.Text = Left$(txt, Len(txt) - 1)
Else
txtDisplay.Text = "0"
End If
End Sub

' hapus angka, hasil terakhir dan operator
Private Sub cmdClear_Click()
cmdClearEntry_Click
Hasil = 0
Operator = opNol
End Sub
' hapus angka
Private Sub cmdClearEntry_Click()
txtDisplay.Text = ""
End Sub
' menambahkan koma (desimal)
Private Sub cmdKoma_Click()
If InStr(txtDisplay.Text, ".") Then
Beep
Else
If NilaiBaru Then
txtDisplay.Text = "."
NilaiBaru = False
Else
txtDisplay.Text = txtDisplay.Text & "."
End If
End If
End Sub

' Menghitung
Private Sub cmdSamaDengan_Click()
Dim HasilBaru As Double
If txtDisplay.Text = "" Then
HasilBaru = 0
Else
HasilBaru = CDbl(txtDisplay.Text)
End If
Select Case Operator
Case opNol
Hasil = HasilBaru
Case opTambah
Hasil = Hasil + HasilBaru
Case opKurang
Hasil = Hasil - HasilBaru
Case opKali
Hasil = Hasil * HasilBaru
Case opBagi
'Tidak bisa dibagi nol
If HasilBaru = 0 Then
MsgBox "Tidak bisa dibagi 0", vbOKOnly + vbCritical, "Kalku ERROR"
Call cmdClear_Click
Else
Hasil = Hasil / HasilBaru
End If
End Select
Operator = opNol
NilaiBaru = True
txtDisplay.Text = Format$(Hasil)
End Sub

' menuliskan angka
Private Sub cmdAngka_Click(Index As Integer)
If NilaiBaru Then
txtDisplay.Text = Format$(Index)
NilaiBaru = False
Else
txtDisplay.Text = _
txtDisplay.Text & Format$(Index)
End If
End Sub
' tombol tambah/kurang/bagi/kali
Private Sub cmdOperator_Click(Index As Integer)
cmdSamaDengan_Click
Operator = Index
NilaiBaru = True
End Sub

' merubah tanda +/-
Private Sub cmdPlusMinus_Click()
If NilaiBaru Then
txtDisplay.Text = "-"
ElseIf Left$(txtDisplay.Text, 1) = "-" Then
txtDisplay.Text = Right$(txtDisplay.Text, 2)
Else
txtDisplay.Text = "-" & txtDisplay.Text
End If
End Sub

' filter untuk angka saja yg dapat diketikkan
Private Sub Form_KeyPress(KeyAscii As Integer)
txtDisplay_KeyPress KeyAscii
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
txtDisplay_KeyUp KeyCode, Shift
End Sub
' supaya kursor tetap di kanan
Private Sub txtDisplay_Change()
txtDisplay.SelStart = Len(txtDisplay.Text)
End Sub
Private Sub txtDisplay_GotFocus()
txtDisplay_Change
End Sub

' untuk mengetikkan angka di keyboard
Private Sub txtDisplay_KeyPress(KeyAscii As Integer)
Dim ch As String
ch = Chr$(KeyAscii)
Select Case ch
Case "0"
cmdAngka_Click 0
Case "1"
cmdAngka_Click 1
Case "2"
cmdAngka_Click 2
Case "3"
cmdAngka_Click 3
Case "4"
cmdAngka_Click 4
Case "5"
cmdAngka_Click 5
Case "6"
cmdAngka_Click 6
Case "7"
cmdAngka_Click 7
Case "8"
cmdAngka_Click 8
Case "9"
cmdAngka_Click 9
Case "*", "x", "X"
cmdOperator_Click opKali
Case "+"
cmdOperator_Click opTambah
Case vbCrLf, vbCr, "="
cmdSamaDengan_Click
Case "-"
cmdOperator_Click opKurang
Case "."
cmdKoma_Click
Case "/"
cmdOperator_Click opBagi
Case "C", "c"
cmdClearEntry_Click
End Select
KeyAscii = 0
End Sub

' untuk ketikan angka di numpad
Private Sub txtDisplay_KeyUp(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyNumpad0
cmdAngka_Click 0
Case vbKeyNumpad1
cmdAngka_Click 1
Case vbKeyNumpad2
cmdAngka_Click 2
Case vbKeyNumpad3
cmdAngka_Click 3
Case vbKeyNumpad4
cmdAngka_Click 4
Case vbKeyNumpad5
cmdAngka_Click 5
Case vbKeyNumpad6
cmdAngka_Click 6
Case vbKeyNumpad7
cmdAngka_Click 7
Case vbKeyNumpad8
cmdAngka_Click 8
Case vbKeyNumpad9
cmdAngka_Click 9
Case vbKeyMultiply
cmdOperator_Click opKali
Case vbKeyAdd
cmdOperator_Click opTambah
Case vbKeySeparator
cmdSamaDengan_Click
Case vbKeySubtract
cmdOperator_Click opKurang
Case vbKeyDivide
cmdOperator_Click opBagi
Case vbKeyDecimal
cmdKoma_Click
Case vbKeyBack, vbKeyDelete
Hapus
End Select
KeyCode = 0
End Sub