• Tidak ada hasil yang ditemukan

Membuat Program Mengeja Bilangan

Dalam dokumen Modul 1, Pengenalan Visual Basic (Halaman 184-189)

Oleh : Hendra & Susan Dewichan

Bagaimana anda membaca 123456789.55 ?

Tentu saja : Seratus Duapuluh Tiga Juta Empat Ratus Lima Puluh Enam Ribu Tujuh Ratus Delapan Puluh Sembilan Rupiah Lima Puluh Lima Sen

Tetapi bagaimana kalau komputer yang melakukan hal tersebut ?

Tentu saja kita membutuhkan suatu program yang dapat menterjemahkan angka-angka tersebut menjadi kata-kata yang sesuai, dan dapatkah anda bayangkan repotnya

melakukan hal tersebut.

Saya sering membaca di mailing list pemrograman, banyak orang menanyakan akan hal tersebut, dan memang tidak sesederhana seperti kita mengeja ketika menulis Kwitansi, Slip Tabungan, CEK dan Giro.

Baiklah, sekarang saya akan membantu anda untuk memahami dasar dari program mengeja terbilang, mari kita lihat kembali angka 123456789.55 yang anda baca sebagai Seratus Duapuluh Tiga Juta Empat Ratus Lima Puluh Enam Ribu Tujuh Ratus Delapan Puluh Sembilan Rupiah Lima Puluh Lima Sen, dan akan saya penggal menjadi potongan yang yang lebih kecil sebagai berikut :

123 456 789 .55

dan perhatikan potongan ejaannya Seratus Duapuluh Tiga Juta

Empat Ratus Limapuluh Enam Ribu

Tujuh Ratus Delapanpuluh Sembilan Rupiah Limapuluh Lima Sen

Jadi pada prinsipnya kita memotongnya menjadi bagian (123) Juta, (456) Ribu, (789) Rupiah, dan (55) Sen.

Sekarang misalnya kita menggambil 123 yang kita baca sebagai Seratus Duapuluh Tiga, dimana kalau kita penggal menjadi potongan yang lebih kecil sebagai berikut :

Dasar Pemrograman Visual Basic Hendra, S.T.

Se ratus Dua puluh Tiga

Jadi pada prinsipnya kita memotongnya menjadi bagian (1) ratus, (2) puluh, (3) satuan. Sehingga akhirnya kita dapat menyusun suatu program sebagai berikut :

Public Function terbilang(x As Currency) Dim triliun As Currency

Dim milyar As Currency Dim juta As Currency Dim ribu As Currency Dim satu As Currency Dim sen As Currency Dim baca As String

'Jika x adalah 0, maka dibaca sebagai 0 If x = 0 Then

baca = angka(0, 1) Else

'Pisah masing-masing bagian untuk triliun, milyar, juta, ribu, rupiah, dan sen

triliun = Int(x * 0.001 ^ 4)

milyar = Int((x - triliun * 1000 ^ 4) * 0.001 ^ 3)

juta = Int((x - triliun * 1000 ^ 4 - milyar * 1000 ^ 3) / 1000 ^ 2) ribu = Int((x - triliun * 1000 ^ 4 - milyar * 1000 ^ 3 - juta * 1000 ^ 2) / 1000)

satu = Int(x - triliun * 1000 ^ 4 - milyar * 1000 ^ 3 - juta * 1000 ^ 2 - ribu * 1000)

sen = Int((x - Int(x)) * 100)

'Baca bagian triliun dan ditambah akhiran triliun If triliun > 0 Then

baca = ratus(triliun, 5) + "triliun " End If

'Baca bagian milyar dan ditambah akhiran milyar If milyar > 0 Then

baca = ratus(milyar, 4) + "milyar " End If

'Baca bagian juta dan ditambah akhiran juta If juta > 0 Then

baca = baca + ratus(juta, 3) + "juta " End If

'Baca bagian ribu dan ditambah akhiran ribu If ribu > 0 Then

baca = baca + ratus(ribu, 2) + "ribu " End If

Dasar Pemrograman Visual Basic Hendra, S.T. baca = baca + ratus(sen, 0) + "sen"

End If End If

terbilang = UCase(Left(baca, 1)) & LCase(Mid(baca, 2)) End Function

Function ratus(x As Currency, posisi As Integer) As String Dim a100 As Integer, a10 As Integer, a1 As Integer

Dim baca As String a100 = Int(x * 0.01)

a10 = Int((x - a100 * 100) * 0.1) a1 = Int(x - a100 * 100 - a10 * 10) 'Baca Bagian Ratus

If a100 = 1 Then baca = "Seratus " Else

If a100 > 0 Then

baca = angka(a100, 2) + "ratus " End If

End If

'Baca Bagian Puluh dan Satuan If a10 = 1 Then

baca = baca + angka(a10 * 10 + a1, 2) Else

