Sedikit saya ingin berbagi ilmu dengan rekan pembaca semua. Kebetulan saya hobby menulis dan membuat
program aplikasi. Pada kesempatan ini saya akan mencoba menerapkan sebuah fungsi dengan nama:
'Terbilang' pada dua bahasa pemograman yaitu: Visual Basic dan Turbo Pascal. Kenapa dikatakan
Terbilang? Sebetulnya saya bingung untuk menamai fungsi ini. Cuma, saya terinspirasi oleh sehelai
kwitansi, di situ tertulis: "Terbilang : Sepuluh ribu rupiah. Ya sudah, saya namakan saja fungsi ini dengan
'Terbilang'. Langsung saja, berikut ini syntax yang bisa Anda coba:
• Untuk Bahasa Pascal:
Baris Kode
Program Huruf_Terbilang;
Uses Crt;
{==========================================}
Function IntToStr(I: LongInt): String;
var
StrS: string[15];
begin
Str(I, StrS);
IntToStr := StrS;
end;
{==========================================}
Function DlmHuruf(Var nHuruf:String):String;
Begin
If nHuruf ='1' Then DlmHuruf:='satu' Else
If nHuruf ='2' Then DlmHuruf:='dua' Else
If nHuruf ='3' Then DlmHuruf:='tiga' Else
If nHuruf ='4' Then DlmHuruf:='empat' Else
If nHuruf ='5' Then DlmHuruf:='lima' Else
If nHuruf ='6' Then DlmHuruf:='enam' Else
If nHuruf ='7' Then DlmHuruf:='tujuh' Else
If nHuruf ='8' Then DlmHuruf:='delapan' Else
If nHuruf ='9' Then DlmHuruf:='sembilan' Else
DlmHuruf:=' ';
End;
{-------------------------------------------}
Function Terbilang(Var Angka:LongInt):String;
var
ChrS : Array[1..10] of String;
StrT : Array[1..10] of String;
Huruf:String;Indeks,Panjang:Integer;
{ChrS1,ChrS2,ChrS3,ChrS4,ChrS5: String;
ChrS6,ChrS7,ChrS8,ChrS9,ChrS10: String;
StrT1,StrT2,StrT3,StrT4,StrT5:String;
StrT6,StrT7,StrT8,StrT9,StrT10:String;}
Begin
Huruf:=''; Panjang:=0;
For Indeks := 1 to 10 do begin
ChrS[Indeks]:='';
StrT[Indeks]:='';End;
Panjang:=Length(IntToStr(Angka));
For Indeks := 1 to Panjang do
{If Panjang >= Indeks Then}
ChrS[Indeks] :=
Copy(IntToStr(Angka),
(Panjang-(Indeks-1)),1);
{======================================}
If ChrS[8] ='0' Then
Begin
StrT[8] :='';
StrT[7]:=DlmHuruf(ChrS[7]) + 'juta ';
End
Else If ChrS[8] ='1' Then
Begin
StrT[8]:='';
If ChrS[7] = '0' Then
StrT[7]:='Sepuluh juta ' Else
If ChrS[7] = '1' Then
StrT[7]:='Sebelas juta ' Else
StrT[7]:= DlmHuruf(ChrS[7]) +
'belas juta';
End
Else If ChrS[8] >'1' Then
Begin
StrT[7]:=DlmHuruf(ChrS[7]) + 'juta ';
StrT[8]:=DlmHuruf(ChrS[8]) + 'puluh ';
End;
Begin
End;
{======================================}
If ChrS[6] = '0' Then
StrT[6]:=''
Else
Begin
If ChrS[6] <> '1' Then
StrT[6]:=DlmHuruf(ChrS[6]) + 'ratus '
Else
StrT[6]:='Seratus ';
End;
{========================================}
If ChrS[5] = '0' Then
Begin
StrT[5]:='';
If ChrS[4] = '1' Then
StrT[4]:= 'Seribu '
Else
StrT[4] := DlmHuruf(ChrS[4]) + 'ribu ';
End
Else If ChrS[5] = '1' Then
Begin
StrT[5]:='';
If ChrS[4] = '0' Then
StrT[4]:='Sepuluh ribu ' Else
If ChrS[4] = '1' Then
StrT[4]:='Sebelas ribu ' Else
StrT[4]:= DlmHuruf(ChrS[4]) +
'belas ribu ';
End
Else
Begin
StrT[4]:=DlmHuruf(ChrS[4]) + 'ribu ';
StrT[5]:=DlmHuruf(ChrS[5]) + 'puluh ';
End;
{=======================================}
If ChrS[3] = '0' Then
StrT[3]:=''
Else If ChrS[3] ='1' Then
StrT[3]:='Seratus '
Else If ChrS[3] > '1' Then
StrT[3]:=DlmHuruf(ChrS[3]) + 'ratus ';
{========================================}
If ChrS[2] = '0' Then
Begin
StrT[2]:='';
StrT[1]:=DlmHuruf(ChrS[1]);
End
Else If ChrS[2] ='1' Then
Begin
StrT[2]:='';
If ChrS[1] = '0' Then
StrT[1]:='Sepuluh' Else
If ChrS[1] = '1' Then
StrT[1]:='Sebelas' Else
StrT[1]:= DlmHuruf(ChrS[1]) +'belas';
End
Else If ChrS[2] > '1' Then
Begin
StrT[1]:=DlmHuruf(ChrS[1]);
StrT[2]:=DlmHuruf(ChrS[2])+'puluh ';
End;
For Indeks := 1 to 8 Do
If Panjang <= Indeks Then
StrT[Indeks + 1] :='';
For Indeks := 8 DownTo 1 Do
Huruf:=Huruf + StrT[Indeks];
{Huruf:=StrT[8+StrT[7+StrT[6+StrT[5+
StrT[4+StrT[3+StrT[2+StrT[1;}
Terbilang:=Huruf;
End;
Var IntAngka:LongInt;
StrTerbilang:String;
YT:Char;
Begin
YT:='Y';
Repeat
ClrScr;
Write('Masukkan Angka : ');
Readln(IntAngka);
StrTerbilang := Terbilang(IntAngka);
WriteLn('Terbilang : ',StrTerbilang);
WriteLn;
Write('Ingin Mengulang (Y/T): ');
Readln(YT);
until UpCase(YT) ='T';
End.
Untuk Bahasa Visual Basic:
Jalankan Visual Basic, pada Form1 tambahkan dua buah objek TextBox, Namai dengan txtAngka dan
txtTerbilang. Tambahkan sebuah object CommandButton, namai dengan cmdTerbilang. Tambahkan
sebuah Modul pada project Anda (dari menu Project, klik Add Module). Ketikkan kode berikut pada
Module1 (Boleh saja sich, kalau Anda malas menambahkan Module, ketik saja semua kode di Form1.)
Baris Kode
'Pada Module1
Option Explicit
Function DlmHuruf$(nHuruf&)
Select Case nHuruf
Case 1: DlmHuruf = "satu"
Case 2: DlmHuruf = "dua"
Case 3: DlmHuruf = "tiga"
Case 4: DlmHuruf = "empat"
Case 5: DlmHuruf = "lima"
Case 6: DlmHuruf = "enam"
Case 7: DlmHuruf = "tujuh"
Case 8: DlmHuruf = "delapan"
Case 9: DlmHuruf = "sembilan"
End Select
End Function
Function Terbilang$(Angka&)
On Error Resume Next
Dim Huruf$, Indeks%, Panjang%
Dim ChrS(10) As Long
Dim StrT(10) As String
Panjang = Len(CStr(Angka&))
For Indeks = 1 To Panjang
ChrS(Indeks) = Val(Mid(CStr(Angka), _
(Panjang - (Indeks - 1)), 1))
Next
If ChrS(8) = 0 Then
StrT(8) = ""
StrT(7) = DlmHuruf(ChrS(7)) & "juta "
ElseIf ChrS(8) = 1 Then
StrT(8) = ""
If ChrS(7) = 0 Then
StrT(7) = "Sepuluh juta "
ElseIf ChrS(7) = 1 Then
StrT(7) = "Sebelas juta "
Else
StrT(7) = DlmHuruf(ChrS(7)) + _
"belas juta"
End If
ElseIf ChrS(8) > 1 Then
StrT(7) = DlmHuruf(ChrS(7)) + "juta "
StrT(8) = DlmHuruf(ChrS(8)) + "puluh "
End If
If ChrS(6) = 0 Then
StrT(6) = ""
Else
If ChrS(6) <> 1 Then
StrT(6) = DlmHuruf(ChrS(6)) + "ratus "
Else
StrT(6) = "Seratus "
End If
End If
If ChrS(5) = 0 Then
StrT(5) = ""
If ChrS(4) = 1 Then
StrT(4) = "Seribu "
Else
StrT(4) = DlmHuruf(ChrS(4)) + "ribu "
End If
ElseIf ChrS(5) = 1 Then
StrT(5) = ""
If ChrS(4) = 0 Then
StrT(4) = "Sepuluh ribu "
ElseIf ChrS(4) = 1 Then
StrT(4) = "Sebelas ribu "
ElseIf ChrS(4) > 1 Then
StrT(4) = DlmHuruf(ChrS(4)) + _
"belas ribu "
End If
ElseIf ChrS(5) > 1 Then
StrT(4) = DlmHuruf(ChrS(4)) + "ribu "
StrT(5) = DlmHuruf(ChrS(5)) + "puluh "
End If
If ChrS(3) = 0 Then
StrT(3) = ""
ElseIf ChrS(3) = 1 Then
StrT(3) = "Seratus "
ElseIf ChrS(3) > 1 Then
StrT(3) = DlmHuruf(ChrS(3)) + "ratus "
End If
If ChrS(2) = 0 Then
StrT(2) = ""
StrT(1) = DlmHuruf(ChrS(1))
ElseIf ChrS(2) = 1 Then
StrT(2) = ""
If ChrS(1) = 0 Then
StrT(1) = "Sepuluh"
ElseIf ChrS(1) = 1 Then
StrT(1) = "Sebelas"
Else
StrT(1) = DlmHuruf(ChrS(1)) + "belas "
End If
ElseIf ChrS(2) > 1 Then
StrT(1) = DlmHuruf(ChrS(1))
StrT(2) = DlmHuruf(ChrS(2)) + "puluh "
End If
For Indeks = 1 To 6
If Panjang <= Indeks Then _
StrT(Indeks + 1) = ""
Next
For Indeks = 8 To 1 Step -1
Huruf = Huruf & StrT(Indeks)
Next
Terbilang = Huruf
End Function
'Pada Form1
Option Explicit
Private Sub cmdTerbilang_Click()
Me.txtHasil.Text = Terbilang(CLng(txtAngka))
End Sub
Private Sub txtAngka_Change()
txtAngka.SelStart = Len(txtAngka)
txtAngka.Text = Format(txtAngka, _
"###,###,###,###")
End Sub
Jika Anda perhatikan kedua contoh bahasa kode di atas tidak jauh berbeda. Memang. Awalnya, saya
membuat fungsi tersebut pada Visual Basic. Kemudian saya mencoba menerapkannya dalam bahasa
Pascal. Ternyata bisa saja. Asalkan kita mematuhi aturan-aturan pada tiap bahasa pemograman.
Sedikit berbeda memang, jika pada Pascal saya membuat tiga buah fungsi (IntToStr, DlmHuruf dan
Terbilang) sedangkan pada Visual Basic, saya hanya membuat dua buah fungsi (DlmHuruf dan Terbilang).
Kenapa demikan? Karena bahasa Pascal tidak menyediakan suatu fungsi untuk mengkonversi nilai variabel
Integer menjadi nilai String, dan kita harus membuatnya sendiri (pada contoh di atas: IntToStr), sedangkan
Visual Basic sudah menyediakannya, yaitu: CStr
0 komentar:
Post a Comment