bab 5

18
1 Bab 5 Spesifikasi Pengaturcaraan Fungsian

Upload: senona

Post on 04-Jan-2016

56 views

Category:

Documents


5 download

DESCRIPTION

Bab 5. Spesifikasi Pengaturcaraan Fungsian. Spesifikasi Pengaturcaraan Fungsian. Pengaturcaraan fungsian popular dalam implementasi kecerdasan buatan, pembuktian matematik, logik dan aplikasi pemperosesan selari Kelebihan pengaturcaraan fungsian berbanding pengaturcaraan imperatif: - PowerPoint PPT Presentation

TRANSCRIPT

1

Bab 5

Spesifikasi Pengaturcaraan 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

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

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

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

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

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

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

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

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

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

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

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

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

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>

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

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 nil Jika 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>

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:x

jika tidak fungsi3:x Contoh:

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

Hasilnya adalah:<3,5>