LISP程式语言.PPT

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LISP程式语言

第十一章 LISP 程式語言 陳維魁 博士 wkchen@.tw 儒林圖書公司 大綱 簡介 劍橋波蘭式 常見的函數 自定函式 控制結構 精選習題 簡介 LISP(LISt Processing language)發展於1950年代末期 主要是應用在人工智慧(artificial intelligence)的領域,又稱為人工智慧的低階語言 LISP語言是以解譯器(interpreter)來處理其程式 基本的資料結構是S-運算式(S-expression),其中S-運算式又可區分為串列(list)與原子(atom)二種 採垃圾收集法(garbage collection)管理記憶體 垃圾收集法指的是系統會主動地收集程式中不再使用的記憶體空間 優點是減輕了程式設計師的負擔 缺點則是每次系統收集不再使用的記憶體往往費時過長,而且不知何時會開始進行收集的動作 函數式程式語言 劍橋波蘭式 LISP運算式的表示法採劍橋波蘭式(Cambridge-polish form),即前置式加上括號 常見的函數 quote 對引數不作任何的處理,直接傳回引數的內容 setq 指定變數的值 set 指定變數的值 算術函數: 加法:plus (+) 減法:difference (-) 除法:quotient (/) 乘法:times (*) 常見的函數 car (1)作用:傳回引數的第一個元素 (2)限制:引數必須是串列(list)且引數僅有一個 (3)實例 (car ′(Pascal Prolog PL/1))=Pascal 【注意:傳回的結果可能是原子或串列】 cdr (1)作用:除去引數的第一個元素後,傳回剩下的串列 (2)限制:引數必須是串列且引數僅有一個。 (3)實例 (cdr ′(Pascal Prolog PL/1))=(Prolog PL/1) 【注意:傳回的結果是一串列】 常見的函數 rplaca 將第一個引數的car以第二個引數的car替代 rplacd 將第一個引數的cdr以第二個引數的cdr替代 append 用法為(append a1 a2 ... an)=(b1 b2 ... bn) 其中ai, 1 ? i ? n,為串列(list), 而bi, 1 ? i ? n,則為ai去掉括號後之結果 cons 對二個參數作求值的動作,結果是把第一個引數加入第二個引數中以形成新串列 常見的函數 length 計算參數的長度 (length (A B C))=3 reverse 將參數反轉 自定函式 LISP語言提供了使用者以“defun”來自行定義函式。 自行定義的函式,結構包含三個部分: (1) 函式名稱 (2) 型式參數串列 (3) 程式段 (defun 函式名稱(型式參數串列) ( 程式段 ) ) defun提供的功能是將上述(1),(2),(3)連接在一起提供給使用者使用,並不會對(1),(2),(3)中之任何一者作求值的動作 述句 LISP語言測試條件的結構稱為述句(predicate) LISP語言常見的述句 atom:判斷參數是否為原子(atom) listp:判斷參數是否為串列(list) equal (e1 e2):比較e1與e2 member (e1 e2): 限制:e2必須是串列(list)。 作用:檢查e1是否為e2的一部分。member函數具有二個引數。其中第二個引數被限定為必須是個串列(list)。member函數的功能是檢查第二個引數中是否出現第一個引數。若結果為真,則傳回在第二個引數中第一個引數出現的位置以後的部份,若結果為假,則傳回nil 述句 LISP語言常見的述句 plusp:判斷參數的值是否大於0 minusp:判斷參數的值是否小於0 zerop:判斷參數的值是否為0 numberp: 判斷參數是否為數值 null:判斷參數是否為nil greaterp e1 e2 若e1e2,則t 若e1=e2,則nil 述句 LISP語言常見的述句 lessp e1 e2: 若e1e2,則t 若e1=e2,則nil and e1 e2 ... en:若e1、e2、...、en全為true,則t,否則nil or e1 e2 ... en:e1、e2、...、en中若有一者為true,則t,否則nil not:若參數值為nil則結果為t,否則為nil LISP 語言的條件式 LISP語言的條件式即為cond結構 cond結構可以處理任意數目的參數,這些參數即稱為cond子句 每個cond子句由一連串的S運算式所組成 cond子句由二個部份所組成 第一個部份是要測試的條件 第二個部份則是測試的條件成立時必須執行之

您可能关注的文档

文档评论(0)

wumanduo11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档