Bắt đầu với LISP

Một phần của tài liệu THỰC HÀNH NGÔN NGỮ LẬP TRÌNH (Trang 38 - 39)

Đối với phần lớn ngôn ngữ lập trình, cách tốt nhất để học là bắt đầu với một chương trình đơn giản. Trong phần này, chúng ta sẽ làm quen với một số khái niệm cơ bản trong LISP.

Để bắt đầu, chúng ta tưởng tượng ta đang ngồi trước màn hình vi tính. Khi LISP không thực hiện một thao tác gì, nó ở trạng thái tĩnh. Khi đó, LISP hiển thị dấu nhắc cho biết nó đang đợi chúng ta gõ lệnh vào. Trong phần lớn các hệ COMMON LISP hiện nay, dấu nhắc chương trình là dấu sao.

*

Những từđi sau dấu chấm phẩy là ghi chú chèn vào chương trình. Tất cả những từ còn lại sau dấu ; trong cùng dòng sẽ không được LISP xử lý.

Chúng ta khởi đầu với một ví dụđơn giản minh họa khả năng của LISP về xử lý số học

* (+ 3.14 2.71) 5.85 5.85

Giả sử chúng ta muốn lưu trữ một số thông tin cần thiết của một người. Ví dụ, chúng ta muốn ghi nhớ danh sách bạn bè, kẻ thù, … của một người nào đó. Chúng ta dùng SETF (viết tắt của set field).

* (setf friends ‘(dick jane sally)) (DICK JANE SALLY)

* friends

(DICK JANE SALLY)

* (setf enemies ‘(troll grinch ghost)) (TROLL GRINCH GHOST)

* enemies

(TROLL GRINCH GHOST)

Hai danh sách trên là những thông tin động và có thể thay đổi. Ví dụ như ghost không còn là kẻ thù mà trở thành bạn bè. Khi đó cần cập nhật lại hai danh sách.

* (setf enemies (remove ‘ghost enemies)) (TROLL GRINCH)

* (setf friends (cons ‘ghost friends)) (GHOST DICK JANE SALLY)

(TROLL GRINCH) * friends * friends

(GHOST DICK JANE SALLY)

Bây giờ chúng ta sẽ xem làm thế nào định nghĩa một hàm làm công việc tương tự. Ta định nghĩa hàm tên NEWFRIEND thực hiện công việc đổi một người từ kẻ thù thành bạn bè.

(defun newfriend (name)

(setf enemies (remove name enemies)) (setf friends (cons name friends)) )

Với hàm NEWFRIEND, việc đổi tình trạng của GHOST từ kẻ thù thành bạn bè có thể thực hiện bằng một dòng lệnh đơn giản.

* (newfriend ‘ghost)

Một phần của tài liệu THỰC HÀNH NGÔN NGỮ LẬP TRÌNH (Trang 38 - 39)