Functional Programming C++

4
Functional Programming (LISP) Modul : Struktur 1. Mengenal Functional Programming Program yang strukturnya serba fungsi, artinya setiap persoalan diselesaikan dengan menggunakan fungsi. Mulai dikembangkan tahun 1960an, dimotivasi oleh peneliti bidang artificial intelligence, symbolic computation, theorem proving, rule-based system, dan NLP. Bahasa fungsional pertama adalah Lisp (McCarthy, 1960). Memodelkan masalah komputasi sebagai suatu fungsi matematika, yang mempunyai input (domain) dan hasil atau output (range) 2. Karakteristik dari functional programming murni (pure functional programming) : Nilai dari suatu ekspresi hanya tergantung pada nilai- nilai dari sub-sub ekspresinya (sangat rekursif) Tidak ada efek samping di dalam ekspresi Programming tanpa assignment Implicit storage management

description

berisi fungsi fungsi C++

Transcript of Functional Programming C++

Page 1: Functional Programming  C++

Functional Programming (LISP)

Modul : Struktur

1. Mengenal Functional Programming

Program yang strukturnya serba fungsi, artinya setiap persoalan diselesaikan dengan

menggunakan fungsi.

Mulai dikembangkan tahun 1960an, dimotivasi oleh peneliti bidang artificial

intelligence, symbolic computation, theorem proving, rule-based system, dan NLP.

Bahasa fungsional pertama adalah Lisp (McCarthy, 1960).

Memodelkan masalah komputasi sebagai suatu fungsi matematika, yang mempunyai

input (domain) dan hasil atau output (range)

2. Karakteristik dari functional programming murni (pure functional programming) :

Nilai dari suatu ekspresi hanya tergantung pada nilai-nilai dari sub-sub ekspresinya

(sangat rekursif)

Tidak ada efek samping di dalam ekspresi

Programming tanpa assignment

Implicit storage management

built-in operation on data storage allocation

automatic deallocation

garbage collection

Function are first class citizens

fungsi dapat merupakan nilai dari suatu ekspresi

fungsi dapat di-pass sebagai sebuah argument

fungsi dapat dipakai dalam struktur data

Page 2: Functional Programming  C++

Menggunakan Interpreter bukan compiler

Untyped, berbeda dengan imperative programming yang strongly typed.

3. KERUGIAN

Terlalu banyak simbol ()

Lambat untuk perhitungan numerik

Tidak mempunyai tipe (type)

4. KEUNTUNGAN

Baik untuk symbolic processing (Artificial Intelligence)

Contoh Pemrograman Fungsional: LISP (List Programming)

5. KOMPONEN-KOMPONEN UTAMA SCHEMA

Schema : inti dari Lisp

Lisp menggunakan Prefix Notation.

Ekspresi dalam Lisp (Schema) secara umum ditulis :

> ( E1 E2 .....E3) => call by value

Quote digunakan untuk membuat ekspresi sebagai data/simbol.

Sintaks :

( quote <item>) atau ‘<item>

Contoh:

(define pi 3.14159)

( quote pi)

(define f *) fungsi f, penggunaannya (f 2 3) 6

(define f '*) f sebagai simbol, beda dengan f di atas

Huruf besar dan kecil dianggap sama Contoh : pi= PI = Pi= pi

Operator yang digunakan dalam LISP

Page 3: Functional Programming  C++

Operator Aritmatika (+, -, *, / , mod, expt) Operator Rasional (=, /=, <, >, <=, >=) Operator Boolean (true, false)

6. LATIHAN

Ubahlah notasi infix berikut kedalam notasi prefix (LISP).

(1 + 2) > (8 - 3)

Penyelesaian

( > (+1 2) (- 8 3) )

7. TUGAS

Ubahlah notasi infix berikut kedalam notasi prefix (LISP).

a. 2 * (3 + 1) - 2

b. 1 * 2 + 10 – 60 / 5

c. ((2 + 2) < 3) and (~(8 > 9) or (2 <= 6))