Kamis, 04 April 2013

Dasar Pemprograman Fungsional


Kerangka Dasar Program
Bahasa LISP merupakan bahasa ekspresi, karena baik program maupun data dinyatakan dalam bentuk ekspresi simbolik atau S-Expresion yang berisi mengenai bagaimana membuat suatu fungsi. Sebagai contoh fungsi ”hello” yaitu fungsi ini tidak mempunyai argument parameter.
                        [1] > (defun hello() (write-string “Hello LISP oke”))
Dalam badan fungsi, tempat di mana aksi di lakukan, kita memanggil fungsi lain (mungkin juga makro) yaitu untuk menulis suatu string ke konsol (string di apit oleh tanda “ “).
Sebuah program LISP dapat disimpan dalam sejumlah (lebih dari satu) file eksternal. Jika fungsi utama dari program tersebut mempunyai banyak sekali fungsi antara, maka fungsi-fungsi antara itu dapat dikelompokkan berdasarkan fungsinya atau perannya. Sehingga setiap kelompok fungsi antara dapat disimpan dalam sebuah file eksternal, yang terpisah dari kelompok lainnya. Karenanya, jika program LISP tersebut akan dieksekusi, maka seluruh file eksternal tersebut harus di-load dulu ke dalam memori.
Misal, di simpan pada direktori  “c:\lisp\latih”,  maka masuk ke interaktif CLISP, dan
ketikan perintah di bawah ini.
>(compile-file  "c:/lisp/latih/helo.lisp"  )
Maka akan muncul informasi sebagai berikut
Compiling  file  C:\lisp\latih\helo.lisp  ...
Compilation  of  file  C:\lisp\latih\  helo.lisp  is  finished.
0  errors,  0  warnings
#P"C:  \\lisp\\latih\\helo.fas"  ; NIL  ;
NIL

Setelah LISP melakukan kompilasi (compile-file) maka akan dihasilkan file .fas atau .fasl, yaitu file hasil kompilasi yang sudah berbentuk biner (kode mesin). Sehingga kita dapat melakukan function call terhadap fungsi yang sudah kita buat (hello).
Muatkan program ke memori dengan me-load file sebagai berikut :
>(load  "c:/lisp/latih/helo")
Maka akan muncul informasi sebagai berikut:
;; Loading  file  C:\lisp\latih\helo.fas  ...
;;  Loading  of  file  C:\lisp\latih\  helo.fas  is  finished. T
Jalankan program sebagai berikut :
>  (hello)
Hello  LISP oke
"Hello  LISP oke”

Expresi Aritmatika
Berlaku untuk operan numeric (integer maupun real) dan hasilnya bernilai numeric, yang terdiri dari operator kali (expt / *), bagi (/), tambah (+), kurang (-). Untuk melakukan perhitungan selain operator aritmatika, tersedia pula fungsi dasar perhitungan bilangan integer seperti abs, mod, div.
Di samping itu juga ada operator minus (-) terhadap suatu nilai numerik yang memberikan hasil nilai numerik tersebut dikalikan -1 dan operator ”se-per” (/) terhadap suatu nilai numerik yang memberikan hasil 1 per nilai numerik bersangkutan.
Contoh : 
v  (+  1  2  3  4  ) hasilnya 10
v  (*  1.0  2.0  3.0  4.0  ) hasilnya 24.0
v  (1-  24  ) hasilnya 23
v  (<  0  3  4  4  6  )  =>  salah karena bukan merupakan ekspresi Aritmatika



Expresi Predikat
Predikat adalah ekspresi yang akan menghasilkan true atau false bila dievaluasi.
Sebagai contoh :
1.            Atom : menghasilkan true jika yang diperiksa adalah atom
Misal :    (ATOM  5)                             T
               (ATOM  ‘(1  2  3))                 NIL
2.            Listp  :  menghasilkan true jika symbol yang diperiksa adalah list
Misal :    (LISTP  5)                              NIL
                      (LISTP  (1  2  3  4))             T
3.            Null    : menghasilkan true jika list yang diperiksa adalah list kosong
         Misal  :  (NULL  NIL)                            T
                        (NULL  5)                               NIL

Fungsi Matematika
Fungsi matematika digunakan untuk membantu melakukan perhitungan – perhitungan matematis yang berguna sebagai alat bantu dalam berhitung pada LISP. Pemrograman mengasumsikan  bahwa fungsi yang sudah terdefinisi merupakan fungsi dasar.
Contoh :
  (floor  0.34)                             0; 0.34
(MAX  1  12  -50  )                         12
  (ABS  16  )                               16

0 komentar:

Posting Komentar