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

Thực Hành Ngôn Ngữ Lập Trình ĐH Bách Khoa TP.HCM

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

Đ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 34
Dung lượng 256,85 KB

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

Nội dung

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 Biểu diễn chương trình bằng

Trang 1

 Lập trình hàm với Lisp: GcLisp

 Lập trình logic với Prolog: B_Prolog

 Lập trình hướng đối tượng với SmallTalk:

Vwin

Trang 2

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 John McCarthy (MIT)

 Hai thế hệ đầu tiên ra đời ngay sau đó:

MacLisp và InterLisp

 Đầu thập niên 80, có 12 hệ Lisp khác nhau

 Common Lisp chuẩn ra đời năm 1984

Franz-Lisp Zeta-Lisp

 Education and intelligent support systems

 Speech and vision

Trang 3

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

BK

TP.HCM

Giải đáp bài tập

 (sin (+ (* 3 x) (/ pi 2)))

Trang 4

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

 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

 (+ (* 3 4) (- 5 2))

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

Trang 5

TP.HCM

Slide 9/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

 Để không đánh giá một danh sách, dùng

dấu ‘ đặt trước danh sách

* (+ 3 4) ; danh sách được đánh giá

7

* ‘(+ 3 4)

(+ 3 4)

Trang 6

TP.HCM

Slide 11/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

 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

Trang 7

TP.HCM

Slide 13/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

Trang 8

TP.HCM

Slide 15/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

Boolean

 Lisp không có kiểu dữ liệu Boolean

 nil biểu diễn giá trị logic sai, tất cả các biểu thức

khác biểu diễn trị logic đúng

 Biểu thức expression::= atom | list

 Danh sách list::=(expression 1 expression n )

 Atoms atom::= số|chuỗi ký tự|symbols

 Boolean T và nil

Trang 9

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

 Ký hiệu (symbol) Ví dụ: a-symbol

list

number

Trang 10

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)

 Biến không có kiểu dữ liệu định sẵn

(không khai báo)

 Cùng một biến có thể có nhiều kiểu dữ

Trang 11

TP.HCM

Slide 21/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

Trang 12

TP.HCM

Slide 23/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

Các vị từ trên số

ZEROP kiểm tra zero

PLUSP kiểm tra số dương

MINUSP kiểm tra số âm

ODDP kiểm tra số lẻ

EVENP kiểm tra số chẵn

Trang 13

TP.HCM

Slide 25/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

 eq hai đối số cùng là một symbol

 eql hai đối số cùng là một symbol

hay cùng một số

 equal hai đối số có cùng biểu thức

biểu diễn

Trang 14

TP.HCM

Slide 27/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

Các hàm so sánh (2)

 eq kiểm tra cùng địa chỉ bộ nhớ (các symbol

giống nhau thỏa điều này).

 eql kiểm tra thỏa eq hay không Nếu không,

kiểm tra là hai số cùng kiểu và cùng giá trị.

 equal kiểm tra thỏa eql hay không Nếu

không, xem đối số là hai danh sách và xem

Trang 15

TP.HCM

Slide 29/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

Trang 16

TP.HCM

Slide 31/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

Các hàm xử lý trên danh sách (1)

 FIRST và REST – CAR và CDR

 CONS, APPEND, LIST

Trang 17

TP.HCM

Slide 33/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

Trang 18

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:

 Ví dụ:

(ASSOC <key> <asociation list>)

* (setf sarah ‘((height 54) (weight 4.4)))

(ACONS <key><value><asociation list>)

* (setf Andrew ‘((height 74) (weight 6.4)))

((HEIGHT 0.74) (WEIGHT 6.4))

* (acons ‘nick ‘Bobby Andrew)

((NICK BOBBY) (HEIGHT 0.74) (WEIGHT 6.4))

Trang 19

TP.HCM

Slide 37/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

(defun fac(n)

(if (= n 0) 1

(* n fac (1- n)) ) )

Trang 20

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)

Trang 21

TP.HCM

