VisualLisp編程基礎(chǔ)教程ppt課件_第1頁
VisualLisp編程基礎(chǔ)教程ppt課件_第2頁
VisualLisp編程基礎(chǔ)教程ppt課件_第3頁
VisualLisp編程基礎(chǔ)教程ppt課件_第4頁
VisualLisp編程基礎(chǔ)教程ppt課件_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、2021/2/1,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,1,Visual Lisp 編程基礎(chǔ),華南理工大學(xué)化學(xué)與化工學(xué)院2016年LGFANGSCUT.EDU.CN 方利國,內(nèi)容提要,1、 Visual Lisp 語言特點(diǎn) 2、基本運(yùn)算 3、基本函數(shù) 4、 編程中常用的分支及條件判斷函數(shù) 5、常用的繪圖命令,2021/2/1,2,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,1、 Visual Lisp 語言特點(diǎn),1) AutoLISP屬解釋型語言,用戶編寫的程序源代碼直接由解釋器解釋并執(zhí)行,在執(zhí)行這種語言編寫的程序之前不需要中間步驟,用戶可以交互、獨(dú)立于其他部分地試驗(yàn)或驗(yàn)證程序段或程序語句。 (2)Auto

2、LISP 語言的另一個(gè)優(yōu)點(diǎn)是可移植性。AutoLISP 程序可以在運(yùn)行于多種支持平臺(tái)(如 Windows、DOS、UNIX、Macintosh等)上的 AutoCAD中執(zhí)行,與 CPU或操作系統(tǒng)無關(guān),也基本上與AutoCAD的版本無關(guān) (3)有別于其他編程語言,如變量沒有明確的類型,無需預(yù)先聲明變量,沒有數(shù)組、聯(lián)合、結(jié)構(gòu)及記錄,所有復(fù)雜的數(shù)據(jù)集均由表來表示和處理;沒有語句、關(guān)鍵詞以及運(yùn)算符,是函數(shù)定位的語言,其所有運(yùn)算都由函數(shù)調(diào)用完成。 (4)表是AutoLISP中一個(gè)重要的概念,所謂表是指在一對(duì)相匹配的左、右圓括號(hào)之間元素的有序集合。表中的每一項(xiàng)稱為表的元素,表中的元素可以是整數(shù)、實(shí)數(shù)、字符

3、串、符號(hào),也可以是另一個(gè)表。元素和元素之間要用空格隔開。 (+ 54 67) (* 34 2)(a b (12 45,2021/2/1,3,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,2、基本運(yùn)算,1)加法 格式:(+ .) 功能:求出所列數(shù)的總和,可以是正數(shù)或負(fù)數(shù) 實(shí)例 : (+ 70 30) 結(jié)果為100 (+ 15 -10 50) 結(jié)果為55 (+ -25 -20 90) 結(jié)果為45,2021/2/1,4,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,2、基本運(yùn)算,2)減法 格式: (- .) 功能: 求出第一個(gè)數(shù)逐次減去后面數(shù)的差 實(shí)例 (- 120 30 50) 結(jié)果為40 (- 15 -10) 結(jié)果為2

4、5 (- 15 -10 30) 結(jié)果為-5,2021/2/1,5,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,2、基本運(yùn)算,3)乘法 格式: (* .) 功能:求出所列數(shù)的乘積 實(shí)例: (* 20 30) 結(jié)果為600 (* 1.5 -10 2) 結(jié)果為-30 (* 2.5 20 -4) 結(jié)果為-80,2021/2/1,6,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,2、基本運(yùn)算,4)除法 格式: (/ .) 功能:求出第一個(gè)數(shù)逐次除以后面數(shù)的商 實(shí)例:(/ 10 ) 結(jié)果為10 (/ 110 2) 結(jié)果為55 (/ 5 50) 由于表中的兩個(gè)元素均為整型數(shù), 結(jié)果也為整型數(shù),故結(jié)果為0 (/ 5.0 50) 結(jié)

