INFOKAM Nomor I / Th. VII/ Maret / 11
16..
MENAMPILKAN TERBILANG PADA FORM MENGGUNAKAN BAHASA PEMROGRAMAN BERBASIS OBJEK Sugeng Murdowo Dosen Akademi Manajemen Informatika dan Komputer Jakarta Teknologi Cipta
[email protected] ABSTRAK Penggunaan Pemrogaman Berbasis Objek terutama Microsoft Visual Basic 6.0 dan Microsoft Visual Foxpro 9.0 sudah sangat luas di masyarakat untuk proses pembelajaran di sekolah dan perguruan tinggi maupun untuk pembuatan aplikasi yang digunakan di perusahaan. Dalam tulisan ini akan membahas bagaimana memunculkan tulisan terbilang dari angka yang kita masukan dengan menggunakan kedua bahasa pemrograman tersebut. Kata Kunci : Tulisan Terbilang, Bahasa Pemrograman
A. Pendahuluan Bahasa Pemrograman komputer adalah sebuah alat yang digunakan oleh para programmer komputer untuk menciptakan program aplikasi untuk berbagai macam keperluan. Salah satu bahasa pemrograman yang dikenal secara luas di masyarakat adalah Microsoft Visual Basic 6.0 dan Microsoft Visual Foxpro 9.0 yang banyak diajarkan di Sekolah Menengah Kejuruan dan Perguruan Tinggi yang berbasis komputer. Dari kedua bahasa pemrograman data yang diolah bisa berupa data angka dan huruf. Untuk membuat aplikasi yang dapat mencetak bukti transaksi tidak akan terlepas dari penulisan kata terbilang sesuai dengan nominal angka yang dimasukan.
B. Kajian Teori Fungsi teks yang di gunakan Microsoft Visual Basic 6 antara lain sebagai berikut, Len, perintah yang digunakan untuk menghitung jumlah karakter suatu teks. Trim, perintah untuk menghapus spasi kosong yang ada di kanan. Left, mengambil sejumlah karakter dari suatu teks mulai karakter paling kiri. Right, mengambil sejumlah karakter dari suatu teks mulai karakter paling kanan. Mid, mengambil sejumlah karakter dari suatu teks mulai nomer karakter tertentu. Sedangkan fungsi teks yang digunakan dalam Microsoft Visual Foxpro seperti perintah Len, Trim, Left Dan Right fungsi dan kegunaanya sama, yang berbeda untuk mengambil fungsi teks mulai karakter tertentu menggunakan perintah SubStr yang kegunaannya sama dengan fungsi Mid yang ada di Microsot Visual Basic 6.
C. Pembahasan Dalam pembahasan bagaimana menampilkan tulisan terbilang menggunakan kedua bahasa pemrograman tersebut secara garis besar adalah berapa jumlah digit yang dimasukan untuk menetukan ratus, ribu, juta dan seterusnya. Kemudian teks tersebut diambil tiga digit untuk diinisialiasi berapa nilainya untuk dikonversi menjadi huruf. Setelah semua terinisalisasi kemudian digabungkan menjadi satu teks. Menggunakan Bahasa Pemrograman Microsoft Visual Basic 6.0 Langkah-langkah yang dilakukan adalah sebagai berikut : 1. Buat Project Baru (File – New – Standard Exe – Ok ), beri name project Terbilang 2. Tunjuk Form – Klik Kanan – Add Module. Selanjutnya ketik kode program untuk memunculkan terbilang sebagai berikut : Option Explicit Public Function TerbilangDesimal(InputCurrency As String, Optional MataUang As String = "Rupiah") As String Dim strInput As String
INFOKAM Nomor I / Th. VII/ Maret / 11 Dim strBilangan As String Dim strPecahan As String On Error GoTo Pesan Dim strValid As String, huruf As String * 1 Dim i As Integer 'Periksa setiap karakter yg diketikkan ke kotak 'UserID strValid = "1234567890," For i% = 1 To Len(InputCurrency) huruf = Chr(Asc(Mid(InputCurrency, i%, 1))) If InStr(strValid, huruf) = 0 Then 'Set AngkaTerbilang = Nothing MsgBox "Harus karakter angka!", vbCritical, "Karakter Tidak Valid" Exit Function End If Next i% If InputCurrency = "" Then Exit Function If Len(Trim(InputCurrency)) > 15 Then GoTo Pesan strInput = CStr(InputCurrency) 'Konversi ke string 'Periksa apakah ada tanda "," jika ya berarti pecahan If InStr(1, strInput, ",", vbBinaryCompare) Then strBilangan = Left(strInput, InStr(1, strInput, ",", vbBinaryCompare) - 1) strPecahan = Trim(Right(strInput, Len(strInput) - Len(strBilangan) - 1)) If MataUang <> "" Then If CLng(Trim(strPecahan)) > 99 Then strInput = Format(Round(CDbl(strInput), 2), "#0.00") strPecahan = Format((Right(strInput, Len(strInput) - Len(strBilangan) - 1)), "00") End If If Len(Trim(strPecahan)) = 1 Then strInput = Format(Round(CDbl(strInput), 2), "#0.00") strPecahan = Format((Right(strInput, Len(strInput) - Len(strBilangan) - 1)), "00") End If If CLng(Trim(strPecahan)) = 0 Then TerbilangDesimal = (KonversiBilangan(strBilangan) & MataUang & " " & KonversiBilangan(strPecahan)) Else TerbilangDesimal = (KonversiBilangan(strBilangan) & MataUang & " " & KonversiBilangan(strPecahan) & "sen") End If Else TerbilangDesimal = (KonversiBilangan(strBilangan) & "koma " & KonversiPecahan(strPecahan)) End If Else TerbilangDesimal = (KonversiBilangan(strInput)) End If Exit Function Pesan: TerbilangDesimal = "(maksimal 15 digit)" End Function 'Fungsi ini untuk mengkonversi nilai pecahan (setelah 'angka 0) Private Function KonversiPecahan(strAngka As String) As String Dim i%, strJmlHuruf$, Urai$, Kar$ If strAngka = "" Then Exit Function strJmlHuruf = Trim(strAngka) Urai = ""
17..
INFOKAM Nomor I / Th. VII/ Maret / 11 Kar = "" For i = 1 To Len(strJmlHuruf) 'Tampung setiap satu karakter ke Kar Kar = Mid(strAngka, i, 1) Urai = Urai & Kata(CInt(Kar)) Next i KonversiPecahan = Urai End Function 'Fungsi ini untuk menterjemahkan setiap satu angka ke 'kata Private Function Kata(angka As Byte) As String Select Case angka Case 1: Kata = "Satu " Case 2: Kata = "Dua " Case 3: Kata = "Tiga " Case 4: Kata = "Empat " Case 5: Kata = "Lima " Case 6: Kata = "Enam " Case 7: Kata = "Tujuh " Case 8: Kata = "Delapan " Case 9: Kata = "Sembilan " Case 0: Kata = "Nol " End Select End Function 'Ini untuk mengkonversi nilai bilangan sebelum pecahan Private Function KonversiBilangan(strAngka As String) As String Dim strJmlHuruf$, intPecahan As Integer, strPecahan$, Urai$, Bil1$, strTOT$, Bil2$ Dim X, Y, z As Integer If strAngka = "" Then Exit Function strJmlHuruf = Trim(strAngka) X=0 Y=0 Urai = "" While (X < Len(strJmlHuruf)) X=X+1 strTOT = Mid(strJmlHuruf, X, 1) Y = Y + Val(strTOT) z = Len(strJmlHuruf) - X + 1 Select Case Val(strTOT) Case 0 Bil1 = "Nol " Case 1 If (z = 1 Or z = 7 Or z = 10 Or z = 13) Then Bil1 = "Satu " ElseIf (z = 4) Then If (X = 1) Then Bil1 = "Se" Else Bil1 = "Satu " End If ElseIf (z = 2 Or z = 5 Or z = 8 Or z = 11 Or z = 14) Then X=X+1 strTOT = Mid(strJmlHuruf, X, 1) z = Len(strJmlHuruf) - X + 1 Bil2 = "" Select Case Val(strTOT) Case 0
18..
INFOKAM Nomor I / Th. VII/ Maret / 11 Bil1 = "Sepuluh " Case 1 Bil1 = "Sebelas " Case 2 Bil1 = "Dua Belas " Case 3 Bil1 = "Tiga Belas " Case 4 Bil1 = "Empat Belas " Case 5 Bil1 = "Lima Belas " Case 6 Bil1 = "Enam Belas " Case 7 Bil1 = "Tujuh Belas " Case 8 Bil1 = "Delapan Belas " Case 9 Bil1 = "Sembilan Belas " End Select Else Bil1 = "Se" End If Case 2 Bil1 = "Dua " Case 3 Bil1 = "Tiga " Case 4 Bil1 = "Empat " Case 5 Bil1 = "Lima " Case 6 Bil1 = "Enam " Case 7 Bil1 = "Tujuh " Case 8 Bil1 = "Delapan " Case 9 Bil1 = "Sembilan " Case Else Bil1 = "" End Select If (Val(strTOT) > 0) Then If (z = 2 Or z = 5 Or z = 8 Or z = 11 Or z = 14) Then Bil2 = "Puluh " ElseIf (z = 3 Or z = 6 Or z = 9 Or z = 12 Or z = 15) Then Bil2 = "Ratus " Else Bil2 = "" End If Else Bil2 = "" End If If (Y > 0) Then Select Case z Case 4 Bil2 = Bil2 + "Ribu " Y=0
19..
INFOKAM Nomor I / Th. VII/ Maret / 11 Case 7 Bil2 = Bil2 + "Juta " Y=0 Case 10 Bil2 = Bil2 + "Milyar " Y=0 Case 13 Bil2 = Bil2 + "Trilyun " Y=0 End Select End If Urai = Urai + Bil1 + Bil2 Wend KonversiBilangan = "# " & Urai & "Rupiah #" End Function Simpan module diberi nama Terbilang 3. Desain Form dengan Layout Tampilan Sebagai Berikut ini :
Gambar 1 Form Layout Visual Basic 6 Pengaturan Properties dari Tool sebagai berikut : Nama Tool Properties Isi Project1 Name Terbilang Form Caption Form Terbilang Name Frm_Terbilang Label1 Caption Masukkan Angka Autosize .T. TextBox1 Name Txt_Angka Alignment Right Maxlength 15 Command Button 1 Name Cmd_Terbilang Caption Terbilang Label2 Caption Label2 Autosize .F. Wordwrap .T. Command Button 2 Name Cmd_Ulangi Caption Ulangi Command Button 3 Name Cmd_Selesai Caption Selesai Selesai Alur Programnya : - Isi angkanya - Klik Terbilang - Muncul Huruf Terbilangnya Untuk Kode Programnya sebagai berikut : Isi dari Textbox Angka Harus Angka – Txt_Angka – Keypress Private Sub Txt_Angka_KeyPress(KeyAscii As Integer)
20..
INFOKAM Nomor I / Th. VII/ Maret / 11
21..
If Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or KeyAscii = vbKeyBack) Then KeyAscii = 0 End If End Sub Cmd_Terbilang – Click, Untuk munculkan Tulisan Terbilang Private Sub Cmd_Terbilang_Click() Me.Label2.Caption = TerbilangDesimal(Me.Txt_Angka.Text) End Sub Cmd_Ulangi – Click, digunakan untuk mengosongkan Textbox Angka dan Label 2 Private Sub Cmd_Ulangi_Click() Me.Txt_Angka.Text = "" Me.Label2.Caption = "Label 2" Me.Txt_Angka.SetFocus End Sub Cmd_Selesai – Click, digunakan untuk selesai dari form Private Sub Cmd_Selesai_Click() Unload Me End Sub 4. Hasil Yang Diharapkan Sebagai berikut :
Gambar 2 Hasil Menggunakan Visual Basic 6 Menggunakan Bahasa Pemrograman Microsoft Visual Foxpro 9.0 Langkah-langkah yang dilakukan adalah sebagai berikut : 1. Buat Project Baru (File – New – Project - New File), kemudian tentukan lokasi penyimpanan dan beri nama file projectnya (misalnya Terbilang), maka hasilnya sebagai berikut 2. Langkah Awal Ketik Prosedure untuk bilangan terbilang, ketik sebagai program, Klik Tab Code – Klik Program – New – Ketik Programnya sebagai berikut ini : Proc dua(mon,tul) private art,arj,arr,p,a,s store ' ' to art,arj,arr,a store 0 to p,s p = len(ltrim(str(mon))) do case case p <= 3 satu(mon) tul = a + ' Rupiah' case p <= 6 mon1 = val(right(ltrim(str(mon)),3)) mon2 = val(subs(ltrim(str(mon)),1,p-3)) satu(mon1)
INFOKAM Nomor I / Th. VII/ Maret / 11 store a to art satu(mon2) do case case p = 4 .and. mon2 = 1 if mon = 1000 store 'Seribu ' to arr tul = arr + 'Rupiah' else store 'Seribu ' to arr tul = arr + art + ' Rupiah' endif case right(ltrim(str(mon)),3) = '000' store a + ' Ribu ' to arr tul = arr + 'Rupiah' other store a + ' Ribu ' to arr tul = arr + art + ' Rupiah' endcase case p <= 9 mon1 = val(right(ltrim(str(mon)),3)) mon2 = val(subs(right(ltrim(str(mon)),6),1,3)) mon3 = val(subs(ltrim(str(mon)),1,p-6)) satu(mon1) store a to art satu(mon2) if subs(right(ltrim(str(mon)),4),1,1) = '1' if val(right(ltrim(str(mon)),4)) = 1000 store 'Seribu ' to arr else store 'Seribu ' to arr endif else store a + ' Ribu ' to arr endif satu(mon3) do case case right(ltrim(str(mon)),6) = '000000' store a + ' Juta ' to arj tul = arj + 'Rupiah' case right(ltrim(str(mon)),3) = '000' store a + ' Juta ' to arj tul = arj + ltrim(arr) + 'Rupiah' case left(right(ltrim(str(mon)),6),3) = '000' store a + ' Juta ' to arj tul = arj + ltrim(art) + ' Rupiah' other store a + ' Juta ' to arj tul = arj + arr + art + ' Rupiah' endcase ENDCASE return tul END PROCEDURES proc satu(mon) private ba1,ba2,ba3,no,mo,bil store ' ' to ba1,ba2,ba3,no,mo sat= 'Satu Dua Tiga Empat Lima
Enam
Tujuh Delapan Sembilan'
22..
INFOKAM Nomor I / Th. VII/ Maret / 11 bil = subs(ltrim(str(mon)),1) s = len(bil) smon=bil no = 1 mo = 0 m=len(smon) do while no <= m n=ltrim(str(no)) b&n=subs(smon,m-mo,1) a&n= ' ' ba&n = ' ' if val(b&n)<>0 a&n =trim(subs(sat,(val(b&n)*8-7),8)) endi no=no+1 mo=mo+1 enddo if val(right(smon,1)) < 10 if val(right(smon,1)) = 0 ba1 = '' else ba1 = a1 + ' ' endi endi if val(right(smon,2)) >= 10 .and. val(right(smon,2)) < 100 do case case val(right(smon,2)) = 10 ba1='' ba2 = 'Sepuluh' case val(right(smon,2)) > 10 .and. val(right(smon,2)) < 20 if val(right(smon,2)) = 11 ba1= '' ba2= 'Sebelas' else ba1 = '' ba2 = a1 + ' Belas' endif other ba2 = a2 + ' Puluh ' + a1 endcase endif if val(right(smon,3)) >= 100 .and. val(right(smon,3)) < 1000 if val(right(smon,3)) = 100 .or. b3 = '1' if ba2 = ' ' ba3 = 'Seratus ' + ba1 else ba3 = 'Seratus ' + ba2 endif else if ba2 = ' ' ba3 = a3 + ' Ratus ' + ba1 else ba3 = a3 + ' Ratus ' + ba2 endif endi endi do case case s = 1
23..
INFOKAM Nomor I / Th. VII/ Maret / 11
24..
a = rtrim(ba1) case s = 2 a = rtrim(ba2) case s = 3 a = rtrim(ba3) endcase RETURN END PROCEDURES Selesai Simpan Beri Nama File ProgTbl.Prg - Tutup Programnya 3. Untuk menampilkan di Form – Klik Tab Document – Klik Form – New – New Form
Gambar 3 Desain Layout Foxpro Pengaturan – Properties Nama Tool Properties Isi Form Caption Form Terbilang Label1 Caption Masukkan Angka Autosize .T. TextBox1 Name Txt_Angka Builder – Type Numeric Command Button 1 Name Cmd_Terbilang Caption Terbilang Label2 Caption Label2 Autosize .F. Wordwrap .T. Command Button 2 Name Cmd_Ulangi Caption Ulangi Command Button 3 Name Cmd_Selesai Caption Selesai Selesai Alur Programnya : - Isi angkanya - Klik Terbilang - Muncul Huruf Terbilangnya Simpan Dengan Nama Frm_Terbilang Untuk Source Codenya sebagai berikut : Form – Load, berisi memanggil nama procedure yang telah kita buat dan membuat variabel public untuk tulisan yang akan dimunculkan. SET PROCEDURE TO "E:\Latihan Foxpro\ProgTbl.prg" PUBLIC Tul Cmd_Terbilang – Click, digunakan untuk memanggil procedure yang mengkonversi jadi bilangan terbilang. Tul = '' Angka = Thisform.txt_Angka.Value * Jalankan Procedure
INFOKAM Nomor I / Th. VII/ Maret / 11
25..
DO Dua WITH Angka,Tul Thisform.Label2.Caption = Tul Cmd_Ulangi – Click, digunakan untuk membersihkan tampilan form Thisform.Txt_Angka.Value = 0 Thisform.label2.Caption ="Label 2" Thisform.Txt_Angka.SetFocus Cmd_Selesai – Click, digunakan untuk mengakhiri program Thisform.Release 4. Hasil Yang Ingin Diharapkan
Gambar 4 Hasil Form Foxpro
D. Kesimpulan Setelah membaca dan mempraktekkan bagaimana kedua bahasa pemrograman menampilkan kata terbilang dapat diambil kesimpulan, bahwa secara logika dan struktur pemrograman adalah sama yang membedakan bagaimana cara penulisan dan statemen yang digunakan. Daftar Pustaka Djoko Pramono, 2002, Mudah Menguasai Viual Basic 6, PT. Elex Media Komputindo, Jakarta Ario Suryo Kusumo, 2000, Buku Latihan Visual Basic 6, PT. Elex Media Komputindo, Jakarta Ilma Yakin, Fungsi Terbilang Desimal, http://ilmalyakin.blogspot.com/2010/11/ membuatfungsi-terbilang-desimal.html M.Syaukani, 2006, Menguasai MS FoxPro 9, PT. Elex Media Komputindo, Jakarta Ir. Yuniar Supardi, 2007,36 Jam Belajar MS Visual FoxPro 9.0, PT. Elex Media Komputindo, Jakarta