SOAL :BUATLAH PROGRAM UNTUK MENGHITUNG VEKTOR
isempty
(L) list -> boolean
{ isempty (L) menghasilkan true atau benar jika list kosong, nil
jika ada elemennya }
(defun isempty (L)
(null
L)
)
Aplikasi
ð (isempty ‘())
T
ð (isempty ‘(1 2))
nil
pjglist
(L) list -> integer
{pjglist (L) menghasilkan berapa
banyak elemen dalam list, 0 jika list kosong }
(defun pjglist (L)
(if(isempty
L) 0
(+
1 (pjglist(cdr L)))
)
)
Aplikasi
ð (pjglist ‘())
0
ð (pjglist '(7 5 2))
3
pangkat2
(a) integer - integer
{ pangkat2 (a) menghasilkan
pangkat 2 dari angka yang di inputkan }
(defun pangkat2 (a)
(*
a a)
)
Aplikasi
ð
(pangkat2 2)
4
ð
(pangkat2 5)
25
sumpangkat
(L1 L2) 2 list -> integer
{ sumpangkat (L1 L2) menghasilkan
∑ hasil pemangkatan jumlah elemen pada posis yang
sama pada List1 dengan posisi pada list2. Dikerjakan dengan cara rekursif }
(defun sumpangkat (L1 L2)
(if(or(isempty
L1) (isempty L2)) 0
(+
(pangkat2 (+ (car L1) (car L2)))
(sumpangkat
(cdr L1) (cdr L2))
)
)
)
Aplikasi
ð
(sumpangkat ‘()
‘(1 1))
0
ð
(sumpangkat ‘(1 2)
‘())
0
ð
(sumpangkat ‘()
‘())
0
ð
(sumpangkat ‘(1 2)
‘(1 1))
25
besarvektor
(L1 L2) 2 list -> real
{ besarvektor (L1 L2)
menghasilkan vektor dari list1 dan list2 }
(defun besarvektor (L1 L2)
(if(=
(pjglist L1) (pjglist L2))
(sqrt
(sumpangkat L1 L2)) nil
)
)
Aplikasi
ð
(besarvektor ‘(1 3 2) ‘(5 1))
nil
ð
(besarvektor ‘(1 2) (2 2))
5
ð
(besarvektor ‘(1 3)
‘(4 1))
6.4031243
OPERATOR ARITMATIKA MENGHASILKAN
NUMERIK
OPERATOR
|
FUNGSI
|
CONTOH
|
HASIL
|
+
|
Tambah
|
(+ 1 2)
|
3
|
-
|
Kurang
|
(- 5 2)
|
3
|
*
|
Kali
|
(* 2 3)
|
6
|
/
|
Bagi
|
(/ 9 3)
|
3
|
Expt
|
Pangkat
|
(expt 2 3)
|
8
|
Mod
|
Modula (sisa
hasil bagi)
|
(mod 8 3)
|
2
|
OPERATOR RELASION MENGHASILKAN
BOOLEAN
OPERATOR
|
FUNGSI
|
CONTOH
|
HASIL
|
=
|
Sama dengan
|
(= 2 2) , (= 2
3)
|
T , Nil
|
/=
|
Tidak sama
dengan
|
(/= 2 3) , (/= 3 3)
|
T , Nil
|
>
|
Lebih besar
|
(> 4 1 ) ,
(> 2 5)
|
T , Nil
|
>=
|
Lebih besar
sama dengan
|
(>= 3 3) ,
(>= 7 3) , (>= 4 5)
|
T , T , Nil
|
<
|
Lebih kecil
|
(< 2 7) ,
(< 6 3)
|
T , Nil
|
<=
|
Lebih kecil
sama dengan
|
(<= 2 2) ,
(<= 1 3) , (<= 7 2)
|
T , T, Nil
|
OPERATOR
|
FUNGSI
|
CONTOH
|
HASIL
|
ATOM
|
memeriksa atom
atau tidak
|
(atom 1) ,
(atom ‘a), (atom ‘(2))
|
T , T , nil
|
LISTP
|
untuk memeriksa
list atau tidak
|
(listp ‘(5)) ,
(listp 1) , (listp ‘b)
|
T , nil , nil
|
NUMBERP
|
untuk
memeriksa number atau tidak
|
(numberp 3) ,
(numberp -2) , (numberp ‘z)
|
T , T , nil
|
SYMBOLP
|
untuk
memeriksa symbol atau tidak
|
(symbolp ‘a) ,
(simbolp 4)
|
T , nil
|
PLUSP
|
untuk
memeriksa positif atau tidak
|
(plusp 1) ,
(plusp -2)
|
T , nil
|
ODDP
|
untuk
memeriksa ganjil atau tidak
|
(oddp 7) ,
(oddp 2)
|
T , nil
|
EVENP
|
untuk
memeriksa genap atau tidak
|
(evenp 4) ,
(evenp 3)
|
T , nil
|
INTEGERP
|
untuk
memeriksa integer atau tidak
|
(integerp 5) ,
(integerp 5.0)
|
T , nil
|
FLOATP
|
Menghasilkan
nilai float
|
(float 1 ) ,
(float 2.0)
|
1.0 , 2.0
|
NULL
|
untuk
memeriksa list kosong /
tidak
|
‘() , ‘(1 2)
|
T , nil
|
MAX
|
menghasilkan
nilai yang terbesar
|
(max 3 9)
|
9
|
MIN
|
menghasilkan
nilai yang terkecil
|
(min 2 5)
|
2
|
ABS
|
mempositifkan
nilai yang negatif artiya mengembalikan nilai positifnya
|
(abs - 5)
|
5
|
Car
|
Mengambil
elemen pertama pada list
|
(car ‘(1 2 3)
|
1
|
Cdr
|
Menghasilkan
list tanpa elemen pertama
|
(cdr ‘(1 2 3))
|
‘(2 3)
|
Reverse
|
Untuk
membalik suatu list
|
(reverse ‘(1 2
3))
|
‘(3 2 1)
|
And untuk dan
OR untuk atau
Not untuk Negasi
Equal untuk mengecek sama atau tidak
If untuk pengkondisian, dalam notasi LISP (if <kondisi> <ekspresi1> <ekspresi2>)
OR untuk atau
Not untuk Negasi
Equal untuk mengecek sama atau tidak
If untuk pengkondisian, dalam notasi LISP (if <kondisi> <ekspresi1> <ekspresi2>)
Rekursif adalah pemanggilan fungsi di dalam fungsi itu sendiri
NOTE :
·
Untuk menulisankan karakter
(symbol) harus diberi tanda petik 1 di depannya
·
Untuk menulisakan sebuah
list harus diberi petk 1 kemudian diawali kurung buka dan diakhiri kurung tutup
·
Perhatikan baik-baik kurung
buka dan kurung tutup
·
LISP tidak ada perbedaan
dalam menuliskan huruf besar dan kecil
Tidak ada komentar:
Posting Komentar