10/31/2008

Sebuah Cerita tentang perubahan

We cannot solve the problems by using the same kind of thinking we used when we created them
Albert Einstein



Banyak hal yang langsung saya pikirkan, setelah saya mendengar nasehat atau rumus dari ilmuan yang dulu menjadi orang paling hebat di jamannya.

Setelah itu, dan tidak hanya itu. Saya makin terisnpirasi oleh sebuah buku yang berjudul "Change!", yang ditulis oleh Rhenald Kasali. Menurut hasil pikiran saya, buku tersebut berisi tentang perubahan yang mesti disadari dan dilakukan, apapun itu, dalam segi kepribadian, maupun manajemen bisnis.

Salah satu artikel dari buku tersebut, menuliskan tentang sejarah seorang pemimpin dari sebuah perusahaan. Ialah Irwan Hidayat. Ia merupakan Direktur utama dari PT. Sido Muncul. Yang merupakan perusahaan warisan keluarga turun temurun.

Irwan Hidayat dan Sidomuncul

Pendidikannya hanya SMA, tetapi di tangannya Sido Muncul yang tadinya hanya usaha jamu tradisional rumahan tumbuh menjadi usaha besar, moderen, dan disamis. Intinya, ia adalah manusia pembelajar yang selalu beradaptasi dengan perubahan.

Semula saya menaruh perhatian pada produk. Saya tanya pada orang - orang apakah suka minum jamu. Mereka bilang tidak. Kenapa? Katanya rasanya pahit, bau, dan tidak enak di mulut. Saya lalu tanya sama orangtua kenapa jamu pahit. Mengapa orang hanya minum jamu kalau lagi tidak ada uang. Jawabnya antara lain adalah, memang disengaja. "Supaya Murah," katanya, "mereka memilih bahan - bahan yang murah - murah." Selain itu ketika memasaknya sering ditinggal sehingga gosong dan pahit. Dapurnya kotor, dan yang bekerja juga tidak punya tradisi bersih," katanya.

Sebagai generasi ketiga yang dipercaya untuk melanjutkan bisnis keluarga, Irwan tidak bisa dengan hanya melanjutkan begitu saja tradisi yang telah di bangun perusahaan. Situasi dan kondisi zaman yang dihadapi telah jauh berbeda, begitu pula tuntutan konsumen terhadap produk yang dihasilkan. Keadaan itu yang memacunya menjadi terobosan - terobosan baru utnuk mengangkat "gengsi" jamu agar dapat setara dengan obat, atau setidaknya menjadi pengobatan alternatif yang teruji keabhsahan dan keilmiahannya.

Maka Irwan mulai membenahi produk. Ia mulai memilih bahan - bahan yang berkualitas dan lebih bersih. Petugasnya harus bersih, pekerangannya bersih, dapurnya bersih, alatnya moderen dan bersih.

Irwan membangun sebuah laboratorium selua 3.000 meter persegi dengan biaya 2,5 miliyar rupiah, dan pabrik seluas 7 hektar. Kenekatan itu membuahkan hasil. Tahun 2000 Departemen Kesehatan memberikan sertifikat Cara Pembuatan Obat yang Baik (CPOB) kepada PT. Sidomuncul, padahal selama ini industri jamu hanya mendapatkan sertidikat Cara Pembuatan Obat Tradisional yang Baik (CPOTB). "Kini kami siap menghadapi persaingan Global," tekad Irwan.

Ia menerapkan standar tinggi, di atas CPOTB. Ini adalah standar perusahaan farmasi.


Sejak itu, perusahaannya diterima oleh pasar. Ia mengubah logo, kemasan, dan cara - cara komunikasi. Ia memakai bintang - bintang unggulan dalam beriklan seperti: Sophia Latjuba, Jeremy Thomas, Grup Band Dewa, Warna, Mayang Sari, Timbul, Inul, sampai atlet tenis Wenny Prakusha dan budayawan Setiawan Djody. Produknya dikembangkan. Produk Tolak Angin berbentuk serbuk yang pahit dikembangkan menjadi Tolak Angin Cair (dengan rasa mint dan madu) yang tidak lagi pahit, serta Tolak Angin anak - anak dan permen Tolak Angin. Produk kuku bima dikembangkan menjadi minuman energi Kuku Bima Energy. Sekarang sido Muncul mulai berevolusi, dari sekedar pembuat jamu, menjadi produsen makanan. Sido Muncul mulai membuat mi instan, kecap dan sebagainya.

