Home, Forum diskusi, Chatting, Download


Membuat Program Mengeja Bilangan

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 :

1 2 3

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
   'Baca bagian rupiah dan ditambah akhiran rupiah
   If satu > 0 Then
      baca = baca + ratus(satu, 1) + "rupiah "
   End If
   'Baca bagian sen dan ditambah akhiran sen
   If sen > 0 Then
      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 "
       Case 11: angka = "Sebelas "
       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. 

PENTACOM, Jl. Samosir No. 21 Medan.
pentacom@yahoogroups.com


Dibuat  oleh hendra@indoprog.com
Medan - Sumatera Utara
Indonesia