180 likes | 436 Vues
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:
E N D
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: • 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
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
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
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
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
5.1. Kalkulus Lambda • Suatu kaedah matematik untuk mengungkapkan pengiraan menggunakan fungsi konsep asas dalam pengaturcaraan fungsian • Lambda l adalah mirip kepada ungkapan universal " yang bermaksud ‘untuk semua’ • Bentuk umum ungkapan lambda, yang dikenali sebagai fungsi lambda ialah: l id1, id2, . . . , idn . ungkapan • Contohnya: lx . x * x • Ungkapan lambda ini boleh diaplikasi seperti berikut: {lx. x * x } (2) yang mana hasil ungkapan ini boleh diperolehi dengan menggantikan parameter dengan nilai 2 , maka nilai adalah 4
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 lx. ungkapan yang mana x adalah pencam dan ungkapan adalah ungkapan lambda • Suatu aplikasi, yang mewakili lebih dari satu ungkapan, seperti lx. ungkapan1 ungkapan2, yang mana x adalah pencam, dan ungkapan1 dan ungkapan2 adalah ungkapan lambda
5.1. Kalkulus Lambda • Contoh fungsi lambda: • {ln. lm. n2 + m} (3,4) = {lm. 32 + m}(4) = 32 + 4 = 13 • {lm. ln. n2 + m} (3,4) = {ln. n2 + 3}(4) = 42 + 3 = 19 • {{{la, b. a + b}3}4} = {lb. 3 + b} 4 = 3 + 4 = 7 • {lx. ly. yx}(a, b) = {ly. ya}(b) = ba
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 : lx. ungkapanaly. ungkapan[x y] yang mana y tidak wujud pada asalnya dalam ungkapan tersebut. Contoh: {lw. (ly. yx) w} alx. (ly. yz) x
5.2. Pembentukan ungkapan lambda yang lebih mudah (Reduction) • Beta-conversion – merujuk kepada penukaran dan peniskalan beta lx. ungkapan1 ungkapan2b ungkapan1[x ungkapan2] Contoh: {lx. x + 1} 5 b (5 + 1) = 6 • Eta-conversion – merujuk kepada penghapusan peniskalaan lambda yang redundan {lx. ungkapan} x h ungkapan Contoh: {lx. (sqr 5)} (x) h (sqr 5) = 25
5.2. Pembentukan ungkapan lambda yang lebih mudah (Reduction) • Gamma-conversion – dikaitkan dengan nilai dan fungsi yang telah ditakrifkan sebelumnya {function x y} d function(x, y) Contoh; (add 5 3) d add(5, 3) = 8
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
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
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>
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 X1 Jika 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
5.3.4. Aplikasi kepada Semua • Aplikasi_kepada_semua, yang menggunakan simbol a mempunyai sintaks seperti berikut: a f: < X1, X2, . . . , Xn = < f:X1, f:X2, . . . , f:Xn> • Huraiannya: a f: = jika x adalah nil, maka nil • Jika tidak, jika x adalah jujukan <X1, X2, . . . , Xn> • Maka <f:X1, f:X2, . . . , f:Xn> • Contoh : a+:< <2, 3>,<4, 5>,<6, 2> > • Hasilnya adalah: <+:<2, 3>, +:<4, 5>, +:<6, 2>> = <5, 9, 8>
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>