b5 fungsian

18
1 Bab 5 Spesifikasi Pengaturcaraan Fungsian

Upload: madzani-nusa

Post on 06-Jul-2015

977 views

Category:

Economy & Finance


3 download

TRANSCRIPT

Page 1: B5 Fungsian

1

Bab 5

Spesifikasi Pengaturcaraan Fungsian

Page 2: B5 Fungsian

2

Spesifikasi Pengaturcaraan Fungsian Pengaturcaraan fungsian popular dalam implementasi

kecerdasan buatan, pembuktian matematik, logik dan aplikasi pemperosesan selari

Kelebihan pengaturcaraan fungsian berbanding pengaturcaraan imperatif: Penggunaan konsep fungsi untuk menggambarkan aturcara dan data

Kesan sampingan (sede effects) yang terhad

Pengurusan dan penggunaan ingatan secara automatik

Kelemahan utama pengaturcaran fungsian; perlaksanaannya yang tidak efisen kerana ia direkabentuk untuk diterjemah, dan bukan dikompil

Page 3: B5 Fungsian

3

Spesifikasi Pengaturcaraan Fungsian Pengaturcaraan fungsian mempunyai sifat-sifat berikut:

Lazy function evaluation – mekanisma yang mengurangkan proses penilaian fungsi yang tidak penting. Ini dilakukan menggunakan strategi berikut:

Menangguhkan penilaian suatu fungsi sehingga diperlukan

Mengurangkan penilaian semula fungsi yang sama lebih dari sekali

First-class objects – fungsi-fungsi dianggap sama seperti objek-objek lain suatu fungsi boleh menjadi argumen kepada suatu fungsi lain atau sebagai nilai bagi suatu pembolehubah

Kesemua aturcara dan prosedur adalah fungsi

Kurang penggunaan gelung dan iteratif -gelung diganti dengan panggilan rekursif

Page 4: B5 Fungsian

4

Spesifikasi Pengaturcaraan Fungsian Kurang penggunaan pembolehubah dan umpukan – pembolehubah

hanya digunakan sebagai nama bagi suatu nilai, dan umpukan sebagai operasi dalam pengaturcaraan fungsian yang tulin, tiada pemolehubah, hanya pemalar, parameter, dan nilai

Referencial transparency – nilai suatu fungsi haya bergantug kepada nilai parameter, bukan pengiraan sebelumnya, jujukan langkah penilaian, atau langkah perlaksanaan yang membawa keapda panggilan fungsi

Persekitaran ingatan dinamik – allocation dan deallocation ingatan berlaku semasa perlaksanaan aturcara pengurursan ingatan secara automatik yang boleh dikelaskan kepada dua kategori:

Maintaining free space

Reclaimation of storage

Page 5: B5 Fungsian

5

Spesifikasi Pengaturcaraan Fungsian Garbage collection – juga dipanggil ‘reclaimation of storage’

suatu proses yng menjejak storan yang tidak dapat dicapai dan membenarkannya untuk di’allocate’ semula. Garbage collector dipanggil secara automatik apabila tiada lagi ruang kosong dalam storan

Bebas dari kesan sampingan – keupayaan untuk memanggil fungsi tanpa menghasilkan ‘kesan sampingan’, iaitu tanpa menukar keadaan dalaman suatu pengiraan. Ini adalaha kerana pengiraan dilakukan dengan proses penilaian ungkapan, bukan dengan pengumpukan nilai kepada suatu pembolehubah

Page 6: B5 Fungsian

6

Spesifikasi Pengaturcaraan Fungsian Kebanyakan bahasa pengaturcaraan fungsian masih menggunakan

pembolehubah dan proses umpukan menjadikan bahasa tersebut

bukan bahasa fungsian yang tulin

Secara amnya, kesemua bahasa pengaturcaraan boleh dianggap sebagai

variasi sintaks kalkulus lambda

Operasi utama dalam bahasa fungsian adalah penciptaan fungsi – yang

sebenarnya adalah pengabstarakan lambda dan aplikasi dua operasi

asas kalkulus lambda

Matlamat utama suatu ungkapan lambda dimanipulasi adalah untuk

menukarkannya ke dalam bentuk yang lebih mudah (reduction)

bentuk ini dianggap sebagai nilai suatu ungkapan

Page 7: B5 Fungsian

7

5.1. Kalkulus Lambda Suatu kaedah matematik untuk mengungkapkan pengiraan

menggunakan fungsi konsep asas dalam pengaturcaraan fungsian

Lambda adalah mirip kepada ungkapan universal yang bermaksud

‘untuk semua’

Bentuk umum ungkapan lambda, yang dikenali sebagai fungsi lambda

ialah:

id1, id2, . . . , idn . ungkapan

Contohnya:

x . x * x

Ungkapan lambda ini boleh diaplikasi seperti berikut:

{x. x * x } (2)

yang mana hasil ungkapan ini boleh diperolehi dengan menggantikan

parameter dengan nilai 2 , maka nilai adalah 4

Page 8: B5 Fungsian

8

5.1. Kalkulus Lambda Secara umum, ungkapan lambda boleh wujud dalam

bentuk berikut: Suatu pencam atau atom, yang mana atom mewakili

pemalar atau fungsi Suatu peniskalaan (abstraction), yang mewakili suatu

