Professional Documents
Culture Documents
Thuc Hanh Lap Trinh Lisp
Thuc Hanh Lap Trinh Lisp
Thuc Hanh Lap Trinh Lisp
TP.HCM
BK
TP.HCM
Ni dung
Cc loi Ngn ng lp trnh Lp trnh hm vi Lisp: GcLisp Lp trnh logic vi Prolog: B_Prolog Lp trnh hng i tng vi SmallTalk: Vwin
Slide 2/67
BK
TP.HCM
Slide 3/67
BK
TP.HCM
Lisp Cc ng dng
Expert problem solvers Common reasoning Learning Natural-language interfaces Education and intelligent support systems Speech and vision
Slide 4/67
BK
TP.HCM
Bt:
Nguyn Th Trc Vin
BK
TP.HCM
Gii p bi tp
(sin (+ (* 3 x) (/ pi 2)))
Slide 6/67
BK
TP.HCM
bin dch
chng trnh thc thi
nh gi tr li
Kt qu vng lp top-level
thc thi
kt qu
Slide 7/67
BK
TP.HCM
Slide 8/67
BK
TP.HCM
Slide 9/67
BK
TP.HCM
Slide 10/67
BK
TP.HCM
Symbol (1)
Symbol (~ identifier): t to bi cc k t bt k, ngoi tr ( ) ` ; v khong trng
V d: + * example l cc symbol
BK
TP.HCM
Symbol (2)
Vi vai tr l i s trong hm, symbol c xem nh tn ca mt bin
* example Unbound variable: EXAMPLE * (setf example 3) 3 * (+ example 4) 7
BK
TP.HCM
Symbol (3)
Bi tp: Symbol hay s ?
AARDVARD 87 1-2-3-GO 3.12 7-11 22/7 -12
Slide 13/67
BK
TP.HCM
Symbol (4)
Gii bi tp
AARDVARD 87 1-2-3-GO 3.12 7-11 22/7 12 symbol number symbol number symbol symbol number
Ngn ng lp trnh Lisp Slide 14/67
BK
TP.HCM
Boolean
Lisp khng c kiu d liu Boolean
nil biu din gi tr logic sai, tt c cc biu thc khc biu din tr logic ng Mc nh dng T tr logic ng
BK
TP.HCM
Kiu d liu
Symbol (~ identifier): t to bi cc k t bt k, ngoi tr ( ) ` ; v khong trng V d: + * example l cc symbol Biu thc Danh sch Atoms Boolean expression::= atom | list list::=(expression1...expressionn) atom::= s|chui k t|symbols T v nil
Slide 16/67
BK
TP.HCM
Slide 17/67
BK
TP.HCM
Phn cp d liu
expression
list
atom
symbol
number
...
list
nil
...
interger
real
...
Slide 18/67
BK
TP.HCM
Slide 19/67
BK
TP.HCM
V d
* (setf a (1 2 3)) (1 2 3) *a (1 2 3) * (setf a 2) 2 *a 2
Slide 20/67
10
BK
TP.HCM
Cc v t kiu
(numberp E) tr v ng nu E l s (stringp E) (listp E) (null E) (atom E) chui danh sch nil atom
Slide 21/67
BK
TP.HCM
Cc v t kiu
* (numberp 4) T * (numberp 3.45) T * (symbolp ListProcessor) T * (listp (a b c)) T
Slide 22/67
11
BK
TP.HCM
Cc v t trn s
ZEROP PLUSP MINUSP ODDP EVENP < > = kim tra zero kim tra s dng kim tra s m kim tra s l kim tra s chn so snh first < second so snh first > second so snh first = second
Ngn ng lp trnh Lisp Slide 23/67
BK
TP.HCM
Cc hm c bn
Gn: setf v setq Cc php tnh s hc
+, , *, /, \\ 1+ v 1max, min v abs
Slide 24/67
12
BK
TP.HCM
V d
* (setf x 27) 1.111 * (/ x 9) 3 * (/ 22 7) 3.14286 * (max 3 4 5) 5 * (abs -2) 2
Slide 25/67
BK
TP.HCM
Cc hm so snh (1)
Cc php so snh
= eq eql equal hai i s cng l mt s hai i s cng l mt symbol hai i s cng l mt symbol hay cng mt s hai i s c cng biu thc biu din
Slide 26/67
13
BK
TP.HCM
Cc hm so snh (2)
eq kim tra cng a ch b nh (cc symbol
ging nhau tha iu ny).
BK
TP.HCM
V d (1)
* (setf k (a b) l (a b)) (A B) * (equal k l) T * (eq k l) NIL * (eql k l) NIL
Slide 28/67
14
BK
TP.HCM
V d (2)
* (setf x a y a) A * (equal x y) T * (eq x y) T * (eql x y) T
Slide 29/67
BK
TP.HCM
V d (3)
* (eq 3 3) T * (eql 3 3.0) NIL * (= 3 3) T * (= 3 3.0) T
Slide 30/67
15
BK
TP.HCM
Slide 31/67
BK
TP.HCM
Slide 32/67
16
BK
TP.HCM
Slide 33/67
BK
TP.HCM
Value
Nguyn Th Trc Vin Ngn ng lp trnh Lisp
Value
Slide 34/67
17
BK
TP.HCM
ASSOC (2)
Ly cc thnh phn t mt danh sch:
(ASSOC <key> <asociation list>) V d:
* (setf sarah ((height .54) (weight 4.4))) ((HEIGHT 0.54) (WEIGHT 4.4)) * (assoc weight sarah) (WEIGHT 4.4)
Slide 35/67
BK
TP.HCM
ASSOC (3)
Thm mt thnh phn mi vo danh sch:
(ACONS <key><value><asociation list>)
V d:
* (setf Andrew ((height .74) (weight 6.4))) ((HEIGHT 0.74) (WEIGHT 6.4)) * (acons nick Bobby Andrew) ((NICK . BOBBY) (HEIGHT 0.74) (WEIGHT 6.4))
Nguyn Th Trc Vin Ngn ng lp trnh Lisp Slide 36/67
18
BK
TP.HCM
nh ngha hm
* (defun square (x) (* x x)) SQUARE * (square 3) 9 * (defun abs(x) (if (>= x 0) x (* -1 x) ) ) ABS
Slide 37/67
BK
TP.HCM
19
BK
TP.HCM
BK
TP.HCM
Slide 40/67
20
BK
TP.HCM
Slide 41/67
BK
TP.HCM
Slide 42/67
21
BK
TP.HCM
Slide 43/67
BK
TP.HCM
Slide 44/67
22
BK
TP.HCM
Slide 45/67
BK
TP.HCM
Slide 46/67
23
BK
TP.HCM
Slide 47/67
BK
TP.HCM
Slide 48/67
24
BK
TP.HCM
Slide 49/67
BK
TP.HCM
Slide 50/67
25
BK
TP.HCM
Bin cc b (1)
Ton t let
(let ((var1 E1) (varm Em)) Em+1 En)
V d:
* (let ((x (fac 4))) (* x x)) 576
Nguyn Th Trc Vin Ngn ng lp trnh Lisp Slide 51/67
BK
TP.HCM
Bin cc b (2)
Che ph cc bin ton cc
* 5 * 1 * 5 * 2 * 5 (setf x 5) (let ((x 1)) x) x (let ((x 1)) (setf x 2) x) x
Ngn ng lp trnh Lisp
Slide 52/67
26
BK
TP.HCM
Bin cc b (3)
Che ph cc i s ca mt hm
* (defun foo(x) (let ((x 1)) x ) ) FOO * (foo 4) 1
Slide 53/67
BK
TP.HCM
Bin cc b (4)
Cc lin kt c thc hin song song
* (defun bar(x) (let ((x 1) (y (1+ x))) y) ) BAR * (bar 4) 5
Slide 54/67
27
BK
TP.HCM
Cu trc lp
DOTIMES
Lp trn s
DOLIST
Lp trn danh sch
Slide 55/67
BK
TP.HCM
DOTIMES H tr lp trn s
(dotimes (<count> <upper-bound-form> <result form>) <body>)
upper-bound-form c nh gi n. count c gn cc s t 0 n-1 (n ln) Thn vng lp <body> c thc hin n ln,
gi tr ca <result form> l kt qu cn tnh.
Nguyn Th Trc Vin Ngn ng lp trnh Lisp Slide 56/67
28
BK
TP.HCM
DOTIMES (2)
V d: Tnh ly tha mn = mm.. m
(defun power(m n) (let ((result 1)) (dotimes (count n result) (setf result (* m result)) ) ) )
Slide 57/67
BK
TP.HCM
29
BK
TP.HCM
DOLIST (2)
m s phn t l s trong danh sch:
(defun collect-number(l) (let ((result 0)) (dolist (e l result) (when (numberp e) (setf result (+ result 1)) ) ) ) )
Slide 59/67
BK
TP.HCM
Ci t Lisp
Download GC-Lisp t trang Web:
http://www.dit.hcmut.edu.vn/~nttung
Double click gii nn file zip Extract vo C:\ Xut hin dialog, to th mc C:\GCLisp Tr li OK
Slide 60/67
30
BK
TP.HCM
Startup gclisp
Chy t file C:\GcLisp\GcLisp.exe
Slide 61/67
BK
TP.HCM
Mi trng GC-LISP
Ta thy ca s GCLISP nh sau:
Slide 62/67
31
BK
TP.HCM
Mt s phm tt
<Alt>-H <Alt>-E <Ctrl>-E <F1> <F8> <F9> <F10> gip vo LISP Explorer vo ca s son tho GMACS ri khi GMACS v tr v Lisp load mt file vo GMACS lu mt file lu file vi tn khc
Ngn ng lp trnh Lisp Slide 63/67
BK
TP.HCM
Dng lnh
G th cc lnh sau:
Slide 64/67
32
BK
TP.HCM
BK
TP.HCM
Slide 66/67
33
BK
TP.HCM
DEBUG
Slide 67/67
34