【文章內(nèi)容簡介】
表的 測試式 進行求值,如果不為 nil,則對表中的表達式進行求值,并把最后一項表達 式的值作為返回值返回。 說明: Cond函數(shù)的自變量無限制。每個自變量都是一個表 . 自變量表中可以只有測試式。 測試式可以是任何類型的常數(shù)、變量或表達式。 測試式后的表達式的個數(shù)無限制。表達式可以是任何類型的常數(shù)、變量或表達式。 常用邏輯常數(shù) T作為最后一個表的測試式,以防止“ 漏底”現(xiàn)象。 例 1: 實現(xiàn)分段函數(shù) yxx xx x???? ????????14 1 512 9 432.si n lnxxx? ?? ? ?? ?11 00 1,當 ,當 ,當 ,其它 ( d e f u n m 1 ( ) ( s e t q x ( g e t r e a l ?? \ n E n t e r a r e a l n u m b e r : ‘‘ ) ) ( c o n d ( ( x 1 ) ( s e t q y 1 . 0 ) )( ( = x 0 . 0 ) ( s e t q y ( + ( * 4 . 0 x x x ) 1 . 5 ) ) )( ( x 1 . 0 ) ( s e t q y ( + ( s i n x ) ( l o g x ) ) )( T ( s e t q y ( ( * 1 2 . 0 x x ) ( * 9 . 0 x ) 4 . 0 ) ) ) ) ( p r i n t y ) ( p r i n c ))例 2: (cond ((minusp a) (log ( a))) ((zerop a)) (T (log a)) ) 二、條件函數(shù)( IF) 格式: (if 測試式 表達式 1 [表達式 2]) 功能: 對 測試式 進行求值,如果不為 nil,則執(zhí)行表達式 1,否則執(zhí)行表達式 2。 說明: 測試式可以是任何類型的常數(shù)、變量或表達式。 表達式也可以是任何類型的常數(shù)。變量或表達式。 表達式 2為任選項,如果沒有,當測試式為 nil時,返 回 nil。 IF函數(shù)的自變量最多只能有三個。 例: 如果一個三位數(shù)等于它每一個數(shù)字的立方和,則此數(shù)稱為“水仙花數(shù)”,例如 153。編寫程序,判斷從鍵 盤輸入的一個數(shù)是否是一個水仙花數(shù),是,則打印 YES,否則,打印 NO。 ( d e f u n e x a 1 ( ) ( s e t q N ( g e t i n t ?? \ n E n t e r a n u m b e r : ‘‘ ) ) ( s e t q N 1 ( / N 1 0 0 ) ) ( s e t q N 2 ( / ( N ( * N 1 1 0 0 ) ) 1 0 ) ) ( s e t q N 3 ( r e m N 1 0 ) ) ( i f ( = ( + ( * N 1 N 1 N 1 ) ( * N 2 N 2 N 2 ) ( * N 3 N 3 N 3 ) ) N )( p r o g n ( p r i n t ?? y e s ‘‘ ) ( p r i n c ?? \ 0 0 7 ‘‘ ) )( p r i n t ?? n o ‘‘ ) ))第三節(jié) 循環(huán)函數(shù) 一、 WHILE函數(shù) 格式: (while 測試式 表達式 1 ... 表達式 n) 功能: 先計算測試式的值,如果不為 nil,則執(zhí)行后面的表達式,然后重新計算測試式,一直循環(huán)到測試式為 nil為止,然后返回最后計算的表達式的值。 說明: 循環(huán)體的表達式個數(shù)無限制。 循環(huán)可以嵌套。 舉例:編程繪制 y=sin(x)在 [0, 2π]區(qū)間的曲線。 。lp——曲線的左端點 。n——函數(shù)在一個周期內(nèi)的正弦波數(shù) (defun drawsin (/ lp lpx lpy n x step) (initget 1) (setq lp (getpoint ―\n起點 :) lpx (car lp) lpy (cadr lp) ) (initget 7) (setq n (getint ―\n輸入正弦波數(shù) :)) (setq x 0 step ) (mand line lp (list (+ lpx (* 2 pi)) lpy) ) (mand line (list lpx (+ lpy 2)) (list lpx ( lpy 2)) ) (mand pline) (while ( x (* 2 pi)) (mand (list (+ lpx x) (+ lpy (sin (* n x))))) (setq x (+ x step)) )。while (mand) (princ) )。defun 二、 REPEAT函數(shù) 格式: (repeat 次數(shù) 表達式 1 ... 表達式 n) 功能: 對循環(huán)體中的每一個表達式進行指定次數(shù)的求值計算,并返回最后一個表達式的值。 舉例: 1 、 刪 除 最 后 畫 出 的 5 個 實 體( r e p e a t 5 ( c o m m a n d ?? e r a s e ‘‘ ?? L ‘‘ ?? ‘‘ ) )2 、 輸 入 1 0 個 整 數(shù) , 打 印 出 其 中 能 夠 被 3 整 除 的 數(shù)( r e p e a t 1 0 ( s e t q n ( g e t i n t ?? \ n I n t e g e r : ‘‘ ) )( i f ( = ( r e m n 3 ) 0 ) ( p r i n t n ) ))設當前目錄下有一個圖形文件為 ,根據(jù)用戶 要求的個數(shù),每個插入圖形的方向角,按原大小插入到屏幕上。 ( d e f u n