Bài giảng Ngôn ngữ lập trình - Chương 8 - Lập trình hàm
Trang 1CHƯƠNG 8:
LẬP TRÌNH HÀM
Ngôn ngữ lập trình hàm
• Giới thiệu.
• Hàm toán học.
• Dạng hàm.
• Bản chất của lập trình hàm.
Ngôn ngữ LISP
Trang 2NGÔN NGỮ LISP
Giới thiệu
Các khái niệm cơ bản
Các hàm
Đệ quy
Biến toàn cục và biến cục bộ
Các hàm nhập xuất
Hướng dẫn sử dụng Lisp
Trang 3LISP: GIỚI THIỆU
Được J MAC CARTHY viết năm 1958
Phát triển mạnh vào đầu những năm
80
Cú pháp đơn gỉan
Là một ngôn ngữ mạnh
Mềm dẻo và dễ phát triển
Áp dụng trong lĩnh vực trí tuệ nhân tạo
Trang 4CÁC KHÁI NIỆM CƠ BẢN
Nguyên tử (Atom): Số, kí hiệu
Danh sách: Dã̃y có thứ tự các nguyên tử hoặc danh sách, nằm trong cặp dấu ngoặc đơn ()
Biểu thức và nguyên tắc lượng giá:
• Số.
• Ký hiệu.
• Danh sách.
Trang 5HÀM ĐỊNH NGHĨA TRƯỚC
• Các hàm số học: +, -, *, /, 1+,
1-• Các hàm so sánh: <, >, <=, >=, =, eq.
• Các hàm thao tác trên danh sách: CAR,
CDR, CONS và LIST.
• Các vị từ kiểm tra: (atom a), (numberp n),
(listp l), (symbol s),
• Các hàm logic AND, OR, NOT.
• Các hàm điều khiển IF, COND, PROGN,
Trang 6HÀM DO NGƯỜI DÙNG
ĐỊNH NGHĨA
Cú pháp:
(defun <tên hàm> (Các tham số hình thức)
<biểu thức>
)
Ví dụ:
(defun binh_phuong (n)
(* n n)
)
(defun lap_phuong (n)
(* n (binh_phuong n))
Trang 7ĐỆ QUY
Một trường hợp “nguyên tố” để kết thúc việc gọi đệ quy.
Lời gọi đệ quy phải bao hàm yếu tố dẫn đến trường hợp “nguyên tố”.
Ví du: Tính n giai thừa
(defun giai_thua (n)
(if (= n 0) 1 ; Trường hợp “nguyên tố”
(* n (giai_thua (1- n)))
)
Trang 8BIẾN TOÀN CỤC &
BIẾN CỤC BỘ
(SETQ <tên biến> <biểu thức>)
(LET ((var1 E1) (var2 E2) (vark Ek)) Ek+1
En)
Hạn chế sử dụng biến toàn cục
Trang 9CÁC HÀM NHẬP XUẤT
• LOAD( <tên tập tin>)
• (READ)
• (PRINT e)
• (PRINC e)
• (TERPRI)
Trang 10HƯỚNG DẪN SỬ DỤNG
CHƯƠNG TRÌNH
Soạn thảo chương trình:
• Sử dụng bất kỳ editor nào.
• Phầ̀̀n mở rộng LSP.
• Trong một tập tin, có thể định nghĩa nhiều hàm.
Gọi thực hiện XLISP:
• Trong Windows 3.x.
• Trong Windows 9x.
• Sử dụng menu File-Open/Load để mở tập tin