Pemrograman Fungsional & Notasi Fungsional

Pemrograman fungsional didasari oleh konsep pemetaan dan fungsi pada matematika. Pemrograman fungsional menggunakan fungsi-fungsi sebagai dasar dari pemecahan masalah. Bahasa pemrograman yang memakai bahasa fungsional salah satunya adalah LISP yang dirancang oleh John McCarty pada tahun 1956 – 1958 dan mulai diimplementasikan pada tahun 1959. Dari sinilah pemrograman bahasa fungsional berkembang. LISP mempengaruhi beberapa bahasa pemrograman lainnya. Salah satunya adalah Logo, bahasa fungsional yang ditujukan untuk mengajarkan matematika secara mudah. Ada juga FORTH, bahasa fungsional yang ditujukan untuk aplikasi sains dan teknologi yang berkecepatan tinggi dan mempunyai ukuran program yang relatif kecil. Lalu ALGOL60 yang sebenarnya adalah bahasa prosedural tapi dapat menggunakan proses rekursif.

Sebenarnya dengan membiasakan diri menggunakan pemrograman fungsional, secara tidak langsung kita juga dapat mengasah cara kita berpikir secara logika dalam memecahkan masalah karena pemrograman fungsional tidak terikat pada bahasa pemrograman apapun seperti pada pemrograman prosedural. Akan tetapi, waktu pengerjaan menjadi lebih lama dan tidak efisien karena kita harus berpikir bagaimana caranya komputer dapat menjalankan program yang kita buat tanpa bahasa yang diketahui komputer. Salah satu contohnya adalah loop (perulangan). Pemrograman prosedural yang bergantung pada bahasa pemrograman pasti tahu apa itu loop, akan tetapi pemrograman fungsional tidak mengerti apa itu loop.Jadi kita memakai rekursif / rekurens sebagai pengganti loop. Sebagai contoh:

fac(n) : if n = 0 then 1
else n * fac (n-1)

Fac adalah nama fungsinya dan n adalah parameter / inputannya. n = 0 sebagai basisnya atau batasannya, jadi bila n bernilai 0 maka hasilnya 1 dan program akan berhenti. Bila kita menuliskan (fac 3) dalam program yang menggunaka bahasa fungsional maka hasilnya 6. Didapat dari 3! = 3 x 2 x 1 = 6. Proses program diatas bekerja adalah sebagai berikut:
fac(3) = 3 * fac(2)
fac(2) = 2 * fac(1)
fac(1) = 1 * fac(0)
fac(0) = 1
Dan outputnya adalah 6.

Penulisan pemrograman fungsional menggunakan notasi fungsional. Seperti halnya algoritma, sebelum membuat program kita membuat semacam catatan yang kemudian diterjemahkan dalam bahasa pemrograman. Bila dalam pemrograman fungsional, kita menulisnya dengan notasi fungsional. Sebagai contoh:

Judul
FX2(x)
Definisi dan Spesifikasi
FX2(x) : integer -> integer
{FX2(x) menghitung pangkat dua dari sebuah bilangan integer.}
Realisasi
FX2(x) : x * x
Aplikasi
(FX2 3)

Tulisan berwarna merah di atas adalah contoh notasi fungsional. Ada 4 bagian dalam notasi fungsional, yaitu: Judul, Definisi dan Spesifikasi, Realisasi, dan Aplikasi.

Pada bagian judul biasa dituliskan nama fungsinya dilanjutkan dengan inputannya / parameter. Dalam contoh di atas, nama fungsinya adalah FX2 dan parameternya adalah x, yang berarti hanya 1 inputan saja.
Pada bagian Definisi dan Spesifikasi dituliskan penjelasan dari fungsi tersebut serta tipe data domain (parameter /input) dan range (output). Dalam contoh di atas, tipe data input adalah integer dan outputnya juga integer. Lalu text dalam { } sebagai penjelasan dari fungsi FX2.
Pada bagian Realisasi, kita menuliskan isi dari fungsi tersebut. Dalam contoh di atas, FX2 adalah fungsi untuk menghitung pangkat dua dari sebuah integer, maka isinya tentu saja x * x.
Pada bagian aplikasi, kita menuliskan penggunaan fungsi dalam program. Perlu diperhatikan bahwa nama fungsi dan parameter harus sesuai dengan yang tertera di notasi. Dalam contoh di atas, 3 sebagai ganti dari x maka hasil yang muncul adalah 9 karena 3 * 3 = 9. Bila ditulis (FX2 ) akan muncul pesan error karena kita belum menuliskan parameternya. Demikian juga halnya dengan (FX2 1 2) error karena parameter seharusnya hanya 1 saja tapi kita menginputkan 2 parameter.

Demikian sekilas artikel tentang pemrograman fungsional dan notasi fungsional. Anda dapat mulai berlatih menggunakan pemrograman fungsional ini. Bahkan banyak programmer juga menggunakan bahasa fungsional agar pekerjaannya tidak mudah ditiru oleh programmer lainnya.

sumber amaziabernikeatmadja.blogspot.com

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s