Diakui, banyak kesalahan yang tidak perlu terjadi dilakukannya hanya karena ketidaktahuannya. "Saya masih banyak melakukan kesalahan yang tidak perlu. Tahun 1993 itulah saya mendapat pengajaran yang berarti, justru dari orang - orang yang tak terduga, yaitu orang gila yang dengan terus terang mengatakan jamu saya pahit, tidak enak, yang akhirnya membuat saya berfikir keras bagaimana membuat jamu yang disukai.

Biro iklan yang menolak saya mengajarkan bahwa bisnis itu harus dengan hati nurani, dan tukang bajaj mengajarkan kepada saya bahwa kita ini punya tanggung jawab sosial, beribadahlah dengan hati, bukan sekedar kewajiban," katanya.

Pelajaran - pelajaran itu yang kemudian menjadi pedoman Irwan dalam menjalankan perusahaannya. Berbisnis dengan hati nurani diwujudkannya dengan selalu membina hubungan baik dengan supplier-nya, memberikan upah yang layak kepada karyawannya, dan dalam mengambangkan networking (jaringan kerja).

Saya tidak setuju dengan upah minimum, saya lebih suka kalau kita menetapkan upah yang layak. Karena dengan upah yang layak, kita bisa meningkatkan produktivitas, dan itu akan banyak menghemat biaya, daripada kita membayar dengan upah minimum, tetapi produktivitas rendah. Dan, yang terpenting adalah kepercayaan, baik di internal maupun eksternal. Kalau itu bisa kita jaga, smuanya akan lebih mudah," katanya.


Kini, yang menjadi cita - cita Irwan adalah mengembangkan industri jamu sebagai bagian dari pembangunan sistem kesehatan nasional. Untuk itu, dia sedang merintis langkah untuk mendidik para pengobat, seperti halnya China mengembangkan pengobatan tradisionalnya dengan mendidik para shinse.

"Saya punya cita - cita ada pendidikan naturopath di indonesia (semacam pengobatan alternatif menggunakan bahan - bahan yang alami). Sebenarnya Depertemen Kesehatan bisa membantu ke arah sana, toh natoropath ini bukan hal baru, sudah diakui keberadaanya, dan kita punya potensi bagus di bidang ini."

10/30/2008

Antara keinginan dan kita

Seketika saya sedang membaca buku dan terinspirasi oleh buku itu. Terus terang, buku itu buku lama, dan dulu saya hanya membacanya sebagian saja, mungkin karena dulu daya pikir saya tidak seperti sekarang untuk menyerap isinya.

Buku lama itu bilang, "bukan keinginan yang membuat kamu berhasil, tapi apa yang kamu lakukan dengan keinginan itu, dan apa yang dihasilkan dari keinginan itu", setelah saya cerna, maksudnya adalah semua bukan tergantung keinginan kita, tapi apa yang kita lakukan untuk mewujudkannya. Tapi tetap saja, tanpa keinginan, takkan jadi bayangan untuk apa yang akan kita lakukan.

Bukan hanya itu. Penyakit terbesar manusia adalah keinginan. Berbeda dengan masalah, masalah membuat kita untuk belajar mengatasi masalah, sedangkan keinginan, membuat kita semaking menginginkan yang lain ....

Sejak kecil, saya diajarkan oleh orang tua saya, untuk hemat, dalam arti bukan berarti harus menahan - nahan diri untuk membeli sesuatu, atau berusaha menjadi orang pelit, bukan! Maksudnya hemat, adalah melakukan sesuatu yang kiranya perlu dan bermanfaat, tidak merugikan, dan tidak sia - sia.

