Anda di halaman 1dari 4

Laporan Praktikum Hari/tanggal :Selasa,26 September 2017

Penerapan Komputer (KOM201) Dosen : Dr. Eng. Ir. Taufik


Djatna, M.Si
Asisten :
1) Dewi Usatun K (F34150001)
2) Wiwit Indriyani (F34150030)
3) Afif Widiantoro (F34150024)

FUNCTIONAL PROGRAMMING

Siti Khowiyah

F34160075

DEPARTEMEN TEKNOLOGI INDUSTRI PERTANIAN


FAKULTAS TEKNOLOGI PERTANIAN
INSTITUT PERTANIAN BOGOR
2017
FUNCTIONAL PROGRAMMING

TUJUAN

Praktikum ini bertujuan mendefinisikan dan mendeskripsikan konsep dari


functional programming, memberikan contoh kasus functional programming,
menyusun dan membuat struktur functional programming, menjelaskan kelebihan
functional programming daripada Object Oriented Programming, dan
mengimplementasikan functional programming dalam pemrograman Java pada
kalkulasi sederhana.

PEMBAHASAN

Pemrograman Fungsional yaitu program yang seluruh kodenya berupa


fungsi-fungsi. Pemrograman fungsional ini merupakan salah satu program yang
menggunakan proses komputasi sebagai evaluasi fungsi matematika. Bahasa
pemrograman yang mendukung pemrograman Fungsional adalah sebagai berikut :
Lisp, Scheme, ML, Haskell, Erlang. Paradigma pemrograman yang
memperlakukan proses komputasi sebagai evaluasi fungsi-fungsi matematika.
Pemrograman fungsional didasarkan pada premis sederhana bahwa program-
program yang dibangun menggunakan fungsi murni. Dalam pengertian yang
terbatas, pemrograman fungsional berarti pemrograman tanpa menggunakan
variabel mutable, assignment, loops, struktur kontrol imperative lainnya.
Sedangkan dalam arti yang luas, pemrograman fungsional berarti berfokus pada
fungsi. Pemrograman fungsional sangat berbeda dengan pemrograman
konvensional. Dengan mempelajari pemrograman fungsional akan meningkatkan
kualitas kode, baik dari sisi penulisan maupun perancangan. Berikut adalah fitur-
fitur dari pemrograman fungsional antara lain yaitu (Wahyuno 2014) :
1. First-Class Functions artinya fungsi bisa disimpan ke dalam suatu variabel.
2. High-Order Function artinya fungsi bisa mengembalikan fungsi atau menerima
fungsi lainnya sebagai parameter.
3. Pure Function artinya fungsi tidak mengubah nilai apapun, fungsi hanya
menerima dan mengeluarkan data.
4. Closures artinya data bisa disimpan di dalam fungsi yang hanya bisa diakses
untuk mengembalikan fungsi tertentu.
5. Immutable State artinya state yang telah diinisialisasikan tidak bisa di ubah.

Parameter behavior merupakan memparameterkan kode dengan behavior


