Random Article

Beberapa Fungsi Dalam CLISP

 on Wednesday 29 May 2013  

LISP, singkatan dari List Processor, merupakan salah satu bahasa pemrograman tertua. LISP diciptakan oleh J.McCarthy pada tahun 1959. Pada saat itu LISP mempunyai banyak dialek, tapi sekarang sudah distandarkan sehingga bisa dipakai secara umum.

Ada banyak program untuk menjalankan LISP, tergantung sistem operasinya. Yang saya gunakan adalah GNU CLISP. Bisa didapatkan dari web ini -> http://www.clisp.org/ . Karena LISP termasuk bahasa fungsional, pemrogramannya menggunakan fungsi-fungsi. Berikut ini beberapa fungsi dalam CLISP yang saya ketahui....


  • Operator Matematika
Yang paling mendasar tentu saja adalah operator-operator matematika, seperti +, -, /, *, >, <, =,  dan sebagainya. Contohnya, bila kita menuliskan (+ 1 2) maka akan muncul nilai 3 karena 1+2=3. Lalu (* 2 3) menghasilkan nilai 6 (didapat dari 2 x 3 = 6),  (/ 10 2) menghasilkan nilai 5 (didapat dari 10 : 2 = 5), dan sebagainya. Bila kita menuliskan (> 2 1) maka hasilnya adalah T, maksud dari T adalah benar karena 2 lebih besar dari 1. Akan tetapi, bila kita menuliskan (< 2 1) hasilnya adalah NIL atau salah.

Untuk operator =, dipakai sebagai pembanding. Contohnya (= 1 1) hasilnya T, CLISP akan membandingkan 1 apakah sama dengan 1 dan hasilnya benar. Tapi, (= 1 2) akan menghasilkan NIL karena 1 bukan sama dengan 2. Bila ingin menuliskan bukan sama dengan maka menggunakan /=. Contohnya (/= 1 2) hasilnya adalah T. Perlu diingat bahwa "=" atau "/=" hanya dapat digunakan untuk angka atau variabel yang berisikan angka, selain itu maka akan muncul pesan error. Bila anda mencoba menuliskan (= 'a 1) ataupun (/= 'a 1) maka hasilnya error karena 'a bukanlah angka melainkan huruf. Namun kita bisa menggunakan huruf a ini sebagai variabel dengan cara mengeset nilai variabel tersebut. Caranya:
(setq a 2) -> setq dipakai untuk mengeset nilai suatu variabel/elemen. Dalam hal ini, a bernilai 2. Dengan demikian, bila kita menulis (= a 2) hasilnya T karena a yang sekarang ini bukanlah sebagai huruf melainkan suatu variabel dan berisikan 2.

Untuk membandingkan suatu elemen yang berupa huruf, dapat digunakan perintah eq. Contohnya:
(eq 'a 'b) hasilnya NIL karena huruf a tidak sama dengan huruf b.

Sedikit catatan, a dengan 'a berbeda makna. 'a menunjukan bahwa a adalah huruf. Akan tetapi, a hanyalah sebuah variabel yang belum diketahui isinya dan harus kita set dahulu isinya bila ingin dipakai.

  •   ATOM dipakai untuk mencari tahu apakah inputan hanyalah 1 elemen saja.