Bahkan itu juga tercantum pada buku pelajaran Budi Pekerti saat SD, yang dulu saya bilang "ga berguna".

Ternyata. Kalau dipikir, banyak keinginan itu adalah hal yang sia - sia. Setiap ada keinginan yang saya idam idamkan, dan tak tercapai, malah membuat saya merasa sakit. Seakan tidak dapat iklhas menerima hidup. Keinginan seperti mimpi. Orang yang memiliki banyak keinginan sam saja seperti penghayal, yang berfikir bisa berupah jadi orang kuat yang bisa terbang, lalu meninju orang lain yang dia benci.

Hhhfff...
Keinginan juga berasal dari diri yang kurang bisa menerima kenyataan. Untuk itu, ada satu hal yang dapat kita pelajari dari buku budi pekerti itu. "Bersyukur". Inilah cara terampuh kita untuk mengendalikan keinginan kita. Tapi jangan lupa, tetaplah berusaha dengan maksimal, kalau kita benar - benar keinginan kita terwujud... sungguh bodoh bagi saya saat itu, yang baru megerti pelajaran budi pekerti saat SD, tapi baru menyerapnya sekarang.

Hidup bukan untuk keinginan kita sendiri....
Yang dapat hidup, adalah orang yang dapat seperti air...
Ia yang tidak memaksakan bentuknya terhadap jalannya...
Namun terus berjalan hingga mencapai tujuannya...

10/20/2008

Program terbilang (15 digit ; VB 6.0)

Artikel sebelumnya, sudah dibahas tentang pemrograman program membilang 3 digit. Dengan nilai maksimum sebesar 999. Seperti yang sebelumnya sudah dibahas, rahasia pemrograman program terbilang ini terletak pada pemisahan (pembagian) digit pada angka.

Pada program 3 digit, terdapat 3 karakter angka yang masing - masing bernilai sebagai satuan, puluhan, dan ratusan. Bila pada pemrograman lebih dari 3 digit, hanya diperlukan sedikit perulangan dari fungsi program 3 digit, karena berapa digitpun ( > 3) pastinya dibagi setiap 3 digit. Contoh : dua puluh lima ribu = 25.000 ; perhatikan tanda titik pada 25.000 dan bayangkan pada angka - angka lainnya.

Intinya, hanya diperlukan sebuah fungsi yang dapat memanggil fungsi 3 digit dan memprosesnya, kemudian ditambahkan kata seperti "ribu", "juta", "miliyar", dan "triliun" sebagai pemisah nilai.

Berikut adalah diagram fungsinya.



Ok, cukup simple bukan? sekarang hanya tinggal mengetahui bagaimana cara mengambil 3 digit yang barusan dimaksud. Huh, lagi - lagi kita akan gunakan dungsi yang sama, pengolahan string, yaitu left, right dan Len.

Untuk menemukannya, cukup rumit dan membuat saya sedikit bingung, bagaimana saya bisa tepat mengambuil per 3 digit pada angka yang tak tentu digitnya? setelah di cuba - cuba, ternyata disini rahasianya "Len ( x ) -3", hasil dari jurus rahasia ini bisa diperkirakan seperti ini, "99687" di Len menghasilkan 5, dikurang 3 menjadi 2, nah angka 2 ini yang akan mengmbil "99", dan "687" nya diproses terlebih dahulu, baru angka "99" itu di proses.

Hmmm....
saya bingung apalagi yang mesti dijelaskan, mungkin anda akan lebih dapat polanya apabila membuatnya sendiri dari awal. Kembali ke pembahasan utama, semua terletak pada pembagian dan pengolahan string.

Ini script untuk program pembilangnya (max 15 digit) :

Dim digit As String
Dim Angka(10)

Public Function hasilTerbilang(ByVal isinya As String) As String

Dim y1, y2, y3, y4, y5 As String

If (Len(isinya) > 0) Then
y1 = Right(isinya, 3)
y1 = writeBilangan(y1)

