If412 04
Upcoming SlideShare
Loading in...5
×
 

If412 04

on

  • 459 views

 

Statistics

Views

Total Views
459
Views on SlideShare
459
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    If412 04 If412 04 Document Transcript

    • IF412 – Konsep Bahasa Pemrograman Pertemuan : 04 FUNCTIONAL PROGRAMMING Fortran Lisp Algol 60 CPL BCPL ISWIM Algol 68 Simula 67 Pascal C Prolog Mesa Concurrent Scheme Pascal Modula-2 ML Distributed CSP Processes Smalltalk-80 Ada C++ Standard ML Oberon Karakteristik dari functional programming murni (pure functional programming) : 1. 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 2. Implicit storage management • built-in operation on data storage allocation • automatic deallocation • garbage collection 3. 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 4. Menggunakan Interpreter bukan compiler 5. Untyped, berbeda dengan imperative programming yang strongly typed. KERUGIAN • Terlalu banyak simbol ( ) • Lambat untuk perhitungan numerik • Tidak mempunyai tipe (type) KEUNTUNGAN • Baik untuk symbolic processing (Artificial Intelligence) BINA NUSANTARA Edisi : 1 Revisi : 1 Sept - 1998
    • IF412 – Konsep Bahasa Pemrograman Pertemuan : 04 • Contoh Pemrograman Fungsional : LISP (List Programming) 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 *) • (define f ’*) • Huruf besar dan kecil dianggap sama Contoh : pi = PI = Pi = pI • Definisi Function o Sintaks : (define ( < function_name > < formal_parameter> ) < ekspresi >) • Lambda Notation o Sintaks : (lambda (<formal_parameter>) < ekspresi>) • Conditional : o True o False o Predicate : Ekspresi yang akan menghasilkan true dan false bila dievaluasi. o Pada Schema predicate diakhiri dengan ? contoh : w number? w symbol? w equal? o Conditional Expression 1. (if P E1 E2) ⇒ artinya : if P then E1 else E2 2. (cond (P1 E1) ⇒ artinya : if P1 then E2 . . . . (Pk Ek) else if Pk then Ek (else Ek+1)) else Ek+1 o Contoh fungsi factorial : (define (fact n) ((if (= n 0) 1) BINA NUSANTARA Edisi : 1 Revisi : 1 Sept - 1998
    • IF412 – Konsep Bahasa Pemrograman Pertemuan : 04 ( * n (fact (- n 1) )))) o Let Construct w Sintaks : (let ((X1 E1) (X2 E2) ........ (Xk Ek)) F ) Nilai ditentukan dengan urutan sbb: o Ekspresi E1, E2 ,..., Ek dievaluasi o kemudian F dievaluasi o hasilnya harga F Contoh : (let ((three-sq (square 3)) (four-sq (square 4))) (+ three-sq four-sq)) ⇒ hasil 25 (+ (square 3) (square 4)) ⇒ hasil 25 (let ((three-sq (square 3))) (+ three-sq three-sq)) ⇒ hasil 18 w let* : bind Xi ke harga Ei sebelum Ei+1 dievaluasi. Sintaks : (let* ((X1 E1) (X2 E2) ........ (Xk Ek)) F ) Contoh: bandingkan let dan let* di bawah ini ! (define x 0) (let ((x 2) (y x)) y) ⇒ hasil 0 (let*((x 2) (y x)) y) ⇒ hasil 2 BINA NUSANTARA Edisi : 1 Revisi : 1 Sept - 1998