2. Giới thiệu chung
3.7.2. Rẽ nhánh chương trình
3.7.2.1 Hàm IF
• (If biểu thức điều kiện biểu thức) - Dạng IF THEN. Nếu biểu thức điều kiện đúng thì biểu thức sẽ được thực hiện. Ngược lại biểu thức sẽ không được thực hiện.
• Ví dụ: viết chương trình cho phép người dùng lựa chọn vẽ hoặc không vẽ đường tròn
(defun C:duongtron () (initget 1 “Yes No”)
(if (= “Yes” (getkword “\n Co ve vong tron khog <Y/N>:”));biểu thức kiểm tra
(command “.Circle”);biểu thức )
(princ) )
• (If biểu thức điều kiện biểu thức Else_biểu thức) - Dạng IF THEN ELSE. Nếu biểu thức điều kiện đúng thì biểu thức được thực hiện. Ngược lại Else_biểu thức được thực hiện.
• Ví dụ: chương trình kiểm tra số nhập vào có là số hay không (defun number (a / b)
(if
(numberp a) ;biểu thức điều kiện (princ (setq b (- a 32))) ;biểu thức
(princ “\n Khong phai dang so”) ;else_biểu thức )
(princ) )
3.7.2.1 Hàm Progn
• Hàm này dùng để nhóm nhiều biểu thức thành một biểu thức duy nhất dùng trong hàm If. • Cú pháp: (Progn biểu thức…..) • Ví dụ: (Progn (setq Z 12) (Setq X 2) (setq Y (- Z X))) 3.7.3 Các hàm logic a. Hàm AND • Cú pháp: (And biểu thức….) • Ví dụ:
(setq a 10 b”ham” c nil d ‘(0 0) e 20.12)
(and (> a 0) (<a 20)) ;trả về T (and (> a 0) (= a 12) (<a 20)) ;trả về nil b. Hàm OR
• Cú pháp: (Or biểu thức…)
• Ví dụ:
(setq a nil b nil c 20)
(or (> c -10) (< c 30)) ;trả về T (or a b) ;trả về nil c. Hàm NOT • Cú pháp: (Not phần tử) • Ví dụ: (not nil) ; trả về T (not T) ; trả về nil (not (and 1 3)) ; trả về nil
3.8. Vòng lặp
3.8.1 Hàm Repeat
• Hàm Repeat tạo ra vòng lặp với số lần nhất định.
• Cú pháp: (Repeat num expr)
Num: là một số nguyên dương, xác định số lần định giá trị các biểu thức expr. Hàm trả về giá trị cuối cùng trong vòng lặp.
Nếu Num là số âm hoặc 0 thì hàm repeat không định giá trị các biểu thức và trả về nil. • Ví dụ: (setq x 10 y 4) (repeat 10 (setq x (+ 2 x)) (setq y (+5 y)) ) ; hàm trả về 54 3.8.2 Hàm While
• Hàm while tạo ra vòng lặp có điều kiện. Vòng lặp sẽ kết thúc khi điều kiện lặp không còn thoả mãn.
• Cú pháp: (while đk lặp biểu thức)
• Khi điều kiện lặp vẫn trả về giá trị khác nil, các biểu thức sẽ tiếp tục được định giá trị. Quá trình được thực hiện khi điều kiện lặp trả về giá trị nil.
• Ví dụ: vòng lặp sẽ kết thúc khi nhập vào một số âm (setq n 0)
(while (not (minusp n))
(setq n (getint “\n Nhap vao mot so bat ky khong am”)) )
3.8.3 Hàm Append
• Hàm Append gộp nhiều danh sách thành một danh sách duy nhất. Hàm này có ý nghĩa là thêm các phần tử vào vị trí cuối cùng của một danh sách có sẵn.
• Cú pháp: (Append biểu thức)
• Sử dụng hàm Append trong vòng lặp while, ta có thể bổ sung thêm phần tử vào một danh sách có sẵn.
• Ví dụ: nhập vào số thực bổ sung cho danh sách realnum, dừng khi ấn Enter (setq realnum nil)
) 3.8.4 Hàm 1+ • Cú pháp: (1+ num) 3.8.5 Hàm 1- • Cú pháp: (1- num) • Ví dụ: (1- 4) ; trả về 3