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

Lý thuyết và bài tập thực hành golden common lisp đh bách khoa TP HCM

11 8 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 369,41 KB

Nội dung

BK TP.HCM ĐẠI HỌC BÁCH KHOA TPHCM KHOA CÔNG NGHỆ THƠNG TIN MƠN HỌC : NGƠN NGỮ LẬP TRÌNH LÝ THUYẾT VÀ BÀI TẬP THỰC HÀNH GOLDEN COMMON LISP TPHCM, Tháng 10 – 2004 LÝ THUYẾT VÀ BÀI TẬP THỰC HÀNH GOLDEN COMMON LISP Mục lục LÝ THUYẾT VÀ BÀI TẬP THỰC HÀNH GOLDEN COMMON LISP LÝ THUYẾT VÀ BÀI TẬP THỰC HÀNH GOLDEN COMMON LISP Mục lục Lý thuyết LISP I Giới thiệu II Cài đặt sử dụng gcLisp III Đặc điểm gcLisp IV Lập trình với gcLisp V Nâng cao 17 VI Tổng kết 20 Lý thuyết LISP I Giới thiệu - LISP – ngôn ngữ lập trình có tên lấy từ List Processing - Vào mùa hè năm 1956, Allen Newell, J.C Shaw, Herbert Simon phát triển xử lý Lisp (Lisp processing) tạo nên ngôn ngữ xử lý thông tin IPL (Information Processing Language) – ngôn ngữ trừu tượng thao tác symbols danh sách - Khi FORTRAN xây dựng, McCarthy thiết kế ngôn ngữ – LISP (Lisp Processor), lấy từ ý tưởng IPL, FORTRAN FLPL chạy IBM704 - Vào thập niên 70, Guy Steele Gerald Sussman định Scheme, kết hợp Algol Lisp - Vào đầu thập niên 80, có khoảng 12 hệ Lisp khác Các hệ Lisp khơng tương thích Do đó, dự án nhằm định ngơn ngữ Lisp chung hình thành – dự án kết hợp đặc tính tốt hệ Lisp thời vào thể thống - Phiên Common Lisp chuẩn đời năm 1984 – kết hợp nhiều ý tưởng ngơn ngữ lập trình thơng dịch biên dịch hàm, dọn rác (garbage collection), gọi hàm đệ quy, theo vết dị lỗi (tracing and debugging) trình soạn thảo theo cú pháp II Cài đặt sử dụng gcLisp II.1 Cài đặt - Chép tập tin GC LISP.rar vào giải nén thư mục \GC LISP - Vào thư mục \GC LISP, chạy tập tin caidat.bat để cài gcLisp vào đĩa cứng - Vào thư mụcC:\Gclisp, chạy tập tin Gclisp.exe để bắt đầu II.2 Môi trường Gclisp Chúng ta thấy cửa sổ gclisp sau: Trang II.3 Phím nóng - -H to get help - -E to enter the LISP Explorer - -E to enter the editor - to exit editor into Lisp Environment - to load a file into the editor - to save a file - to save a file as another name II.4 Dòng lệnh Đánh dòng lệnh theo sau ký hiệu * II.5 Lệnh tiền tố (Prefix command) - Mọi lệnh nằm dấu ngoặc đơn ( ) - Lisp đánh giá đánh dấu ) cuối Trang (function ) - Lệnh có dạng tiền tố: II.6 - Load file vào gclisp Ví dụ: load first.lsp * (load ‘first) III Đặc điểm gcLisp III.1 Các đặc tính ngôn ngữ - Từ John McCarthy (MIT) nghĩ năm 1958, LISP tinh chế dần đến version 1.5 sử sụng lâu dài sau - Lisp ngôn ngữ hướng chức (functional language hay applicative), dùng lối ký hiệu tiền tố (prefix) dấu ngoặc đơn: f(x,y, z) ký hiệu (f x y z) Cũng x+y ký hiệu (+ x y) Bt - π  sin  x +  viết Lisp ? 2  ( sin ( + ( * x ) ( / pi 2) ) ) Lisp ngôn ngữ thông dịch (interpreted language) Ngôn ngữ biên dịch Ngôn ngữ thông dịch câu lệnh (instructions) Biểu thức biên dịch chương trình thực thi thực thi kết đánh giá trả lời Trang Kết Ví dụ: *(+ 4) *(+ (* 4)(- 2)) 15 *4 III.2 Kiểu liệu Lisp ngôn ngữ đặc trưng cho việc xử lý danh sách Chương trình biểu diễn danh sách thao tác liệu (+ (* 4) (- 2)) chương trình: hàm + áp dụng vào hai đối số liệu: danh sách gồm ba thành phần Ở top-level, đóng vai trị đối số hàm, danh sách xem áp dụng hàm Lisp thao tác loại liệu:  Biểu thức expression::= atom | list  Danh sách list::= (expression1 expressionn) Danh sách chuỗi biểu thức ngăn cách khoảng trắng, tất đặt dấu ngoặc đơn  Atoms atom::= số | chuỗi ký tự | symbols  Symbol (~ identifier): từ tạo ký tự bất kỳ, ngoại trừ ( khoảng trắng ) ‘ ` “ ;  Boolean: Lisp khơng có kiểu boolean Trong Lisp, nil mang giá trị logic sai tất biểu thức khác có giá trị Ký hiệu t dùng để trị logic theo mặc định Các kiểu liệu xếp theo cấp bậc sau: expression list atom Trang symbol list nil number interger real Biến Lisp khơng có kiểu liệu , biến có nhiều kiểu liệu khác Ví dụ: *(setq a ‘(1 3)) (1 3) *a (1 3) *(setq a 2) *a Kiểu gán cho liệu khơng phải cho biến Ta biết kiểu liệu biến nhờ vào vị từ (prédicat) (numberp E) (stringp E) (listp E) (null E) (atom E) ;; ;; ;; ;; ;; trả trả trả trả trả về về đúng đúng nếu nếu E E E E E là là số chuỗi ký tự danh sách danh sách rỗng atom III.3 Vị từ (Prédicats)  Vị từ kiểu (xem phía trên)  Vị từ so sánh số: < > >= 5) NIL IV Lập trình với gcLisp IV.1 Các hàm xử lý danh sách IV.1.1 FIRST REST – CAR CDR  FIRST trả phần tử danh sách  REST trả danh sách theo sau phần tử Cho đến gần đây, phần lớn lập trình viên LISP dùng CAR CDR thay cho FIRST REST Ngoài chức tương tự, CAR CDR kết hợp với nhau.thành dạng phức hợp CxxR, CxxxR hay CxxxxR Mỗi x tượng trưng cho A – CAR hay D – CDR Trang Quy ước: *(car nil) NIL *(cdr nil) NIL Bài tập: Lấy phần tử thứ ba danh sách (car (cdr (cdr l))) viết: (caddr l) CAR CDR kết hợp với đến mức độ Ví dụ: (caadr l) = (car (car (cdr l))) (cadar l) = (car (cdr (car l))) Làm trích chuỗi example danh sách: L=((this) is (an (example)) more complex) L=((this) (cdr l) = (cdr (cdr (car (cdr (cdr (car (car (cdr (car (car is (an (example)) more complex) (is (an (example)) more complex) l)) = ((an (example)) more complex) (cdr l))) = (an (example)) (cdr (cdr l)))) = ((example)) (car (cdr (cdr l))))) = (example) (cdr (car (cdr (cdr l)))))) = example IV.1.2 CONS, APPEND, LIST  LIST trả danh sách đối số *(list ‘a (+ 1) ‘c) (a c) *(list ‘(a b) ‘(c d)) ((a b) (c d)) *(list ‘a nil) (a nil)  CONS thêm phần tử vào đầu danh sách (cons ‘a ‘(2 3)) (a 3) (cons `(a b) ‘(c d)) ((ab) c d) (list `a nil) (a) (CAR (CONS a l)) = a (CDR (CONS a l)) = l Trang Bt Cho biết giá trị biểu thức sau: (cons ‘a (cons ‘b (cons ‘c nil))) (cons ‘a (cons ‘b (cons ‘c nil))) = (cons ‘a (cons ‘b ‘(c))) = (cons ‘a ‘(b c)) = (a b c) (list (car ‘(car ((1) (2)))) (cdr (cdr ‘((1) (2))))) (list (car ‘(car ((1) (2)))) (cdr (cdr ‘((1) (2))))) = (list ‘car (cdr (cdr ‘((1) (2))))) = (list ‘car (cdr ((2)))) = (list ‘car nil) = (list ‘car nil) = (car nil)  APPEND kết hợp phần tử danh sách cho (setq l1 ‘(a b) l2 ‘(x y)) = (x y) (append l1 l2) = (a b x y) (append l1 ‘() l2 ‘()) = (a b x y) IV.1.3 NTHCDR, BUTLAST LAST  NTHCDR cắt n phần tử đầu danh sách, với thông số đầu số phần tử cần cắt *(setq l ‘(a b c d e)) (a b c d e) *(nthcdr l) (c d e)  BUTLAST cắt n phần tử cuối danh sách, với thông số đầu danh sách, thông số thứ hai số phần tử cần cắt *(setq l ‘(a b c d e)) (a b c d e) *(butlast l 2) (a b c) Tải FULL (23 trang): https://bit.ly/3zfvuqZ Dự phòng: fb.com/TaiHo123doc.net *(butlast l 10) NIL  LAST trả danh sách tất phần tử trừ phần tử cuối bị loại *(setq l ‘(a b c d e) l1 ‘((a b) (c d))) ((a b) (c d)) Trang *(last l) (e) *(last l1) ((c d)) IV.1.4 LENGTH REVERSE  LENGTH trả chiều dài chuỗi *(setq l ‘(a b c d e)) (a b c d e) *(length l)  REVERSE trả chuỗi nghịch đảo *(setq l ‘(a b c d e)) (a b c d e) *(reverse l) (e d c b a) IV.1.5 ASSOC  ASSOC gắn với danh sách – association list hay gọi a-list Key Key (setfl sarah ‘((height 54) (weight 4.4))) Value Value height weight khóa danh sách gán cho SARAH; 54 4.4 giá trị biểu thị met kilograms  Có thể lấy thành phần từ danh sách dùng ASSOC, khóa, danh sách liên kết: (ASSOC ) Ví dụ: (assoc ‘weight sarah) (WEIGHT 4.4) Lưu ý ASSOC trả tồn danh sách tương ứng với khóa Trong trường hợp có nhiều danh sách khóa, danh sách trả IV.1.6 LISP cung cấp thao tác Integer, Ratio, Floating-Point Numbers, *(/ 1.234321 1.111) 1.111 *(/ 27 9) Trang 3136967 ...LÝ THUYẾT VÀ BÀI TẬP THỰC HÀNH GOLDEN COMMON LISP Mục lục LÝ THUYẾT VÀ BÀI TẬP THỰC HÀNH GOLDEN COMMON LISP LÝ THUYẾT VÀ BÀI TẬP THỰC HÀNH GOLDEN COMMON LISP Mục lục... gcLisp II.1 Cài đặt - Chép tập tin GC LISP. rar vào giải nén thư mục GC LISP - Vào thư mục GC LISP, chạy tập tin caidat.bat để cài gcLisp vào đĩa cứng - Vào thư mụcC:Gclisp, chạy tập tin Gclisp.exe... 20 Lý thuyết LISP I Giới thiệu - LISP – ngơn ngữ lập trình có tên lấy từ List Processing - Vào mùa hè năm 1956, Allen Newell, J.C Shaw, Herbert Simon phát triển xử lý Lisp (Lisp processing)

Ngày đăng: 09/09/2021, 14:37

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

TÀI LIỆU LIÊN QUAN

w