【教学课件】第十一章LISP程式语言.ppt

上传人:小飞机 文档编号:5663909 上传时间:2023-08-07 格式:PPT 页数:18 大小:325.97KB
返回 下载 相关 举报
【教学课件】第十一章LISP程式语言.ppt_第1页
第1页 / 共18页
【教学课件】第十一章LISP程式语言.ppt_第2页
第2页 / 共18页
【教学课件】第十一章LISP程式语言.ppt_第3页
第3页 / 共18页
【教学课件】第十一章LISP程式语言.ppt_第4页
第4页 / 共18页
【教学课件】第十一章LISP程式语言.ppt_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《【教学课件】第十一章LISP程式语言.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第十一章LISP程式语言.ppt(18页珍藏版)》请在三一办公上搜索。

1、1,第十一章 LISP 程式語言,陳維魁 博士儒林圖書公司,2,大綱,簡介劍橋波蘭式常見的函數自定函式控制結構精選習題,3,簡介,LISP(LISt Processing language)發展於1950年代末期主要是應用在人工智慧(artificial intelligence)的領域,又稱為人工智慧的低階語言LISP語言是以解譯器(interpreter)來處理其程式基本的資料結構是S-運算式(S-expression),其中S-運算式又可區分為串列(list)與原子(atom)二種採垃圾收集法(garbage collection)管理記憶體垃圾收集法指的是系統會主動地收集程式中不再使用

2、的記憶體空間優點是減輕了程式設計師的負擔缺點則是每次系統收集不再使用的記憶體往往費時過長,而且不知何時會開始進行收集的動作函數式程式語言,4,劍橋波蘭式,LISP運算式的表示法採劍橋波蘭式(Cambridge-polish form),即前置式加上括號,5,常見的函數,quote對引數不作任何的處理,直接傳回引數的內容setq指定變數的值set指定變數的值 算術函數:加法:plus()減法:difference(-)除法:quotient(/)乘法:times(*),6,常見的函數,car(1)作用:傳回引數的第一個元素(2)限制:引數必須是串列(list)且引數僅有一個(3)實例(car(P

3、ascal Prolog PL/1)Pascal【注意:傳回的結果可能是原子或串列】cdr(1)作用:除去引數的第一個元素後,傳回剩下的串列(2)限制:引數必須是串列且引數僅有一個。(3)實例(cdr(Pascal Prolog PL/1)(Prolog PL/1)【注意:傳回的結果是一串列】,7,常見的函數,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對二個參數

4、作求值的動作,結果是把第一個引數加入第二個引數中以形成新串列,8,常見的函數,length計算參數的長度(length(A B C)=3reverse將參數反轉,9,自定函式,LISP語言提供了使用者以“defun”來自行定義函式。自行定義的函式,結構包含三個部分:(1)函式名稱(2)型式參數串列(3)程式段,(defun 函式名稱(型式參數串列)(程式段)defun提供的功能是將上述(1),(2),(3)連接在一起提供給使用者使用,並不會對(1),(2),(3)中之任何一者作求值的動作,10,述句,LISP語言測試條件的結構稱為述句(predicate)LISP語言常見的述句atom:判斷參

5、數是否為原子(atom)listp:判斷參數是否為串列(list)equal(e1 e2):比較e1與e2 member(e1 e2):限制:e2必須是串列(list)。作用:檢查e1是否為e2的一部分。member函數具有二個引數。其中第二個引數被限定為必須是個串列(list)。member函數的功能是檢查第二個引數中是否出現第一個引數。若結果為真,則傳回在第二個引數中第一個引數出現的位置以後的部份,若結果為假,則傳回nil,11,述句,LISP語言常見的述句plusp:判斷參數的值是否大於0minusp:判斷參數的值是否小於0 zerop:判斷參數的值是否為0 numberp:判斷參數是否

6、為數值 null:判斷參數是否為nil greaterp e1 e2若e1e2,則t若e1=e2,則nil,12,述句,LISP語言常見的述句lessp e1 e2:若e1=e2,則nil and e1 e2.en:若e1、e2、.、en全為true,則t,否則nilor e1 e2.en:e1、e2、.、en中若有一者為true,則t,否則nilnot:若參數值為nil則結果為t,否則為nil,13,LISP 語言的條件式,LISP語言的條件式即為cond結構cond結構可以處理任意數目的參數,這些參數即稱為cond子句每個cond子句由一連串的S運算式所組成cond子句由二個部份所組成第一

7、個部份是要測試的條件第二個部份則是測試的條件成立時必須執行之部份,14,LISP 語言的條件式,語法(cond(條件 1 Exp1)(條件 2 Exp2)(條件 3 Exp3).(條件 n Expn),15,精選習題,LISP程式如下,其作用為何?(defun xxx(S)(cond(null S)0)(atom S)1)(t(plus(xxx(car S)(xxx(cdr S),16,精選習題,試簡述下列LISP函數f的功能,並舉例說明之(defun f(lst)(cond(null lst)nil)(atom lst)(list lst)(t(append(f(car lst)(f(cdr lst),17,精選習題,試簡述下列LISP函數g的功能,並舉例說明之(defun g(list)(cond(null list)nil)(t(append(g(cdr list)(cons(car list)nil),18,精選習題,試簡述下列LISP函數STRANGE的功能,並舉例說明之(defun STRANGE(L)(cond(null L)nil)(atom L)L)(t(cons(STRANGE(car L)(STRANGE(CDR L),

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号