5、果為0.1 (/ 40 (/ 7 10) 系統(tǒng)顯示被0除,原因在于表 ( / 7 10)的值為0,2021/2/1,7,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,2、基本運(yùn)算,5)自然數(shù)求冪 格式: (exp ) 功能:求e的次冪值,e=2.71828 實(shí)例:(exp 2.0 ) 結(jié)果為7.3890561 (exp 0) 結(jié)果為1,2021/2/1,8,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,2、基本運(yùn)算,6)普通數(shù)求冪 格式: (expt ) 功能:求的 次方值 實(shí)例:(expt 3 3)結(jié)果為27 (expt 5 2)結(jié)果為25 (expt 2 4)結(jié)果為16 (expt 2 1.3)結(jié)果為 2.462

6、29,2021/2/1,9,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,2、基本運(yùn)算,7)求自然對(duì)數(shù) 格式: (log ) 功能:求的自然對(duì)數(shù),要求必須大于零 實(shí)例:(log 10.0) 返回2.3025851 (log 9) 返回 2.19722 (log 12) 返回 2.48491 (8)求平方根 格式: (sqrt ) 功能:求的平方根,要求必須大于零 實(shí)例:(sqrt 4.0) 返回2.0 (sqrt 12) 返回3.4641 (sqrt 15.0) 返回3.87298,2021/2/1,10,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,2、基本運(yùn)算,9)求絕對(duì)值 格式: (abs ) 功能:求的絕對(duì)值

7、; 實(shí)例:(abs -3) 結(jié)果為3 (abs 5) 結(jié)果為5 (abs -6.7) 結(jié)果為6.7 (10)求最大值 格式: (max . ) 功能:求, 的最大值 實(shí)例:(max 2 3 4 10) 結(jié)果為10 (max 5 2 3.6 6.9) 結(jié)果為6.9 (max -2 3 4 -10) 結(jié)果為4 ,一定要英文狀態(tài)下的括號(hào),2021/2/1,11,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,2、基本運(yùn)算,11)求最小值 格式: (min . ) 功能:求, 的最大值 實(shí)例:(min 2 3 4 10) 結(jié)果為2 (min 5 1.2 3.6 6.9) 結(jié)果為1.2 (min -2 3 4 -10

8、) 結(jié)果為-10 (12)求自然對(duì)數(shù) 格式: (log ) 功能:求的自然對(duì)數(shù),要求必須大于零 實(shí)例:(log 10.0) 返回2.3025851 (log 5) 返回 1.60944 (log 7) 返回 1.94591 (/ (log 0.1) (log 10) 返回 -1,2021/2/1,12,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,2、基本運(yùn)算,13)求余數(shù) 格式: (rem . ) 功能:求整除的余數(shù),若參數(shù)多于兩個(gè),則將整除后的余數(shù)再整除,求出余數(shù),依此類推。 實(shí)例:(rem 50 9 4) 返回1 (rem 55 7 5 3) 返回1 (rem 103 12 8 4) 返回3,202

