CatatanLepas , oleh, wirawanBrotoyuwono, september, 2006

"Sugih tanpa bandha, nglurug tanpa bala, menang tanpa ngasorake."
Mungkin ini lebih terasa nyaman untuk didengar.
> Prakata
> ListCatatan :
>> Gatal ya Digaruk Saja
>> Dreaming Properties
>> Sisa 4. Tak Lebih.
>> Tim yang Solid
>> Pengemis-pun Kasihan
>> Gundul.Harus itu.
>> Ganti, ya jangan..
>> Serba Bodoh
> TumorOtakSaya :
>> Gejala.Awam ?!
>> Diagnosa
>> MedicalTreatment(1)
>> MedicalTreatment(2)
>> HomeCare
>> Hari ini
> BayanganLiar :
>> SteveJobs
>> Kambing Hitam
>> Copy'n'Paste
>> BIOS
>> SampahOrganik
>> Korespondensi
>> Kucing
>> MSCA
>> Lupa
>> CCTV
>> T.I.K
>> RadenGatotkaca
>> Telat Terus
>> TempatSampah
>> Proyek
>> Putar Kepala
>> AlurStudi
>> VoIP
>> Hosting
>> TelMon
>> eMail
>> ReviSet
>> PresPLO
>> Grafik(2)
>> Tidur(3)
>> Kuda
>> Lepas Tongkat
>> ssh
>> Tidur(2)
>> Nginternet
>> Bau Sate
>> MbahDukun
>> Kress Kress
>> Perangko
>> Password
>> Pakai 3
>> Robot
>> GrafikAneh
>> PendekarCapKakiTiga
>> Panjang Sebelah ?!
>> JamPulang
>> PHP ber-awk
>> Tidur
>> arsip(Lama) :
> Cerpen :
>> cerpen -- Sosok dan Mouse
>> cerpen -- Grep Rasa Durian
>> cerpen -- Lurah DHCP
>> cerpen -- Komidi 'RRD'
>> cerpen -- Desain Grafis cap ___________ Kue Lapis
> Artikel :
>> artikel -- Terbilang Perl-way
>> artikel -- BillingSystem
>> artikel -- TelkomMonitor
>> artikel -- upTimeMonitor

> Galeri :
>> MDF_(dok/WB)
>> Terbilang -- v.PHP
>> GoogleMON
.. CatatanLepas

Terbilang Perl-way
oleh : wirawanBrotoyuwono

Terinspirasi dari fungsi 'Terbilang' karya seorang MahaGuru dalam site beliau, saya menyusunnya ulang dengan logika yang (mungkin) berbeda. Ya menurut cara dan gaya 'seenak dan senyaman-nya' saya. It’s my perl-way.
Ide awal yang terbayang adalah sederet teks dalam lembar kuitansi. Tercantum kolom terbilang yang merupakan penerjemahan penyebutan angka-angka yang ada sebelumnya. Semacam penegasan tentang nilai angka dengan menjadikannya sebagai bentuk yang (-seharusnya-) lebih mudah dimengerti.

Format dan Pattern
Dalam lembar kuitansi, penulisan deretan nilai angka mengikuti sebuah pattern tertentu.

1
23
456
7 . 890
89 . 012
1 . 234 . 567
210 . 987 . 654 . 321
...
dst

Saya pandang pattern ini sebagai format default sebuah nilai angka. Saya asumsikan,
Penandaan dengan karakter '.' diberikan bila karakter angka lebih dari 3 karakter.
Penghitungan karakter dilakukan dari sebelah kanan.(-seperti aturan penulisan huruf arab-).
Secara umum tiap 'split-ing' angka dengan limiter karakter '.' tersusun dari nilai,
ratusan --- puluhan --- satuan
Pembilangan tiap kelompok “ratusan puluhan satuan” ditentukan oleh posisi karakter “.” -nya dalam suatu deretan angka. Urutan kelompok ini, (- dalam kenaikan perkalian 1000 -)
trilyun --- miliar --- juta --- ribu ---
misal ,

89123456789
==  89 . 123 . 456 . 789
==  89 miliar 123 juta 456 ribu 789

Saya anggap pertimbangan kondisi-kondisi di atas sudah cukup untuk menyusun sebuah fungsi ‘terbilang’. Lantas saya merancang kerangka besar kegiatan ke arah hasil aplikasi ‘terbilang’.

Aliran Fungsi dalam Skrip

Berikut langkah-langkahnya,
Pernyataan interpreter ke arah Perl. Ya, sesuai 'tradisi'.

#!/usr/bin/perl
Pembentukan array berisi kesesuaian pembilangan menurut index variael dalam array-nya.

@bil=qw(
nol
satu
dua
tiga
empat
lima
enam
tujuh
delapan
sembilan
);

Pengelompokan nilai satuan angka menurut posisinya.

$s=substr($angka,-1,1); $s="$bil[$s]";
$p=substr($angka,-2,1); $p="$bil[$p] puluh";
$r=substr($angka,-3,1); $r="$bil[$r] ratus";

$sb=substr($angka,-4,1); $sb="$bil[$sb] ";
$pb=substr($angka,-5,1); $pb="$bil[$pb] puluh";
$rb=substr($angka,-6,1); $rb="$bil[$rb] ratus";

dst.
Penyaringan dengan fungsi bersyarat mengenai panjang variabel angka.

if (length($angka) == 1){
	print substr($angka,-1,1);
	print "\n\n";
	$tba="$s";
	$tb="$tba";
	};
##################################
if (length($angka) == 2){
	print substr($angka,-2,1);
	print substr($angka,-1,1);
	print "\n\n";
	$tba="$p $s";
	$tb="$tba";
	};

dst.

Editing output dengan melakukan subtitusi dalam proses patten matching sebagai upaya mencapai ‘kewajaran’ pembilangan output.

$tb=~ s/satu puluh nol/sepuluh/g;
$tb=~ s/satu puluh satu/sebelas/g;
$tb=~ s/satu puluh dua/dua belas/g;
...
$tb=~ s/satu ratus/seratus/g;
$tb=~ s/nol puluh//g;
$tb=~ s/nol ratus//g;
$tb=~ s/nol//g;
$tb=~ s/ +/ /g;
$tb=~ s/juta ribu/juta/;
$tb=~ s/miliar juta/miliar/;

Perl-CGI
Untuk menggunakan skrip sebagai sebuah ‘common gateway interface’, saya hanya perlu menambahkan pernyataan pemakaian modul CGI.

use CGI qw(:all); 

print << MULAI;
Content-type:text/html


MULAI
....
isi skrip fungsi ....
print << AKHIR;
AKHIR

*****

Begitulah 'Terbilang'. Begitulah Perl-way.
Dan akhirnya begitulah gaya saya.


minomartani, maret, 2007


Referensi
Fungsi Terbilang, http://yanto.staff.ugm.ac.id
Terbilang, PerlSourceCode -- ( versiPDF )
PostingTerbaru :
>> SteveJobs , 11/10/11
>> KambingHitam , 11/08/11
>> Copy'n'Paste , 18/04/11
>> BIOS , 11/04/11
>> SampahOrganik , 29/03/11
>> Korespondensi , 28/03/11
>> Kucing , 23/03/11
>> MSCA , 21/03/11
>> Lupa ,14/03/11
>> CCTV ,10/03/11
>> T.I.K ,7/03/11
>> Gatotkaca ,7/03/11
>> Telat Terus ,28/02/11
>> TempatSampah ,24/02/11
>> Proyek ,21/02/11