If a10 > 0 Then

baca = baca + angka(a10, 2) + "puluh " End If

If a1 > 0 Then

If posisi = 2 And a100 = 0 And a10 = 0 Then baca = baca + angka(a1, 1)

Else

baca = baca + angka(a1, 2) End If

End If End If

ratus = baca End Function

Function angka(x As Integer, posisi As Integer) Select Case x

Case 0: angka = "Nol" Case 1: If posisi = 2 Then angka = "Satu " Else angka = "Se" End If

Case 2: angka = "Dua " Case 3: angka = "Tiga " Case 4: angka = "Empat " Case 5: angka = "Lima " Case 6: angka = "Enam " Case 7: angka = "Tujuh " Case 8: angka = "Delapan " Case 9: angka = "Sembilan " Case 10: angka = "Sepuluh "

Dasar Pemrograman Visual Basic Hendra, S.T. Case 12: angka = "Duabelas "

Case 13: angka = "Tigabelas " Case 14: angka = "Empatbelas " Case 15: angka = "Limabelas " Case 16: angka = "Enambelas " Case 17: angka = "Tujuhbelas " Case 18: angka = "Delapanbelas " Case 19: angka = "Sembilanbelas " End Select

End Function

Ok, akhirnya segala sesuatu menjadi sederhana kalau kita telah memahami konsep dasar pemecahan masalahanya.

Dasar Pemrograman Visual Basic Hendra, S.T.

Membuat Program Mengeja Bilangan

Function SpellDigit(x)

Dim cRet As String cRet = ""

Select Case x

Case 0: cRet = " ZERO" Case 1: cRet = " ONE" Case 2: cRet = " TWO" Case 3: cRet = " THREE" Case 4: cRet = " FOUR" Case 5: cRet = " FIVE" Case 6: cRet = " SIX" Case 7: cRet = " SEVEN" Case 8: cRet = " EIGHT" Case 9: cRet = " NINE" Case 10: cRet = " TEN" Case 11: cRet = " ELEVEN" Case 12: cRet = " TWELVE" Case 13: cRet = " THIRTEEN" Case 14: cRet = " FOURTEEN" Case 15: cRet = " FIFTEEN" Case 16: cRet = " SIXTEEN" Case 17: cRet = " SEVENTEEN" Case 18: cRet = " EIGHTEEN" Case 19: cRet = " NINETEEN" Case 20: cRet = " TWENTY" Case 30: cRet = " THIRTY" Case 40: cRet = " FOURTY" Case 50: cRet = " FIFTY" Case 60: cRet = " SIXTY" Case 70: cRet = " SEVENTY" Case 80: cRet = " EIGHTY" Case 90: cRet = " NINETY"

Case 100: cRet = " ONE HUNDRED" Case 200: cRet = " TWO HUNDRED" Case 300: cRet = " THREE HUNDRED" Case 400: cRet = " FOUR HUNDRED" Case 500: cRet = " FIVE HUNDRED" Case 600: cRet = " SIX HUNDRED" Case 700: cRet = " SEVEN HUNDRED" Case 800: cRet = " EIGHT HUNDRED" Case 900: cRet = " NINE HUNDRED" End Select

SpellDigit = cRet

End Function

Function SpellHundred(x)

Dim cRet As String Dim n100 As Integer Dim n10 As Integer Dim n1 As Integer cRet = ""

Dasar Pemrograman Visual Basic Hendra, S.T. n1 = (x - n100 - n10) If n100 > 0 Then cRet = SpellDigit(n100) End If If n10 > 0 Then If n10 = 10 Then

cRet = cRet & SpellDigit(n10 + n1) Else

cRet = cRet & SpellDigit(n10) End If

End If

If n1 > 0 And n10 <> 10 Then cRet = cRet & SpellDigit(n1) End If

SpellHundred = cRet

End Function

Public Function SpellAmount(x)

Dim cRet As String Dim n1000000 As Long Dim n1000 As Long Dim n1 As Integer Dim n0 As Integer On Error Resume Next cRet = "" n1000000 = Int(x / 1000000) * 1000000 n1000 = Int((x - n1000000) / 1000) * 1000 n1 = Int(x - n1000000 - n1000) n0 = (x - n1000000 - n1000 - n1) * 100 If n1000000 > 0 Then

cRet = SpellHundred(n1000000 / 1000000) & " MILLION" End If

If n1000 > 0 Then

cRet = cRet & SpellHundred(n1000 / 1000) & " THOUSAND" End If

If n1 > 0 Then

cRet = cRet & SpellHundred(n1) End If

If n0 > 0 Then

cRet = cRet & " AND CENTS" & SpellHundred(n0) End If

SpellAmount = cRet & " ONLY"

Dalam dokumen Modul 1, Pengenalan Visual Basic (Halaman 184-189)

Dokumen terkait