9、1/2/1,13,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,2、基本運(yùn)算,14)綜合運(yùn)算 格式:(運(yùn)算符1 (運(yùn)算符2 ) (運(yùn)算符3 ) .) 功能:利用括號(hào)達(dá)到各種數(shù)據(jù)混合運(yùn)算的目的,要求先進(jìn)行括號(hào)內(nèi)的運(yùn)算,數(shù)據(jù)和括號(hào)嵌套可增加。 實(shí)例:(+ (/ 100 10) (- 20 8 (sqrt 4) 返回 20.0 (* (/ 100 10) (max 20 8 (sqrt 4) 5) 返回1000.0 (* (/ 100 10) (max 20 8 (log 4) 5 (- 65 (sin (/ pi 2) 返回64000.0,2021/2/1,14,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,3、基本函數(shù)

10、,1)正弦函數(shù)SIN 格式: (sin ) ,其中 用弧度表示 功能:求正弦值 實(shí)例:(sin (/ pi 2) 結(jié)果為1 (2)余弦函數(shù)COS 格式: (cos ) ,其中 用弧度表示 功能:求余弦值 實(shí)例:(cos (/ pi 2) 結(jié)果為0,2021/2/1,15,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,3、基本函數(shù),3)反正切函數(shù)ATAN 格式: (atan ) 功能:求反正切值,單位為弧度,為-/2,/2 實(shí)例:(atan 1) 結(jié)果為0.785398 , 即(/4) (atan -1) 結(jié)果為0.-785398 , 即(-/4) (atan 0) 結(jié)果為0 (atan 100000000

11、000) 結(jié)果為1.5708,接近/2,2021/2/1,16,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,3、基本函數(shù),4)取整函數(shù)FIX 格式: (fix ) 功能:求的整數(shù)部分,相當(dāng)于高級(jí)語言中的“INT(數(shù))”這個(gè)語句。 實(shí)例:(fix 8.8) 結(jié)果為8 (fix -8.8) 結(jié)果為-8 (fix 19) 結(jié)果為19 (5)實(shí)型化函數(shù)FLOAT 格式: (float ) 功能:求轉(zhuǎn)化為實(shí)型數(shù),不考慮該數(shù)原來的類型 實(shí)例:(float 13) 結(jié)果為13.0 (float 13.3) 結(jié)果為13.3 (float -23.3) 結(jié)果為-23.3,2021/2/1,17,華南理工大學(xué)化學(xué)與化工學(xué)院

12、方利國,3、基本函數(shù),6)賦值函數(shù)SETQ 格式:(setq .) 功能:將表達(dá)式的值賦給變量,變量和表達(dá)式需成對(duì)出現(xiàn) 實(shí)例: (setq a 10) 結(jié)果 a=10 (setq s “it” ) 結(jié)果 s=“it” (setq b 123 c 10 d 45) 結(jié)果 b=123 c=10 d=45 (setq t (+ 34 45) 結(jié)果 t=79 (setq P1 ( 34 45) 結(jié)果是P1點(diǎn)x軸的坐標(biāo)為34,y軸的坐標(biāo)為45,其中在表(34 45)前面加了單引號(hào)“ ”號(hào),是為了禁止對(duì)表(34 45)的求值,需要注意的是所有的單引號(hào)和雙引號(hào)必須在英文狀態(tài)下輸入,否則就會(huì)出現(xiàn)錯(cuò)誤。如果不用

13、“”,也可以用quote表示,例如用下面的小程序就可以繪制一條從(130,140)到(200,400)的直線。 (setq p1 (130 140) /確定點(diǎn)P1的坐標(biāo) (setq p2 (200 400) /確定點(diǎn)P2的坐標(biāo) (command “l(fā)ine” p1 p2 “”) /繪制從P1點(diǎn)到P2點(diǎn)的直線是AutoLISP程序中應(yīng)用程度較高的一個(gè)函數(shù),希望讀者引起注意,2021/2/1,18,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,3、基本函數(shù),7)取表中第一元素CAR函數(shù) 格式: (car ),表必須為引用表而非標(biāo)準(zhǔn)表,但可以是簡單表,也可以是嵌套表。 功能:提取的頂層第一個(gè)元素 實(shí)例:(car

14、 (1 3 5) 結(jié)果為1 (car ((1 3)6 5) 結(jié)果為(1 3) (8)取表中除第一元素外其它元素的CDR函數(shù) 格式: (cdr ),表必須為引用表而非標(biāo)準(zhǔn)表,但可以是簡單表,也可以是嵌套表。 功能:提取的除頂層第一個(gè)元素外的其它元素 實(shí)例:(cdr (1 3 5) 結(jié)果為(3 5) (cdr ((1 3)6 5) 結(jié)果為(6 5,2021/2/1,19,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,3、基本函數(shù),9)CAR和CDR的組合函數(shù) CAR和CDA可以任意組合,其組合深度可達(dá)4層,其執(zhí)行順序從右到左依此執(zhí)行,若搞錯(cuò)次序,其結(jié)果必然出錯(cuò)。4個(gè)層次的組合形式為:CAR、CXXR、CXXX

15、R,CXXXXR,其中X既可以是A也可以是D,例如: (cadr (2 (1 2 3) 34 ) 結(jié)果為(1 2 3) (caadr (2 (11 6) 2 3) 34 ) 結(jié)果為(11 6) (caaadr (2 (11 6) 2 3) 34 ) 結(jié)果為11 (caaddr (2 (11 6) 2 3) (3 4) ) 結(jié)果3,2021/2/1,20,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,3、基本函數(shù),10)LAST函數(shù) 格式: (last ),表必須為引用表而非標(biāo)準(zhǔn)表,但可以是簡單表,也可以是嵌套表。 功能:提取的頂層中最后一個(gè)元素 實(shí)例:(last (1 2 3) 結(jié)果為3 (last (1

16、2 3 (4 5) 結(jié)果為(4 5) (11)NTH函數(shù) 格式: (nth ),表必須為引用表而非標(biāo)準(zhǔn)表,但可以是簡單表,也可以是嵌套表。 功能:提取中第個(gè)元素,注意第一個(gè)元素的序號(hào)為0號(hào),依次類推。 實(shí)例:(nth 2 (2 3 (4 5) 5) 結(jié)果為(4 5) (nth 3 (2 3 (4 5) 5) 結(jié)果為5,2021/2/1,21,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,3、基本函數(shù),12)LIST函數(shù) 格式: (list ) 功能:將所有的按原位置構(gòu)成新表,可用于確定點(diǎn)的坐標(biāo)位置。 實(shí)例:(list 2 3 (5 6) 結(jié)果為(2 3 (5 6) (list 2 3) 結(jié)果為(2 3)

17、下面是一個(gè)利用list確定點(diǎn)的位置,繪制圓的小程序: (setq p1 (list 222 33) (setq p2 (list 200 300) (command circle p2 160) (command circle p1 160,2021/2/1,22,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,3、基本函數(shù),13)ATOF函數(shù) 格式: (atof ) 功能:將轉(zhuǎn)換成實(shí)型數(shù),返回實(shí)型數(shù) 實(shí)例:(atof 23) 返回結(jié)果為23.0 (14)RTOS函數(shù) 格式: (rtos ) 功能:將轉(zhuǎn)換成 按模式數(shù)及精度要求的字符串。模式數(shù)為1-5,1代表科學(xué)計(jì)數(shù),2代表十進(jìn)制,3代表工程計(jì)數(shù)即整數(shù)英尺和

18、十進(jìn)制英寸,4代表建筑計(jì)數(shù)格式即整數(shù)英尺和分?jǐn)?shù)英寸,5代表分?jǐn)?shù)單位格式。 實(shí)例: (rtos 12.5 1 3) 返回 1.250E+01 (rtos 12.5 2 3) 返回12.5 (rtos 12.5 3 3) 返回 1-0.5 (rtos 12.5 4 3) 返回 1-0 1/2 (rtos 12.5 5 3) 返回 12,2021/2/1,23,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,3、基本函數(shù),15)ASCII函數(shù) 格式: (ascii ) 功能:將中第一個(gè)字符轉(zhuǎn)換成ASCII碼,并返回該值 實(shí)例: (ascii b c) 返回結(jié)果為98 (ascii a) 返回結(jié)果為 97 (asc

19、ii c) 返回結(jié)果為99 (ascii +) 返回結(jié)果為43 (ascii y) 返回結(jié)果為121 (ascii *) 返回結(jié)果為42,2021/2/1,24,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,3、基本函數(shù),16)CHR函數(shù) 格式: (chr ) 功能:將ASCII碼為的轉(zhuǎn)換成相應(yīng)字符,并返回該字符 實(shí)例:(chr 69) 返回結(jié)果為E (chr 80) 返回結(jié)果為P (chr 42) 返回結(jié)果為* (17)ITOA函數(shù) 格式: (itoa ) 功能:將轉(zhuǎn)換成整數(shù)字符串 實(shí)例: (itoa 5) 返回結(jié)果為5 (itoa 6) 返回結(jié)果為6 (itoa 7) 返回結(jié)果為7,2021/2/1,

20、25,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,3、基本函數(shù),18)ITOA函數(shù) 格式: (itoa ) 功能:將轉(zhuǎn)換成整數(shù)字符串 實(shí)例: (itoa 5) 返回結(jié)果為5 (itoa 6) 返回結(jié)果為6 (itoa 7) 返回結(jié)果為7,2021/2/1,26,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,3、基本函數(shù),19) ATOI函數(shù) 格式: (atoi ) 功能:將轉(zhuǎn)換成整數(shù),返回值截去小數(shù)部分 實(shí)例:(atoi 45.4) 返回結(jié)果為45 (atoi -5.6) 返回結(jié)果為-5 (atoi 7) 返回結(jié)果為7 (atoi 34.6ac) 返回結(jié)果為34 (atoi df43) 返回結(jié)果為0 說明:當(dāng)數(shù)字串

21、中有非數(shù)字字符時(shí),則轉(zhuǎn)換到第一個(gè)非數(shù)字原子時(shí)終止,2021/2/1,27,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,3、基本函數(shù),20)STRCAT函數(shù) 格式: (strcat ) 功能:將按先后順序頭尾相連起來,組成一個(gè)新的字符串。 實(shí)例: (strcat bc etr ty) 返回結(jié)果為bcetrty,2021/2/1,28,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,3、基本函數(shù),21)SUBSTR函數(shù) 格式: (substr 功能:從中提取一個(gè)子串,該子串從起點(diǎn)的字符位置開始,由連續(xù)個(gè)字符組成,若缺省,則到字符串結(jié)束。 實(shí)例: (substr b212c 2 3) 返回結(jié)果為212 (substr b2

22、er12c 2) 返回結(jié)果為2er12c,2021/2/1,29,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,3、基本函數(shù),22)READ函數(shù) 格式: (read ) 功能:將轉(zhuǎn)化成表或原子,文件處理時(shí)經(jīng)常使用 實(shí)例:(read ad) 返回結(jié)果為AD (read b) 返回結(jié)果為B (read (a b) 返回結(jié)果為(A B) (read (3 4) 返回結(jié)果為(3 4) 注意返回結(jié)果英文字母成了大寫,2021/2/1,30,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,4、 編程中常用的分支及條件判斷函數(shù),1)關(guān)系運(yùn)算函數(shù) 關(guān)系運(yùn)算函數(shù)是編程中分支及條件判斷函數(shù)的基礎(chǔ),它對(duì)數(shù)值型表達(dá)式的大小進(jìn)行比較,表達(dá)式可以

23、是兩個(gè)或兩個(gè)以上,其返回值是邏輯變量。比較運(yùn)算成立,則返回T;不成立則返回nil,常作為條件用于條件判斷語句合循環(huán)判斷語句中,這一點(diǎn)將在下面講解中提到。AutoLISP共有6種關(guān)系運(yùn)算函數(shù),它們分別是“=”等于、“/=”不等于、“”大于、“=”大于等于。其中對(duì)于等于的關(guān)系函數(shù),表達(dá)式只能兩個(gè),下面6種關(guān)系函數(shù)的實(shí)際例子: ( 8 7 3 9) 返回結(jié)果nil,全程比較 ( 8 7 3 1) 返回結(jié)果T (= 2 2) 返回結(jié)果T (= s b) 返回結(jié)果nil (/= 1 2 3) 返回結(jié)果T (/= 1 1 3) 返回結(jié)果nil,只比較前面兩個(gè)表達(dá)式 (= 5 5 1) 返回結(jié)果T,2021

24、/2/1,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,31,4、 編程中常用的分支及條件判斷函數(shù),2)邏輯運(yùn)算函數(shù) AutoLISP共有3種邏輯運(yùn)算函數(shù),分別是邏輯和AND、邏輯或OR、邏輯非NOT,下面通過實(shí)例說明其應(yīng)用。 (and a d c 3) 返回結(jié)果nil,只要有一個(gè)表達(dá)式為假,則 返回nil (and d c) 返回結(jié)果nil (setq a 3 b 4) 返回結(jié)果4,返回最后一個(gè)賦值 (and a b) 返回結(jié)果T,由于前面給a、b賦了值 (and ( 3 5) 返回結(jié)果nil (or 1 2 a b) 返回結(jié)果T,只要有一個(gè)表達(dá)式為真,則返回T (or ( 4 2) ( 6 9) 返回

25、結(jié)果T,2021/2/1,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,32,4、 編程中常用的分支及條件判斷函數(shù),3)二分支條件函數(shù)IF 格式: (if ) 功能:對(duì)進(jìn)行運(yùn)算,若成立,則執(zhí)行,否則,執(zhí),兩者必居其一,所以稱之為二分支條件函數(shù),是在編程中經(jīng)常用到的條件判斷函數(shù)。下面是幾個(gè)實(shí)際例子: (if (= 1 3) 3 5) 測(cè)試式不成立,執(zhí)行第二個(gè)表達(dá)式,第二個(gè)表達(dá)式為原子,返回5 (if ( 1 3) (setq a 2) (setq a 9) 測(cè)試式成立,執(zhí)行第一個(gè)表達(dá)式,返回2 (if (= 1 3) yes) 測(cè)試式不成立,但無第二個(gè)表達(dá)式,返回nil (if 1 yes no) 測(cè)試表達(dá)

26、式為1,雖然不為T,但也不為nil,仍執(zhí)行第一表達(dá)式,返回“yes,2021/2/1,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,33,4、 編程中常用的分支及條件判斷函數(shù),4)多分支條件函數(shù)COND 前面二分支條件函數(shù)只能解決兩種結(jié)果中選一種的條件判斷,若有多個(gè)條件中選一,則需用COND函數(shù)。 格式: (cond ( ) ( ) : : ( ) ) 該函數(shù)的參數(shù)為任意數(shù)目的表,每個(gè)表有兩個(gè)元素,第一個(gè)元素為測(cè)試式,第二個(gè)元素為結(jié)果。 功能:對(duì)每一個(gè)支表中的依此進(jìn)行運(yùn)算,若成立,則執(zhí)行該支表對(duì)應(yīng)的,停止后面的測(cè)試工作;否則,繼續(xù)執(zhí)行測(cè)試執(zhí),直到最后一個(gè)分支條件,2021/2/1,華南理工大學(xué)化學(xué)與化工學(xué)

27、院方利國,34,4、 編程中常用的分支及條件判斷函數(shù),實(shí)例1: (cond ( 2 1) (setq x 3) /不成立,轉(zhuǎn)下一分支條件 ( 4 5) (setq x 6) /成立,將6賦值給x ( 8 9) (setq x 9) /雖然成立,但前面分支已成立,故不再測(cè)試該分支 ) 返回結(jié)果為6,2021/2/1,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,35,4、 編程中常用的分支及條件判斷函數(shù),實(shí)例2: (setq x (getreal x=) /輸入實(shí)型數(shù)x (setq f (cond (= x 0) (= x 1) (* x x x) ) /結(jié)束COND ) /結(jié)束SETQ 輸入-1,執(zhí)行第一

28、個(gè)分支條件,返回-1;輸入0.3,執(zhí)行第二個(gè)分支條件,返回0.09;輸入5,執(zhí)行第三個(gè)分支條件,返回125.0,2021/2/1,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,36,4、 編程中常用的分支及條件判斷函數(shù),實(shí)例3: (cond ( 4 5) (setq x 6) ) /兩個(gè)分支條件都不成立,返回nil,2021/2/1,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,37,4、 編程中常用的分支及條件判斷函數(shù),5)順序控制函數(shù)PROGN 常和IF函數(shù)一起使用,使其在某一條件下,順序執(zhí)行多個(gè)表達(dá)式。 格式: (progn : : ) 功能:按順序執(zhí)行多個(gè)表達(dá)式,并返回最后表達(dá)式求值結(jié)果,表達(dá)式需為標(biāo)準(zhǔn)表。下

29、面是兩個(gè)實(shí)例,2021/2/1,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,38,4、 編程中常用的分支及條件判斷函數(shù),實(shí)例1: (progn (setq x 4) (setq y (* x x) (list x y) ) 返回結(jié)果為表(4 16,2021/2/1,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,39,4、 編程中常用的分支及條件判斷函數(shù),實(shí)例2: (setq x (getreal x=) (if x ( x 0) (progn (setq z 4) (setq y (* z z) ) /結(jié)束PROGN ) /結(jié)束IF (print (list z y) 輸入3,屏幕打?。? 16)并返回(4 16)

30、;輸入-4,返回nil,2021/2/1,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,40,4、 編程中常用的分支及條件判斷函數(shù),6)常見測(cè)試函數(shù) ZEROP函數(shù),用于判斷測(cè)試項(xiàng)是否為零,若為零,則返回T,否則返回nil,如(zerop 3)則返回nil;(zerop 0)則返回T。 MINUSP函數(shù)用于判斷測(cè)試項(xiàng)是否為負(fù),若為負(fù),則返回T,否則返回nil,如(minusp 3)則返回nil;(minusp -1)則返回T。 NUMBERP函數(shù),用于判斷測(cè)試項(xiàng)是否為數(shù),若為數(shù),則返回T,否則返回nil,如(numberp (6 3)則返回nil;(numberp 1)則返回T。 ATOM函數(shù),用于判斷測(cè)

31、試項(xiàng)是否為原子,若為原子數(shù),則返回T,否則返回nil,如(atom (3 4)則返回nil;(atoma)則返回T; LISTP函數(shù),用于判斷測(cè)試項(xiàng)是否為表,若為表,則返回T,否則返回nil,如(listp 3)則返回nil;(listp (1 2)則返回T;其中較為奇怪的是(listp a),返回nil,而(listp w)則返回T,2021/2/1,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,41,4、 編程中常用的分支及條件判斷函數(shù),7)循環(huán)函數(shù) 在各種程序編寫中,循環(huán)語句是不可缺少的,AutoLISP的兩種主要循環(huán)函數(shù)是WHILE函數(shù)和REPET函數(shù),下面分別介紹之。 WHILE函數(shù) 格式 (w

32、hile 標(biāo)準(zhǔn)表1 標(biāo)準(zhǔn)表2 : : ) 功能:先對(duì)測(cè)試表達(dá)式進(jìn)行測(cè)試,若其值不為nil,則依次執(zhí)行下面的各個(gè) 標(biāo)準(zhǔn)表,執(zhí)行完各 標(biāo)準(zhǔn)表后,再返回來對(duì)測(cè)試表達(dá)式進(jìn)行測(cè)試,直至測(cè)試表達(dá)式為nil,停止循環(huán)執(zhí)行 下面是一個(gè)用WHILE編寫的求的平方的一個(gè)程序,2021/2/1,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,42,4、 編程中常用的分支及條件判斷函數(shù),setq a 0) (setq n 1) (while (= n 10) (setq a (+ a (* n n) (setq n (+ 1 n) ) (print a) /打印結(jié)果為385,2021/2/1,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,43,4、 編程中常用的分支及條件判斷函數(shù),REPEAT函數(shù) 格式 (repeat 標(biāo)準(zhǔn)表1 標(biāo)準(zhǔn)表2 : :,2021/2/1,華南理工大學(xué)化學(xué)與化工學(xué)院方利國,44,4、 編程中常用的分支及條件判斷函數(shù),功能:按該定的次數(shù)進(jìn)行循環(huán)計(jì)算,如上面用while語句編寫的程序,用repeat語句編寫,則變?yōu)椋?(setq a 0) (setq n 1) (repeat 10 (setq a (+ a (* n n) (setq n (+ 1 n) ) (print a) /打印結(jié)果仍為385,2021/2/1,華南理工大學(xué)化學(xué)與化工學(xué)院方利

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論