If (Len(isinya) > 3) Then
y2 = Right(Left(isinya, Len(isinya) - 3), 3)
If (y2 = 1) Then
y2 = "seribu "
Else
y2 = writeBilangan(y2) & "ribu "
End If If (Len(isinya) > 6) Then
y3 = Right(Left(isinya, Len(isinya) - 6), 3)
If (y3 = 1) Then
y3 = "sejuta "
Else
y3 = writeBilangan(y3) & "juta "
End If If (Len(isinya) > 9) Then
y4 = Right(Left(isinya, Len(isinya) - 9), 3)
y4 = writeBilangan(y4) & "miliyar "


If (Len(isinya) > 12) Then
y5 = Right(Left(isinya, Len(isinya) - 12), 3)
y5 = writeBilangan(y5) & "triliyun "
End If
End If
End If
End If

hasilTerbilang = y5 & y4 & y3 & y2 & y1

ElseIf (isinya = 0) Then
hasilTerbilang = "nol"
End If

End Function



Public Function writeBilangan(ByVal nilai As String) As String

Angka(1) = "satu"
Angka(2) = "dua"
Angka(3) = "tiga"
Angka(4) = "empat"
Angka(5) = "lima"
Angka(6) = "enam"
Angka(7) = "tujuh"
Angka(8) = "delapan"
Angka(9) = "sembilan"

If nilai <> 0 Then
nilai = Trim(nilai)
writeBilangan = procRatusan(Abs(nilai)) & procPuluhan(Abs(nilai)) & procSatuan(Abs(nilai))
Else
writeBilangan = "nol"
End If
End Function




Private Function procSatuan(ByVal x1 As String) As String
If (Left(Right(x1, 2), 1) <> Null) Then
procSatuan = ""
ElseIf (Len(x1) > 1 And Left(Right(x1, 2), 1) = 1) Then
procSatuan = ""
Else
procSatuan = Angka(Right(x1, 1))
End If

End Function



Private Function procPuluhan(ByVal x2 As String) As String
Dim r2, s2 As String
r2 = Left(Right(x2, 2), 1)
s2 = Right(x2, 1)

If (Len(x2) > 1) Then
If (r2 = 1 And s2 = 0) Then
procPuluhan = "sepuluh "
ElseIf (r2 = 1 And s2 = 1) Then
procPuluhan = "sebelas "
ElseIf (r2 = 1 And s2 > 1) Then
procPuluhan = Angka(s2) & " belas "
ElseIf (r2 > 0) Then
procPuluhan = Angka(r2) & " puluh "
End If
End If
End Function



Private Function procRatusan(ByVal x3 As String) As String
If (Len(x3) > 2) Then
If (Left(Right(x3, 3), 1) = 1) Then
procRatusan = "seratus "
Else
procRatusan = Angka(Left(Right(x3, 3), 1)) & " ratus "
End If
End If
End Function
Apabila sebelumnya anda membaca tentang pembilang 3 digit, disini anda akan menemukan sedikit perubahan pada bagian deklarasi fungsi, bagian public pada fungsi "writeBilangan" diganti menjadi private. Pada script sebelumnya, tidak ada perubahan, hanya kode pemrograman yang 3 digit, dijalankan berulang - ulang, dan perulangan ini membuat fungsi baru bernama "hasilTerbilang" yang menghasilkan pembilang dari angka 15 digit. Dan ingat, masih banyak kode pemrograman yang lebih indah logikanya dari pemrograman ini.

10/17/2008

Aku

Anggap lah aku sebagai angin
Yang membawa udara segar untukmu
Untuk waktu yang singkat
Sebentar saja … hingga kau mudah melupanya


Pernahkah kau membayangkan
Aku adalah air
Yang memberimu kesejukan
Meski kau tak bisa menggenggamku


Aku kan terus bermimpi
Hingga aku dapat mencapainya
Tidak sebagai angin atau air
Tapi sebagai aku yang kini ada


Aku kan terus berjuang
Untuk terus dapat berarti
Tidak sebagai angin atau air
Tapi sebagai aku yang akan membuktikannya.

10/17/2008

Program Pembalik kata....

