LISP part 2

12
LISP part 2 By : asisten KBP ‘09

description

LISP part 2. By : asisten KBP ‘09. LIST. List dipakai baik untuk program maupun untuk data. List : urutan dari 0 (nol) atau beberapa harga. Element dari list dapat terdiri dari boolean, angka, simbol, list, function. List kosong : () atau null - PowerPoint PPT Presentation

Transcript of LISP part 2

Page 1: LISP part 2

LISP part 2

By : asisten KBP ‘09

Page 2: LISP part 2

LIST

• List dipakai baik untuk program maupun untuk data.

• List : urutan dari 0 (nol) atau beberapa harga. Element dari list dapat terdiri dari boolean, angka, simbol, list, function.

• List kosong : () atau null

• Untuk membuat list menggunakan perintah Setf atau Setq.

Page 3: LISP part 2

Contoh

• (it seems that) => list 3 elemen

• ((it seems that) you (like) me) => list 4 elemen

• (a) => list 1 elemen

• (a ()) => list 2 elemen

Page 4: LISP part 2

Operasi – operasi pada list

• (null? X)

• (car X) => mengambil elemen pertama

• (cdr X) => mengambil sub-himpunan dengan membuang elemen pertama

• (cons a x)

Page 5: LISP part 2

Contoh

• (setf x ‘((it seems that) you (like) me))• (car x) => (it seems

that)• (car (car x)) = (caar x) => it• (cdr (car x)) = (cdar x) => (seems that)• (cdr x) => (you (like)

me)• (car (cdr x)) = (cadr x) => you• (cdr (cdr x)) = (cddr x) => ((like) me)

Page 6: LISP part 2

Conses• Conses sangat mudah dipakai:

> (cons 4 5) ;mengalokasikan sebuah cons. Set car menjadi 4 dan cdr menjadi 5.

(4 . 5)

> (cons (cons 4 5) 6)

((4 . 5) . 6)

> (car (cons 4 5))

4

> (cdr (cons 4 5))

5

Page 7: LISP part 2

Function

• > (defun foo (x y) (+ x y 5))

• ;membuat fungsi FOO

• > (foo 5 0) ;memanggil function

• 10 ;output

Page 8: LISP part 2

Fungsi rekursi :> (defun fact (x)

(if (> x 0) (* x (fact (- x 1))) 1

) )

FACT ;output

> (fact 5) 120 ;output

Page 9: LISP part 2

Perulangan>(setq a 4) 4 >(loop

(setq a (+ a 1)) (when (> a 7)

(return a))

)8

Page 10: LISP part 2

Sorting

• LISP menyediakan dua dasar untuk sorting: sort and stable-sort.

>(sort '(2 1 5 4 6) #'<) (1 2 4 5 6)

>(sort '(2 1 5 4 6) #'>) (6 5 4 2 1)

Page 11: LISP part 2

Beberapa Fungsi List lainnya> (append '(1 2 3) '(4 5 6)) ;menggabung list(1 2 3 4 5 6)

> (reverse '(1 2 3)) ;membalik elemen dalam list(3 2 1)

> (member ‘d '(b d a c)) ;membuat membership– mengembalikan nilai

dari awal sampai akhir (D A C)

Page 12: LISP part 2

> (intersection '(a b c) '(b)) ;set intersection

(B)

> (union '(a) '(b)) ;set union

(A B)

>(set-difference '(a b) '(a)) ;set difference

(B)