- 1 BK TP.HCM Thực hành Ngôn ngữlập trình Nguyễn ThịTrúc ViênKhoa Công Nghệ Thông TinĐại Học Bách Khoa TPHCM BK TP.HCM Slide 2/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp Nộidung 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ậptrình hướng đối tượng với SmallTalk: Vwin 2 BK TP.HCM Slide 3/67 Nguy ễ 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 JohnMcCarthy(MIT. - Hai thếhệ đầu tiên ra đời ngay sau đó: MacLisp và InterLisp Đầu thập niên 80, có12hệLisp khác nhau CommonLispchuẩn ra đời năm 1984Franz-LispZeta-Lisp BK TP.HCM Slide 4/67 Nguy ễ 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 3 BK TP.HCM Slide 5/67 Nguy ễ 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 version 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. - x BK TP.HCM Slide 6/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp Giải đáp bài tập (sin. - 4 BK TP.HCM Slide 7/67 Nguy ễ 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/67 Nguy ễ 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. - 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 5 BK TP.HCM Slide 9/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp List Processing (2. - BK TP.HCM Slide 10/67 Nguy ễ 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. - danh sách được đánh giá7. - 3 4) 6 BK TP.HCM Slide 11/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp Symbol (1. - Tên hàm Dữliệu: chuỗi ký tựhay số Tên biến BK TP.HCM Slide 12/67 Nguy ễ 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 * exampleUnbound variable: EXAMPLE* (setf example 3)3. - example 4)7* ’exampleexample 9 BK TP.HCM Slide 17/67 Nguy ễ 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. - Vídụ: a-symbol Danh sách (list). - Ký tự: ‘c Mảng: ‘(1 2 3) BK TP.HCM Slide 18/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp Phân cấp dữliệu expressionlistatomsymbolrealnillist...number......interger 10 BK TP.HCM Slide 19/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp Ngôn ngữ động (dynamic type. - Cùng một biến cóthểcónhiều kiểu dữ liệu khác nhau BK TP.HCM Slide 20/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp Vídụ * (setf a a(1 2 3)* (setf a 2)2* a2 11 BK TP.HCM Slide 21/67 Nguy ễ 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/67 Nguy ễ 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 18 BK TP.HCM Slide 35/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp ASSOC (2. - Lấy các thành phần từmột danh sách. - (assoc ‘weight sarah)(WEIGHT 4.4) BK TP.HCM Slide 36/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp ASSOC (3. - Thêm một thành phần mới vào danh sách. - BOBBY) (HEIGHT 0.74) (WEIGHT 6.4)) 19 BK TP.HCM Slide 37/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp Định nghĩa hàm * (defun square (x. - ABS BK TP.HCM Slide 38/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp Vídụ: Tính giai thừa. - Bài tập: Viết hàm in ra phần tửthứn trong danh sách. - 20 BK TP.HCM Slide 39/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp ‘Exp làcách viết tắt của ( quote Exp. - setf c ‘a)a BK TP.HCM Slide 40/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp Các câu lệnh điều kiện (1. - (if (numberp 1) ‘(a number) ‘(not a number))(A NUMBER)* (if (numberp ‘a) ‘(a number) ‘(not a number))(NOT A NUMBER) 32 BK TP.HCM Slide 63/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp Một sốphím tắt -Hgiúp đỡ -EvàoLISP Explorer -E vào cửa sổsoạn thảo GMACS rời khỏi GMACS vàtrởvềLisp loadmộtfile vàoGMACS lưumộtfile lưufilevới tên khác BK TP.HCM Slide 64/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp Dòng lệnh Gõ thửcác lệnh sau: 33 BK TP.HCM Slide 65/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp GMAC editor window Nhấn-E đểvào trình soạn thảo để lưu fileand trởlạiGcLisp BK TP.HCM Slide 66/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp Load file vào GcLisp * (load ‘first. - Load file “first.lsp” 34 BK TP.HCM Slide 67/67 Nguy ễ n Th ị Trúc Viên Ngôn ng ữ l ậ p trình Lisp DEBUG
Xem thử không khả dụng, vui lòng xem tại trang nguồn hoặc xem
Tóm tắt