Professional Documents
Culture Documents
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