yang dimiliki untuk menghindari adanya pengulangan nilai dalam pembuatan
fungsi baru. Behavior memparameterkan kode dan hal tersebut merupakan kunci
pembeda antara pemrograman berbasis objek dengan pemrograman fungsional.
Parameterisasi behavior dapat berperan pada pemrograman berbasis objek yang
memiliki kode yang rumit (Urma 2015). Functional programming memiliki
prinsip dasar, yaitu menggunakan immutable value. Immutable value adalah nilai
yang tidak dapat diubah setelah diinisiasi (Wampler dan Payne 2009).
Pada kasus tertentu, dibutuhkan nama fungsi sebagai parameter (artinya
domain suatu fungsi adalah fungsi), yang pada saat aplikasi baru akan ditentukan
fungsi yang mana. Dalam hal ini harus ada mekanisme yang menampung definisi
dan spesifikasi, yang asosiasinya baru ditentukan pada saat aplikasi. Ekspresi
lambda memungkinkan hal ini terjadi. Suatu fungsi dapat “di-passing” sebagai
parameter pada saat aplikasi melalui ekspresi lambda. Akibat dari aplikasi dengan
ekspresi lambda, definisi dan spesifikasi “menghilang”. Untuk itu, dalam notasi
fungsional, sebelum mendefinisikan ekspresi lambda, definisi, spesifikasi dan
realisasi fungsi dituliskan dengan nama fungsi. Baru pada tahap translasi ke
bahasa pemrograman semacam LISP, aplikasi fungsi akan langsung menggunakan
ekspresi lambda. Selain “penangguhan” fungsi pada saat eksekusi, konsep
ekspresi lambda dibutuhkan untuk mengeneralisasi fungsi.
Contohnya :
Untuk menghasilkan sebagian elemen list dari sebuah list dengan kriteria tertentu.
akan sangat praktis jika sebagai domain adalah fungsi “Filter”, yang nantinya
akan melakukan “filtering/pelolosan” elemen ke list hasil Jika kita masih belum
tahu akan menentukan maksimum atau minimum, akan sangat praktis kalau
didefinisikan suatu fungsi “Ekstrim” yang nantinya akan diaplikasi menjadi
“Maksimum” atau “Minimum” (Liem 2008).
Pemanggilan function dilakukan dengan menggunakan ekspresi yang
tersusun dari operator dan operan yang digunakan untuk menghitung nilai suatu
variabel (Watrianthos 2014). Contoh dari pemanggilan fungsi dengan ekspresi
lamda adalah penggunaan tanda (->) untuk menurukan interface drawable,
(Drawable d2=()->{ System.out.println(“Drawing”+width);}; d2.draw();} )
Kelebihan functional programming adalah memiliki fungsi yang lebih pendek,
mudah dipahami, dan mengurangi side effect, sehingga lebih aman ketika
diimplementasikan. Karena mengandung immutable data (konstan) dan lebih
mudah diperbaiki jika terdapat kesalahan (bug) (Maglie 2016).
Karakteristik dan keuntungan pemrograman fungsional sering dirangkum
sebagai berikut. Pemrograman fungsional tidak mengandung pemyataan
assignments, sehingga variabel-variabelnya, sekali diberi harga tidak akan pernah
berubah. Dengan demikian secara umum pemrograman fungsional sama-sekali
tidak mengandung side-effects. Suatu pemanggilan fungsi tidak mempunyai efek
selain penghitungan hasilnya. Hal ini mengeliminasi penyebab utama adanya bugs
dan semua hal yang membuat urutan pengeksekusian menjadi tidak relevan
karena tidak pernah ada side-effect yang dapat merubah harga dari suatu ekspresi,
sehingga dapat dievaluasi kapan saja kita mati. Hal ini membebaskan pemrogram
dari beban untuk mendefinisikan flow of control (Suyanto 2004).

SIMPULAN

Functional programming merupakan proses pemrograman menggunakan


fungsi matematika, yang menggunakan ekspresi lamda untuk mempercepat dan
mempermudah pembacaan kode. Kelebihan Functional Programming tidak
mengandung pernyataan tugas, tidak mengandung efek samping, lebih ringkas,
dan bersifat intuitif.
SARAN

Dikarenakan materi bab 3 semakin sulit dan sulit untuk dipahami apabila
tidak dijelaskan sampai mengerti ditakutkan materi selanjutnya semakin tidak
mengikuti. Diharapkan ada kelas tambahan untuk praktikum pengantar komputer
ini.

DAFTAR PUSTAKA

Liem A. 2008. Pemograman Fungsional. Bandung (ID) : Institut Teknologi


Bandung.
Maglie, Andrea. 2016. Reactive Java Programming. Venice(IT): Apress.
Suyanto. 2004. Depth First Search Antara Fungsional dan Imperatif. Sumatera
Utara (ID) : Perpustakaan digital USU. Digitized by USU digital library.
Urma R. 2015. Introducing Java 8. Amerika (US): O’Reilly.
Wahyuno T. 2014. Pemrograman Dasar. Surakarta (ID) : Universitas Sebelas
Maret Surakarta.
Wampler, Payne. 2009. Programming Scala. California(US): O’Reilly Media,
Inc.
Watrianthos, Ronal. 2014. Struktur bahasa pemrograman pascal atau bahasa c.
Jurnal Informatika AMIK-LB. 2(1):10-19.

Paraf Nilai

Anda mungkin juga menyukai