120 likes | 238 Views
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
E N D
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 • Untuk membuat list menggunakan perintah Setf atau Setq.
Contoh • (it seems that) => list 3 elemen • ((it seems that) you (like) me) => list 4 elemen • (a) => list 1 elemen • (a ()) => list 2 elemen
Operasi – operasi pada list • (null? X) • (car X) => mengambil elemen pertama • (cdr X) => mengambil sub- himpunan dengan membuang elemen pertama • (cons a x)
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)
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
Function • > (defun foo (x y) (+ x y 5)) • ;membuat fungsi FOO • > (foo 5 0);memanggil function • 10 ;output
Fungsi rekursi : > (defun fact (x) (if (> x 0) (* x (fact (- x 1))) 1 ) ) FACT ;output > (fact 5) 120 ;output
Perulangan >(setq a 4) 4 >(loop (setq a (+ a 1)) (when (> a 7) (return a) ) ) 8
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)
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)
> (intersection '(a b c) '(b));set intersection (B) > (union '(a) '(b));set union (A B) >(set-difference '(a b) '(a));set difference (B)