iCAx开思网

标题: LISP教學-02 如何定義一個函數 [打印本页]

作者: sjgau    时间: 2004-6-7 08:54
标题: LISP教學-02 如何定義一個函數
在 AutoCAD 指令行下面,想要計算
sin(0.5)= ?
只要輸入
(sin 0.5) [Enter]
  
即可得到 0.479426
0.5 是 弳度 radian
  
如果經常需要計算 x^3
可以編輯一個 LISP 程式,內容如下
  
; 這行是註解
  
(defun cubic(x / ); 這樣也是註解
    (* x x x)
); end of defun
  
(princ); 為何要多這一行,以後解釋
; ------------------------------------------------------
  
假設,存檔到 C:\test02.lsp
回到 AutoCAD 指令行下面,輸入以下指令
(load "c:/test02.lsp")
  
(cubic 2) [Enter]
即可看到答案:8
  
試試看
作者: sjgau    时间: 2004-6-7 11:19
AutoLISP 就是 括號( 對 括號)
括號要成對。
  
定義一個函數 或 副程式
  
(defun name(參數 / 區域變數)
    ; 這裡放函數裡面的程式行
); end of defun name()
  
參數和 / 之間,要空一格。
/ 和區域變數之間,也要空一格。
  
name 是函數或副程式的名稱
函數裡面的做後一行的計算結果,
就是這個函數的 return-value
作者: sjgau    时间: 2004-6-8 10:27
試試看
以上的函數 cubic
  
輸入以下的指令
(cubic 10000)
  
會得到明顯錯誤的答案,有人知道是
為什麼嗎?
作者: wayne    时间: 2004-6-8 13:31
sjgau wrote:
試試看  
  以上的函數 cubic  
  
  輸入以下的指令  
  (cubic 10000)  
  
  會得到明顯錯誤的答案,有人知道是  
  為什麼嗎?

  
我想是整數的關係吧! 若輸入
(cubic 10000.0)
則可得到正確的答案, 請老師補充說明更詳盡可以嗎?
作者: sjgau    时间: 2004-6-8 13:55
OK!
程式設計的口訣之一,如下:
  
整數運算,絕對不會有誤差。
運算結果超出允許的範圍,會產生錯誤的答案。
  
實數,浮點數的運算,一定會有誤差。
運算結果超出允許的範圍,會的到 0,
或是讓程式終止。
  
我們將在後續的討論中,在適當的時候,
繼續研究這個主題。
作者: sjgau    时间: 2004-6-8 16:16
我想是整數的關係吧! 若輸入  
(cubic 10000.0)  
則可得到正確的答案, 請老師補充說明更詳盡可以嗎?  
//我們以後會有機會詳細的研究
整數,浮點數的相關議題。
目前,先稍安勿躁。




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3