Slide 41/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 (2.1)

 Câu lệnh COND

( cond (Test1 E1 …)

(Test2 E2 …) (Test3 E3 …)

… (Testn En …) ) (if Test1 (progn E1 …)

(if Test2 (progn E2 …)

(if Test3 (progn E3 …)

* (cond ((numberp x) ‘(This is a number))

((symbolp x) ‘(This is a symbol)) ((listp x) ‘(This is a list))

)

(THIS IS A LIST)

Trang 22

TP.HCM

Slide 43/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 (3)

 (and E 1 E n ) sai nếu ít nhất một E i sai

 AND đánh giá từ trái → phải và dừng lại

khi gặp đối số sai

 Nếu mọi đối số đều đúng, AND trả về giá

trị của đối số cuối cùng

Trang 23

TP.HCM

Slide 45/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

Các trường hợp điều kiện (1.2)

Trang 24

TP.HCM

Slide 47/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

Các trường hợp điều kiện (2.2)

wrong type argument

* (or (symbolp x) (list x))

 AND, OR trả về giá trị cuối cùng tính được

 NOT đơn giản đổi nonNIL→NIL và NIL→T

Trang 25

TP.HCM

Slide 49/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

Các dạng đặc biệt (1)

 Toán tử PROG1 và PROGN

 ( prog1 E 1 E n ) đánh giá tuần tự các biểu

thức E 1 , , E n từ trái sang phải và kết quả

trả về là giá trị của biểu thức E 1

 ( progn E 1 E n ) đánh giá tuần tự các biểu

thức E 1 , , E n từ trái sang phải và kết quả

trả về là giá trị của biểu thức E n

Trang 26

TP.HCM

Slide 51/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

Biến cục bộ (1)

 Toán tử let

 ( let ((var 1 E 1 ) … (var m E m )) E m+1 … E n )

 Ta gán cho mỗi biến giá trị của biểu thức

tương ứng, sau đó đánh giá:

 ( progn expm+1 … expn)

Trang 27

TP.HCM

Slide 53/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

* (bar 4)

5

 Các liên kết được thực hiện song song

Trang 28

TP.HCM

Slide 55/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

 Thân vòng lặp <body> được thực hiện n lần,

giá trị của <result form> là kết quả cần tính

(dotimes (<count>

<upper-bound-form>

<result form>)

<body>)

Trang 29

TP.HCM

Slide 57/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

 Ví dụ: Tính lũy thừa m n = m×m× ×m

DOTIMES (2)

(defun power(m n)

(let ((result 1))

(dotimes (count n result)

(setf result (* m result)) )

) )

BK

TP.HCM

DOLIST – Lặp trên danh sách

 list form được đánh giá → danh sách a 1 → a n

 element được gán từ a 1 → a n (n lần)

 Với mỗi giá trị a i , phần thân vòng lặp (body)

được đánh giá.

 Không có result form , DOLIST sẽ trả về NIL

(dolist (<element parameter >

<list form> <result form>)

<body>)

Trang 30

TP.HCM

Slide 59/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

Trang 31

TP.HCM

Slide 61/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

Startup gclisp

 Chạy từ file ‘C:\GcLisp\GcLisp.exe’

BK

TP.HCM

Môi trường GC-LISP

 Ta thấy cửa sổ GCLISP như sau:

Trang 32

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

 <Alt>-H giúp đỡ

 <Alt>-E vào LISP Explorer

 <Ctrl>-E vào cửa sổ soạn thảo GMACS

 <F1> rời khỏi GMACS và trở về Lisp

 <F8> load một file vào GMACS

Trang 33

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 <Ctrl>-E để vào trình soạn thảo

 <F9> để lưu file and <F1> trở lại GcLisp

Trang 34

TP.HCM

Slide 67/67 Nguyễn Thị Trúc Viên Ngôn ngữ lập trình Lisp

DEBUG

Ngày đăng: 30/10/2015, 17:40

TỪ KHÓA LIÊN QUAN

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

w