Contoh:
(atom 3) hasilnya T.
(atom 'a) hasilnya T.
(atom '(1 2 3)) hasilnya NIL.
(atom '()) hasilnya T.

  • LISTP dipakai untuk mencari tahu apakah inputan adalah suatu list.
Contoh:
(listp 1) hasilnya NIL.
(listp '(1 2)) hasilnya T.

  • NUMBERP dipakai untuk mencari tahu apakah inputan adalah angka. Sebaliknya SYMBOLP dipakai untuk char/huruf.
Contoh:
(numberp 1) hasilnya T.
(symbolp 'a) hasilnya T.

  • ODDP dipakai untuk mencari tahu apakah inputan adalah angka ganjil. Sebaliknya EVENP dipakai untuk angka genap.
Contoh:
(oddp 1) hasilnya T.
(evenp 2) hasilnya T.

  • INTEGERP dipakai untuk mencari tahu apakah inputan adalah bilangan bulat. Sebaliknya FLOATP dipakai untuk bilangan desimal.
ContohL
(integerp 1) hasilnya T.
(floatp 2.0) hasilnya T.

  • NULL bila dipakai dalam list akan mencari tahu apakah list tersebut kosong. Akan tetapi dapat dipakai sebagai negasi juga.
Contoh:
(null '()) hasilnya T.
(null '(1 2)) hasilnya NIL.
(null T) hasilnya NIL.
(null NIL) hasilnya T.

  • NOT dipakai sebagai negasi.
Contoh:
(eq 'a 'a) hasilnya T. Bila ditulis (not (eq 'a 'a)) maka hasilnya NIL.

  • MAX dipakai untuk mencari elemen tertinggi dalam inputan. MAX tidak dapat dipakai untuk list ataupun char. Dan MIN dipakai untuk mencari elemen terendah dalam inputan.
Contoh:
(max 1 2 3) hasilnya 3.
(min -1 0 1) hasilnya -1.
(max 'a 'b) atau (max '(1 2)) dan juga (min '(1 2)) atau (min 'a 'b) akan menghasilkan pesan error.

  • EVAL dipakai untuk mengevaluasi pernyataan.
Contoh:
Bila kita menulis '(+ 3 2) maka hasilnya bukanlah 5 melainkan (+ 3 2) karena adanya tanda ' membuat CLISP mengira (+ 3 2) adalah sebuah list. Karena itu kita dapat menuliskan (eval '(+ 3 2)) dan hasilnya adalah 5. EVAL akan error bila menginputkan list tanpa operator seperti (eval '(a 1 2)).

  • CAR dipakai untuk mengambil elemen pertama dari list. Dan CDR dipakai untuk mengambil list tanpa CAR.
Contoh:
(car '(1 2 3)) hasilnya 1.
(cdr '(1 2 3)) hasilnya (2 3).
(car (cdr '(1 2 3))) hasilnya 2.

Selain CAR, kita dapat menggunakan beberapa perintah lain. Seperti FIRST untuk mencari elemen pertama, SECOND untuk mencari elemen kedua, THIRD untuk mencari elemen ketiga, LAST untuk mencari elemen terakhir dan seterusnya (sesuai dengan bahasa inggrisnya). Sementara itu, CDR dapat digantikan dengan REST. Akan tetapi bila yang dicari memang tidak ada, hasilnya NIL.
Contoh:
(second '(1 2 3)) hasilnya 2.
(last '(1 2 3)) hasilnya 3.
(fourth '(1 2 3)) hasilnya NIL.

CAR dan CDR juga dapat dipersingkat. Contohnya:
(cadr '(1 2 3 4)) hasilnya 2. Didapat dari (car (cdr '(1 2 3 4)).
(caddr '(1 2 3 4)) hasilnya 3. Didapat dari (car (cdr (cdr ('1 2 3 4)))).
(cddr '(1 2 3 4) hasilnya (3 4). Didapat dari (cdr (cdr '(1 2 3 4))).

  • CONS dipakai untuk menambahkan suatu elemen ke dalam list.
Contoh:
(cons 'a '(b c d)) hasilnya (A B C D).

  • EQUAL dipakai untuk mengecek apakah 2 buah list sama atau tidak. EQUAL berbeda dengan EQ. EQ dipakai bila input berupa atom, sedangkan EQUAL untuk input berupa list.
Contoh:
(equal '(1 2 3) '(1 2 3)) hasilnya T.
(equal '(1 2 3) '(1 2 4)) hasilnya NIL.

  • INTERSECTION dipakai untuk mencari irisan dari 2 buah list.
Contoh:
(intersection '(2 a c) '(1 a b c)) hasilnya (A C).

  • APPEND dipakai untuk menggabungkan 2 atau lebih list.
Contoh:
(append '(1 2 3) '(a b c) '(3 4 5)) hasilnya (1 2 3 A B C 3 4 5).

  • SORT dipakai untuk mengurutkan elemen dari suatu list numerik saja.
Contoh:
(sort '(2 1 2 4) #'<) hasilnya (1 2 2 4).
(sort '(2 1 2 4) #'>) hasilnya (4 2 2 1).

  • SET-DIFFERENCE dipakai untuk mencari perbedaan dari 2 buah list. Fungsi ini akan mengambil hasil yang berbeda dari list pertama setelah dicocokkan dengan list kedua.
Contoh:
(set-difference '(2 a b 3) '(1 a b 4)) hasilnya (2 3).
(set-difference '(2 a b 3) '(1 a c 4)) hasilnya (2 B 3).
(set-difference '() '(1 a c 4)) hasilnya NIL.
(set-difference '(2) '()) hasilnya (2).

sumber: http://amaziabernikeatmadja.blogspot.com/2012/04/beberapa-fungsi-dalam-clisp.html
Beberapa Fungsi Dalam CLISP 4.5 5 Reza Wednesday 29 May 2013 LISP, singkatan dari List Processor, merupakan salah satu bahasa pemrograman tertua. LISP diciptakan oleh J.McCarthy pada tahun 1959....


No comments:

Post a Comment

Makasih udah mampir ke blog saya, alangkah baiknya kalo anda mau ninggalin komennya.