Tidak lama setelah liburan sekolah usai, beberapa kelas yang telah mengumpul tugas komputer mulai mempelajari bab - bab baru, namun ternyata ada beberapa kelas yang ternyata belum kebagian mendapat tugas komputer... Berbeda dengan kelas IPA 1 , dan IPA 2... Kelas itu mendapat tugas untuk membuat program membilang, namun, kelas lainnya mendapat tugas lainya....

Tanggal 15 kemarin, yaitu hari rabu... Saya sempat kerumah teman saya, Yessi, dan sekalian ia minta dijelaskan sedikit tentang Visual Basic.. Namun saya kira ia minta dijelaskan tentang Program Pembalik kata, karena beberapa anak waktu pulang sekolah menanyakannya, namun ternyata hanya menanyakan beberapa fungsi dari Visual Basic untuk ulangan besok... Duh, maaf yah yessi, kamu ga ngomong dulu sih...

Dan sebenarnya saya ingin nge-post Topic ini saat pulang dari rumah teman saya, namun sayang, guru saya melarang saya untuk melakukannya, dimarahin, karena waktu tugas Program pembilang saya sudah mem post nya ke blog ini sebelum dikumpulkan,,,, hehehhe....

...
OK, kita langsung saja ke VB nya....
Sebenarnya, untuk membalik kata (String) hanya cukup fungsi StrReverse dalam visual Basic.. Sebenarnya cukup sederhana untuk mengerjakan tugas ini. Tapi, mungkin saja bukan string yang telah terbalik, tapi tujuan utamanya adalah logika dari terbaliknya string...

Fungsi StrReverse

StrReverse(Expression As String) As string

Contoh penggunaan :

StrReverse("Bubur manado") akan menghasilkan "odanam rubuB"

Kalau anda ingin menemukan fungsi - fungsi lainnya, Anda cukup membuka "Object Explorer" (f2) yang dapat anda akses dari menu "View > Object Explorer"...



Ok kita akan bermain dengan logika pemrogramannya....

Sebagai contoh, kita akan menggunakan kata "Bubur manado" sebagai string yang akan kita balik. Mengapa Bubur manado? Script untuk membalik kata ini sudah 2 kali ditulis, tapi script yang paling sempurna terbuat saat teman saya, Yessi, menawarkan bubur manado untuk makan siang.... Karena itu, saya coba menggunakan string "bubur manado" sebagai contoh. Thanks yah, tapi ku ga bisa makan bubur, hehehe.... maaf....



...
So pasti, yang pertama kita perlukan, adalah pendeklarasian Variabel.. yang pasti string untuk bubur manado... Jadi kita buat "Function" nya yang akan menghasilkan nilai berupa string..
Public Function rev_kata(ByVal x As String) As String
---- siapkan spasi untuk kode selanjutnya ----

End Function
Banyak yang bertanya, apa maksud dari kode diatas,... kode diatas gunanya untuk membuat suatu fungsi yang bernama "rev_kata"... dan yang di dalam kurung bertuliskan "ByVal x As String" menandakan bahwa fungsi "rev_kata" berfungsi dengan sebuah nilai yang diberi dan diberi variabel x yang bertipe data stirng. dan deretan kode yang paling akhir (As String) berarti, fungsi "rev_kata" akan menghasilkan nilai yang bertipe data string...

Misal ada fungsi sebagai berikut..

----
Public Function makan_apa(ByVal n as string) as string
makan_apa = n & " Rp. 500"

End Function
----

apabila saya memanggil fungsi itu dengan sebuah kode:

makan apa("Kerupuk")


maka fungsi "makan_apa" akan menghasilkan "kerupuk Rp. 500", disini kita lihat, bahwa "n" diisikan nilai (Value) = kerupuk, dan diproses di tubuh fungsi menjadi "kerupuk" & " Rp. 500", menjadi "kerupuk Rp. 500"
Mari kita langsung bermain dengan logika pemrogramannya..

