Giáo trình phân tích đối tượng dữ liệu mang bộ mô tả kiểu động được sử dụng trong quá trình thực hiện p8 - Pdf 19

Ngôn ngữ lập trình Chương VIII: Lập trình hàm 84
Biểu thức
Biểu thức là một nguyên tử hoặc một danh sách. Biểu thức luôn có một giá trị mà việc
định trị nó theo nguyên tắc sau:
• Nếu biểu thức là một số, thì giá trị của biểu thức là giá trị của số đó.
Ví dụ:
> 25
= 25
• Nếu biểu thức là một ký hiệu thì giá trị của biểu thức có thể là
- Được xác định trước bởi LISP (chẳng hạn t có giá trị là T (TRUE) và nil có
giá trị là NIL một danh sách rỗng) hoặc
- Một giá trị dữ liệu của người sử dụng hoặc trong chương trình được gán cho
một biến. Biến không cần phải khai báo.
Ví du:
> (setq a 3) ; Gán số 3 cho biến có tên a
= 3
> a ; hỏi giá trị của ký hiệu “a”
= 3
• Nếu biểu thức là một danh sách có dạng (E
0
E
1
E
n
) thì giá trị của biểu thức được
xác định theo cách sau đây:
- Phần tử đầu tiên E
0

> ( + 4 (+ 3 5))
= 12
- Chú ý: Nếu biểu thức dùng hàm QUOTE hoặc dấu nháy đơn sẽ không được
đánh giá
Ví dụ:
> ‘(+ 1 2)
= (+ 1 2)
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e

V
i
e
w
e
r
w
w
w
.

w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
.
Ngôn ngữ lập trình Chương VIII: Lập trình hàm 85
8.3.3 Các hàm
Một chương trình của LISP là một hàm hoặc một hàm hợp. Các hàm có thể do LISP
định nghĩa trước hoặc do lập trình viên tự định nghĩa.
Một số hàm định nghĩa trước

Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e

V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r

d
o
c
u
-
t
r
a
c
k
.
c
o
m
.
Ngôn ngữ lập trình Chương VIII: Lập trình hàm 86
= T
• (EQUAL o1 o2) so sánh xem đối tượng bất kỳ o1 và o2 có giống nhau hay
không?
Ví dụ:
>(equal ‘(a b c) ‘(a b c))
= T
>(equal ‘(a b c) ‘( b a c))
= NIL
>(equal ‘a ‘a)
= T
• Các hàm thao tác trên danh sách: CAR, CDR, CONS và LIST

h
a
n
g
e

V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m

a
c
k
.
c
o
m
.
Ngôn ngữ lập trình Chương VIII: Lập trình hàm 87
- Viết gộp các hàm: Ta có thể dùng hàm C A/D R để kết hợp nhiều CAR và
CDR (có thể thay thế việc lồng nhau tới 4 cấp)
Ví du:
(CADR ‘(a b c))
= B
- (CONS x L) nhận vào phần tử x và danh sách L, trả về một danh sách, có
được bằng cách thêm phần tử x vào đầu danh sách L
Ví du:
>(CONS 3 '(1 2 3))
= (3 1 2 3)
>(CONS 3 nil)
= (3)
>(CONS '(a b) '(1 2 3))
= ((A B) 1 2 3)
- (LIST E
1
E
2

- (ATOM a) xét xem a có phải là một nguyên tử.
- (NUMBERP n) xét xem n có phải là một số.
- (LISTP L) xét xem L có phải là một danh sách.
- (SYMBOLP S) xét xem S có phải là một ký hiệu.
- (NULL L) nhận vào 1 danh sách L. Nếu L rỗng thì trả về kết quả là T,
ngược lại thì trả về kết quả là NIL.
Ví du:
>(atom 'a)
= T
>(numberp 4)
= T
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e

V
i
e
w
e
r


V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
.
Ngôn ngữ lập trình Chương VIII: Lập trình hàm 88

E
2
E
n
từ trái sang phải. Nếu gặp một biểu thức là NIL thì
dừng và trả về kết quả là NIL. Nếu tất cả các biểu thức đều khác NIL thì trả
về giá trị của biểu thức E
n
.
Ví dụ:
>(AND (> 3 2) (= 3 2) (+ 3 2))
= NIL
>(AND (> 3 2) (- 3 2) (+ 3 2))
= 5
- (OR E
1
E
2
E
n
) nhận vào n biểu thức E
1
, E
2
, E
n
. Hàm OR định giá các
biểu thức E
1
E

w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P
D
F
-
X
C
h
a


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

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