Bài giảng Thực hành Ngôn ngữ lập trình - pdf 17

Download miễn phí Bài giảng Thực hành Ngôn ngữ lập trình



Các hàm so sánh
 Các phép so sánh
 = hai đối số cùng là một số
 eq hai đối số cùng là một symbol
 eql hai đối số cùng là một symbol hay cùng một số
 equal hai đối số có cùng biểu thức biểu diễn



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

1BK
TP.HCM
Thực hành Ngôn ngữ lập trình
Nguyễn Thị Trúc Viên
Khoa Công Nghệ Thông Tin
Đại Học Bách Khoa TPHCM
BK
TP.HCM
Slide 2/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Nội dung
 Các loại Ngôn ngữ lập trình
 Lập trình hàm với Lisp: GcLisp
 Lập trình logic với Prolog: B_Prolog
 Lập trình hướng đối tượng với SmallTalk:
Vwin
2BK
TP.HCM
Slide 3/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Lịch sử phát triển
 Nghĩ ra năm 1958 bởi John McCarthy (MIT)
 Hai thế hệ đầu tiên ra đời ngay sau đó:
MacLisp và InterLisp
 Đầu thập niên 80, có 12 hệ Lisp khác nhau
 Common Lisp chuẩn ra đời năm 1984
Franz-Lisp
Zeta-Lisp
BK
TP.HCM
Slide 4/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Lisp – Các ứng dụng
 Expert problem solvers
 Common reasoning
 Learning
 Natural-language interfaces
 Education and intelligent support systems
 Speech and vision
3BK
TP.HCM
Slide 5/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Ngôn ngữ hướng chức năng
 Từ khi được John McCarthy (MIT) nghĩ ra năm
1958, LISP được tinh chế dần đến phiên bản 1.5 và
được sử sụng lâu dài về sau
 Ngôn ngữ hướng chức năng (functional
language), dùng ký hiệu tiền tố (prefix):
 f(x,y, z) ký hiệu là (f x y z)
 x+y ký hiệu là (+ x y)
 Bt: ký hiệu ra sao ?





+
2
3sin pix
BK
TP.HCM
Slide 6/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Giải đáp bài tập
 (sin (+ (* 3 x) (/ pi 2)))
4BK
TP.HCM
Slide 7/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Ngôn ngữ thông dịch
Ngôn ngữ thông dịch
Biểu thức
đánh giá
trả lời
Kết quả
vòng lặp top-level
Ngôn ngữ biên dịch
câu lệnh (instructions)
biên dịch
chương trình thực thi
thực thi
kết quả
BK
TP.HCM
Slide 8/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
List Processing (1)
 Lisp là ngôn ngữ đặc trưng cho việc xử lý
danh sách
 Biểu diễn chương trình bằng các danh
sách và thao tác trên đó như dữ liệu
 (+ (* 3 4) (- 5 2))
chương trình: hàm + áp dụng vào hai đối số
dữ liệu: danh sách gồm ba thành phần
5BK
TP.HCM
Slide 9/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
List Processing (2)
 Ví dụ:
* (+ 3 4)
7
* (+ (* 3 4) (- 5 2))
15
* 4
4
BK
TP.HCM
Slide 10/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
List Processing (3)
 Danh sách là sự thực hiện một hàm
 Để không đánh giá một danh sách, dùng
dấu ‘ đặt trước danh sách
* (+ 3 4) ; danh sách được đánh giá
7
* ‘(+ 3 4)
(+ 3 4)
6BK
TP.HCM
Slide 11/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Symbol (1)
 Symbol (~ identifier): từ tạo bởi các ký tự
bất kỳ, ngoại trừ ( ) ‘ ` “ ; và
khoảng trắng
Ví dụ: + * example là các symbol
 Ba trường hợp thường sử dụng:
 Tên hàm
 Dữ liệu: chuỗi ký tự hay số
 Tên biến
BK
TP.HCM
Slide 12/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Symbol (2)
 Với vai trò là đối số trong hàm, symbol được
xem như tên của một biến
 Để không đánh giá một symbol, dùng dấu ‘ đặt
trước danh sách
* example
Unbound variable: EXAMPLE
* (setf example 3)
3
* (+ example 4)
7
* ’example
example
7BK
TP.HCM
Slide 13/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Symbol (3)
 Bài tập: Symbol hay số ?
 AARDVARD
 87
 1-2-3-GO
 3.12
 7-11
 22/7
 -12
BK
TP.HCM
Slide 14/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Symbol (4)
 Giải bài tập
 AARDVARD symbol
 87 number
 1-2-3-GO symbol
 3.12 number
 7-11 symbol
 22/7 symbol
 12 number
8BK
TP.HCM
Slide 15/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Boolean
 Lisp không có kiểu dữ liệu Boolean
 nil biểu diễn giá trị logic sai, tất cả các biểu thức
khác biểu diễn trị logic đúng
 Mặc định dùng T → trị logic đúng
 nil và T là các symbol hằng
 nil ≈ danh sách rỗng ()
* nil
NIL
* T
T
BK
TP.HCM
Slide 16/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Kiểu dữ liệu
 Symbol (~ identifier): từ tạo bởi các ký tự bất
kỳ, ngoại trừ ( ) ‘ ` “ ; và khoảng trắng
Ví dụ: + * example là các symbol
 Biểu thức expression::= atom | list
 Danh sách list::=(expression1...expressionn)
 Atoms atom::= số|chuỗi ký tự|symbols
 Boolean T và nil
