1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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 ppsx

5 509 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 355,66 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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à g

Trang 1

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

xác định theo cách sau đây:

giá trị của biểu thức

Ví dụ

> (+ 5 3 6)

= 14

> ( + 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)

Trang 2

Ngôn ngữ lập trình Chương VIII: Lập trình hàm

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

• Các hàm số học: +, -, *, /, 1+, 1-, MOD, SQRT tác động lên các biểu thức số và cho kết quả là một số

Ví dụ:

> (+ 5 6 2)

= 13

> (- 8 3)

= 5

> (- 8 3 1)

= 4

>(1+ 5) ; Tương đương (+ 5 1)

= 6

> (1- 5) ; Tương đương (- 5 1)

= 4

>(MOD 14 3)

= 2

>(sqrt 9) ; Lấy căn bậc hai của 9

= 3

• Các hàm so sánh các số <, >, <=, >=, = và /=, cho kết quả là T hoặc NIL

Ví dụ:

>(< 4 5)

= T

>(> 4 (* 2 3))

= NIL

• (EQ s1 s2) so sánh xem hai ký hiệu s1 và s2 có giống nhau hay không?

Ví dụ:

>(eq ‘tuong ‘tuong)

= T

>(eq ‘tuong ‘duong)

= NIL

Click to buy NOW!

P

w

w

w

.d ocu -tra c k. co

P

w w

w d ocu -tra c k. co

m

Trang 3

= 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

- (CAR L) nhận vào danh sách L, trả về phần tử đầu tiên của L

Ví du:

> (CAR '(1 2 3))

= 1

> (CAR 3) Error: bad argument type - 3

>(CAR nil)

= NIL

> (CAR '((a b) 1 2 3))

= (A B)

- (CDR L) nhận vào danh sách L, trả về một danh sách bằng phần còn lại của danh sách L sau khi bỏ đi phần tử đầu tiên

Ví dụ:

>(cdr '(1 2 3))

= (2 3)

>(cdr 3) Error: bad argument type - 3

>(cdr nil)

= NIL

>(cdr '(1))

= NIL

>(CAR (CDR ‘(a b c)))

= B

Trang 4

Ngôn ngữ lập trình Chương VIII: Lập trình hàm

- 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)

Ví du:

>(list 1 2)

= (1 2)

>(list 'a 'b)

= (A B)

>(list 'a 'b (+ 2 3 5))

= (A B 10)

• Các vị từ kiểm tra

- (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)

Click to buy NOW!

P

w

w

w

.d ocu -tra c k. co

P

w w

w d ocu -tra c k. co

m

Trang 5

>(symbolp 'a)

= T

>(listp '(1 2))

= T

>(symbolp NIL)

= T

>(listp NIL)

= T

>(null NIL)

= T

>(null ‘(a b))

= NIL

>(null 10)

= NIL

• Các hàm logic AND, OR và NOT

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í dụ:

>(AND (> 3 2) (= 3 2) (+ 3 2))

= NIL

>(AND (> 3 2) (- 3 2) (+ 3 2))

= 5

dừng và trả về kết quả là giá trị của biểu thức đó Nếu tất cả các biểu thức đều là NIL thì trả về kết quả là NIL

Ví du:

>(OR (= 3 2) (+ 2 1) (list 1 2))

= 3

>(OR (= 2 1) (Cdr ‘(a) ) (listp 3 ))

= NIL

- (NOT E) nhận vào biểu thức E Nếu E khác NIL thì trả về kết quả là NIL, ngược lại thì trả về kết quả là T

Ngày đăng: 24/07/2014, 14:21

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w