Apabila string "Bubur manado" kita balik, akan menghasilkan "odanam rubuB"... Disini kita temukan logikanya.. Pertama kita ambil huruf yang paling uncit ("o") setelah itu kita taruh di sebelah paling kiri. Selanjutnya, ambil huruf "d" dimana huruf itu terletek satu langkah setelah huruf yang teruncit. Sekarang kita mempunyai huruf "o" dan "d" yang kini telah digabungkan menjadi "od"... Begitu seterusnya, perulangan terjadi terus menerus hingga kata "Bubur manado" menjadi "odanam rubuB", Artinya, mesti dilakukan berulang-ulang untuk mengambil huruf yang letaknya di kanan, disusun terbalik ke kiri sebanyak 12 kali (12 adalah banyak digit huruf "Bubur manado").

Jurus VisualBasic nya, kita butuh 3 fungsi pada pengolahan string, yaitu Left, Right, dan Len...

Len : mengambil banyaknya character (hasil dlm bentuk angka)
Len ([expression/string dlm variabel])

Right : mengambil beberapa char dlm string, dimulai dari kanan.
Right (string, lenght As long/banyaknya yang diambil)

Left : mengambil beberapa char dlm string, dimulai dari kiri.
Left (string, lenght As long/banyaknya yang diambil)

Contoh penggunaan :

Len ("makanNasi") menghasilkan "9"

Right ("makanNasi", 4) menghasilkan "Nasi"

Left ("makanNasi", 4) menghasilkan "maka"

Ini dia, Penggunaan Fungsi - fungsi untuk mengolah string...
Misal kita umpamakan x = "Bubur Manado"

untuk mengambil "o" : Right( x , 1)
untuk mengambil "d" : Left( Right( x , 2) , 1)
untuk mengambil "a" : Left( Right( x , 3) , 1)
untuk mengambil "n" : Left( Right( x , 4) , 1)

Agar dapat dilakukan perulangan tanpa perubahan script, untuk mengambil huruf "o" : Right( x , 1) dapat diubah menjadi Left( Right( x , 1) , 1)...

Sehingga kita dapatkan rumus : Left( Right( x , n) , 1)

dimana n adalah langkah ke-berapa dimana n = 1 hingga 12 (sesuai dengan jumlah digit dari "Bubur Manado")
Nah kita sudah mendapatkan Rumus untuk membalik kata tersebut.... Namun, tidak mungkin kita menulis kode tersebut berulang - ulang, ini mengakibatkan jumlah digit mesti ditentukan dari awal, dan tidak dapat bervariasi....

Untuk itu, kita memerlukan fungsi perulangan sesuai dengan variabel dari jumlah digit dari kata yang kita masukan. dengan menggunakan "For.. Next" kita akan dapat mengulang script menjadi berkali - kali sesuai dengan banyaknya digit yang ada pada string.

Ini dia script lengkapnya, copy dan paste tidak dilarang...

Public Function rev_kata(ByVal x As String) As String
Dim n, p As Integer
Dim kata As String

p = Len(x)

For n = 1 To p
kata = kata & Left(Right(x, n), 1)
Next n

rev_kata = kata
End Function

Maksudnya :

n adalah variabel yang menyatakan langkah, dimana batas langkah ini sampai dengan jumlah digit string yang diolah (p)...

Lalu, terus diulang langkah "kata = kata & Left(Right(x, n), 1)" hingga n = 12 (hingga n mencapai / sama dengan p yang bernilai 12, nilai n dimulai dari 1, terus hingga langkah ke 12).
Namun, tetap saja cara ini bukan cara yang mutlak dipakai semua programmer, masih banyak cara lain yang lebih sempurna dibandingkan cara ini....

Saya pernah lihat judul lagu terbitan orang luar, judulnya "32 ways to DIE", dari situ saja, kita sudah dapat menyimpulkan, mati saja ada banyak cara, masa pemrograman tidak??

Salah satu cara yang juga bagus, adalah dengan menggunakan Mid... thanks to Oey Irwan....
Mid ( x , n , 1)

dimana n adalah langkah ke- berapa dimana huruf mulai akan diambil
Ok, mungkin sekian saja untuk menjelaskannya, yang jelas, mengcopy saja tidak akan menambah ilmu anda dalam segala hal...., maksud saya, dalam hal programming... hehehe...