9BK
TP.HCM
Slide 17/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Các loại biểu thức trong Lisp
 Các loại biểu thức (expression):
 Ký hiệu (symbol). Ví dụ: a-symbol
 Danh sách (list). Ví dụ: (f x y)
 Literal:
 Số: 0.42e2
 Chuỗi: “a string”
 Ký tự: ‘c
 Mảng: ‘(1 2 3)
BK
TP.HCM
Slide 18/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Phân cấp dữ liệu
expression
list atom
symbol
realnillist
...number
... ...interger
10
BK
TP.HCM
Slide 19/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Ngôn ngữ động (dynamic type)
 Biến không có kiểu dữ liệu định sẵn
(không khai báo)
 Cùng một biến có thể có nhiều kiểu dữ
liệu khác nhau
BK
TP.HCM
Slide 20/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Ví dụ
* (setf a ‘(1 2 3))
(1 2 3)
* a
(1 2 3)
* (setf a 2)
2
* a
2
11
BK
TP.HCM
Slide 21/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Các vị từ kiểu
(numberp E) trả về đúng nếu E là số
(stringp E) chuỗi
(listp E) danh sách
(null E) nil
(atom E) atom
BK
TP.HCM
Slide 22/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Các vị từ kiểu
* (numberp 4)
T
* (numberp 3.45)
T
* (symbolp ‘ListProcessor)
T
* (listp ‘(a b c))
T
12
BK
TP.HCM
Slide 23/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Các vị từ trên số
ZEROP kiểm tra zero
PLUSP kiểm tra số dương
MINUSP kiểm tra số âm
ODDP kiểm tra số lẻ
EVENP kiểm tra số chẵn
< so sánh first < second
> so sánh first > second
= so sánh first = second
BK
TP.HCM
Slide 24/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Các hàm cơ bản
 Gán: setf và setq
 Các phép tính số học
 +, –, *, /, \\
 1+ và 1-
 max, min và abs
13
BK
TP.HCM
Slide 25/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Ví dụ
* (setf x 27)
1.111
* (/ x 9)
3
* (/ 22 7)
3.14286
* (max 3 4 5)
5
* (abs -2)
2
BK
TP.HCM
Slide 26/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Các hàm so sánh (1)
 Các phép so sánh
 = hai đối số cùng là một số
 eq hai đối số cùng là một symbol
 eql hai đối số cùng là một symbol
hay cùng một số
 equal hai đối số có cùng biểu thức
biểu diễn
14
BK
TP.HCM
Slide 27/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Các hàm so sánh (2)
 eq kiểm tra cùng địa chỉ bộ nhớ (các symbol
giống nhau thỏa điều này).
 eql kiểm tra thỏa eq hay không. Nếu không,
kiểm tra là hai số cùng kiểu và cùng giá trị.
 equal kiểm tra thỏa eql hay không. Nếu
không, xem đối số là hai danh sách và xem
từng cặp phần tử có thỏa equal.
 = kiểm tra hai đối số cùng là một số (có thể
không cùng kiểu)
BK
TP.HCM
Slide 28/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Ví dụ (1)
* (setf k ‘(a b) l ‘(a b))
(A B)
* (equal k l)
T
* (eq k l)
NIL
* (eql k l)
NIL
15
BK
TP.HCM
Slide 29/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Ví dụ (2)
* (setf x ‘a y ‘a)
A
* (equal x y)
T
* (eq x y)
T
* (eql x y)
T
BK
TP.HCM
Slide 30/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Ví dụ (3)
* (eq 3 3)
T
* (eql 3 3.0)
NIL
* (= 3 3)
T
* (= 3 3.0)
T
16
BK
TP.HCM
Slide 31/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Các hàm xử lý trên danh sách (1)
 FIRST và REST – CAR và CDR
 CONS, APPEND, LIST
 NTHCDR, BUTLAST và LAST
 LENGTH và REVERSE
BK
TP.HCM
Slide 32/67Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp
Các hàm xử lý trên danh sách (2)
* (setf l ‘(a b c d e) k ‘(f g h))
(F G H)
* (first l)
A
* (rest l)
(B C D E)
* (cons ‘f l)
(F A B C D E)...
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status