bab 5
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 PresentationTRANSCRIPT
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>