Anda di halaman 1dari 20

Pemrograman

Fungsional
Fera Putri Ayu Lestari, S.Kom, MT.
UMM © 2021
Materi Pertemuan 3

Function Iterator Generator


Pure func __iter__() next()
First class func __init__() yield
Higher order func next()
Lambda expression Iterasi/looping
Fungsi
Pure func
First class func
Higher order func
Lambda expression
Function

Focus pada:
 Input
 Transformasi input (mengubah data inputan menggunakan komputasi)
 output
Fungsional vs Prosedural
 Fungsi-fungsi pendek  Fungsi berisi prosedur yang
 Fungsi berupa komputasi umumnya banyak dan panjang

def increment(a): a=0 Not


functional
return a + 1 def increment():
global a
a += 1
Karakteristik pemrograman fungsional


The absence of side effects

Pure function ”
tidak bergantung pada data yang diluar fungsi
&
tidak merubah data yang ada di luar fungsi

[ immutability ]
Karakteristik pemrograman fungsional
 Bahasa pemrograman fungsional pandai mengekspresikan ide-ide kompleks
dengan cara yang ringkas dan deklaratif.
 Konsep fungsional seperti "immutability“ dan "function values"
mempermudah penalaran tentang kode—serta membantu konkurensi
Using expressions instead of statements
 pemrograman fungsional tidak melakukan iterasi dalam struktur data seperti
list, stack dan lain-lain.
 Untuk melakukan iterasi terhadap data, teknik yang digunakan biasanya dengan
fungsi map() dan reduce().
Implementasi pemrograman fungsional
 Untuk melakukan implementasi pemrograman fungsional, kita bisa
menggunakan berbagai bahasa pemrograman yang mendukung fungsi first-
class.

 Pemrograman fungsional juga membawa gaya baru dalam menulis kode


sehingga bisa lebih menghemat baris kode.
Iterator &
Generator
Iterator dan Generator
 iterator adalah konsep yang lebih umum: objek apa pun yang kelasnya memiliki
fungsi next (__next__ dalam Python 3), fungsi __iter__ yang menghasilkan return
self, dan fungsi __init__.
Setiap generator adalah iterator, tetapi tidak sebaliknya.
 Secara khusus, generator adalah subtipe dari iterator.
 Generator dibuat dengan memanggil fungsi yang memiliki satu atau lebih ekspresi
yield, dan merupakan objek yang memenuhi definisi iterator (seperti pada poin
pertama).
Generator vs Iterator

Jika dibuat sebagai iterator


khusus
Kelebihan iterator khusus
 Memudahkan menambahkan fungsi extra saat diperlukan
 Contoh:

 Jika memang benar-benar dibutuhkan fungsionalitas extra dalam program


Iterator
Iterator dan iterasi(loop)

Iterator adalah objek


yang menggunakan
metode next() untuk
mendapatkan nilai
urutan berikutnya.
Generator
 Generator adalah merupakan Iterator
 Kita dapat membuat generator dengan beberapa cara.
 Cara yang sangat umum dan sederhana adalah dengan suatu fungsi.
 Secara khusus, fungsi dengan hasil di dalamnya adalah fungsi, yang ketika
dipanggil, mengembalikan generator:
Contoh Generator
Yield and Return
 Generator adalah fungsi biasa yang didefinisikan menggunakan yield alih-alih
return (yang biasa digunakan pada fungsi umum).
 Ketika dipanggil, fungsi generator mengembalikan objek generator,
 yang mana merupakan turunan dari iterator - memiliki metode next().
 Setiap kali next () dipanggil, generator melanjutkan di tempat yang
ditinggalkannya (yield mengingat semua nilai data dan pernyataan mana
yang terakhir dieksekusi)
 Return akan mengembalikan nilai dan melupakan segala isi dari fungsi
Discussion
 Beda fungsional dengan prosedural
 Beda expression dengan statement
 Kapan menggunakan OOP atau FunPro [10]
 Beda iterator dengan generator
 Beda generator dengan fungsi biasa
 Apa itu generator
Discussion Point
@5

Anda mungkin juga menyukai