fungsi dengan argumen tunggal seperti x. ungkapan yang mana x adalah pencam dan ungkapan adalah ungkapan

lambda Suatu aplikasi, yang mewakili lebih dari satu ungkapan,

seperti x. ungkapan1 ungkapan2,

yang mana x adalah pencam, dan ungkapan1 dan ungkapan2 adalah ungkapan lambda

Page 9: B5 Fungsian

9

5.1. Kalkulus Lambda

Contoh fungsi lambda: {n. m. n2 + m} (3,4) = {m. 32 + m}(4) = 32 + 4 = 13 {m. n. n2 + m} (3,4) = {n. n2 + 3}(4) = 42 + 3 = 19 {{{a, b. a + b}3}4} = {b. 3 + b} 4 = 3 + 4 = 7 {x. y. yx}(a, b) = {y. ya}(b) = ba

Page 10: B5 Fungsian

10

5.2. Pembentukan ungkapan lambda yang lebih mudah (Reduction)

Terdapat 4 petua untuk manipulasi nilai, pembolehubah, dan fungsi dalam ungkapan lambda Alpha-conversion – merujuk kepada penukaran nama

dalam ungkapan lambda :

x. ungkapan y. ungkapan[x y]

yang mana y tidak wujud pada asalnya dalam ungkapan tersebut.

Contoh:

{w. (y. yx) w} x. (y. yz) x

Page 11: B5 Fungsian

11

5.2. Pembentukan ungkapan lambda yang lebih mudah (Reduction)

Beta-conversion – merujuk kepada penukaran dan peniskalan beta

x. ungkapan1 ungkapan2 b ungkapan1[x ungkapan2]

Contoh:

{x. x + 1} 5 (5 + 1) = 6

Eta-conversion – merujuk kepada penghapusan peniskalaan lambda yang redundan

{x. ungkapan} x ungkapan

Contoh:

{x. (sqr 5)} (x) (sqr 5) = 25

Page 12: B5 Fungsian

12

5.2. Pembentukan ungkapan lambda yang lebih mudah (Reduction)

Gamma-conversion – dikaitkan dengan nilai dan fungsi yang telah ditakrifkan sebelumnya

{function x y} function(x, y)

Contoh;

(add 5 3) add(5, 3) = 8

Page 13: B5 Fungsian

13

5.3. Program-forming Operations

Terdapat beberapa operasi pembentukan-aturcara yang menjadi asas operasi dalam pengaturcaraan fungsian Gabungan (composition) Pembinaan (construction) Selit (selit) Apply to all Condition

Page 14: B5 Fungsian

14

5.3.1. Gabunagn

Gabungan, yang menggunakan simbol o mempunyai sintaks seperti berikut:

(f o g) : X = f : (g : X)

Contoh:f(x) = x + 5 dan g(x) = x + 4

Maka satu bentuk fungsi komposisi f dan g boleh diperolehi:h(x) = f(g(x)) atau

h(x) = (x + 4) + 5 = x + 9

Page 15: B5 Fungsian

15

5.3.2. Pembinaan

Pembinaan, yang menggunakan simbol [ ] mempunyai sintaks seperti berikut:

[ f1, f2, . . . , fn] : X = < f1:X, f2:X, . . . , fn:X >

Contoh:[Maximum, Minimum, Average] : <1, 2, 3, 4, 5>

Hasilnya adalah:<5, 1, 3>

Page 16: B5 Fungsian

16

5.3.3. Penyelitan

Penyelitan, yang menggunakan simbol / mempunyai sintaks seperti berikut:

/ f: <X1, X2, . . . , Xn> = f : < X1, / f :< X2, . . . , fn:X >>

/f : dihuraikan kepada:Jika x adalah X1, maka X1Jika tidak, jika x adalah jujukan <X1, X2, . . . , Xn> dan n >= 2

maka f : < X1, / f :< X2, . . . , fn:X >>

Contoh:/+:< 1, 2, 3, 4, 5 >= +:<1, +:<2, +:<3, +:<4, +:<5>>>>>

Hasilnya adalah:15

Page 17: B5 Fungsian

17

5.3.4. Aplikasi kepada Semua

Aplikasi_kepada_semua, yang menggunakan simbol mempunyai sintaks seperti berikut:

f: < X1, X2, . . . , Xn = < f:X1, f:X2, . . . , f:Xn>

Huraiannya: f: = jika x adalah nil, maka nilJika tidak, jika x adalah jujukan <X1, X2, . . . , Xn>

Maka <f:X1, f:X2, . . . , f:Xn>

Contoh :+:< <2, 3>,<4, 5>,<6, 2> >

Hasilnya adalah:<+:<2, 3>, +:<4, 5>, +:<6, 2>> = <5, 9, 8>

Page 18: B5 Fungsian

18

5.3.5. Keadaan Bersyarat Keadaan bersyarat, yang menggunakan IF yang menggunakan

3 argumen, mengembalikan argumen yang kedua sekiranya argumen pertama BENAR, dan mengembalikan argumen ketiga sekiranya argumen pertama PALSU

Sintaks:(IF fungsi1 fungsi2 fungsi3) : x =If fungsi1:x = T (benar)

maka fungsi2:xjika tidak fungsi3:x

Contoh:(IF FIRST:<2,3,5> TAIL:<2,3,5> LAST:<2,3,5>):2

Hasilnya adalah:<3,5>