freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

人工智能程序設計語言150-資料下載頁

2025-02-20 16:15本頁面
  

【正文】 函數(shù)符 。 第 2章 人工智能程序設計語言 在 Turbo PROLOG程序中 , 如果一個算術表達式中的變元全部被實例化 ( 即被約束 ) 的話 , 則這個算術表達式的值就會被求出 。 求出的值可用來實例化某變量 , 也可用來同其他數(shù)量進行比較 , 用一個算術表達式的值實例化一個變量的方法是用謂詞 “ is” 或 “ =”來實現(xiàn) 。 例如: Y is X+5 或 Y=X+5 (*) 第 2章 人工智能程序設計語言 就使變量 Y實例化為 X+5的值 (當然 X也必須經(jīng)已被某值實例化 ), 可以看出 , 這里對變量 Y的實例化方法類似于其他高級程序語言中的 “ 賦值 ” , 但又不同于賦值 。 例如 , 在 PROLOG中下面的式子是錯誤的 : X=X+1 第 2章 人工智能程序設計語言 4. 關系表達式 Turbo PROLOG提供了六種常用的關系運算,即小于、小于或等于、等于、大于、大于或等于和不等于,其運算符依次為 ,=,=,=, Turbo PROLOG的關系表達式的形式和數(shù)學中的也基本一樣 , 例如: 數(shù)學中的關系式 Turbo PROLOG中的關系式 X+1≥Y X+1=Y X≠Y XY 第 2章 人工智能程序設計語言 即是說 , Turbo PROLOG中的關系式也用中綴形式 。當然 , 這種關系式為 Turbo PROLOG中的異體原子 。 若按 Turbo PROLOG中的原子形式來表示 , 則上面的兩個例子為 =(X+1,Y)和 (X,Y) 所以上述六種關系運算符 , 實際上也就是 Turbo PROLOG內(nèi)部定義好了的六個謂詞 。 這六個關系運算符可用來比較兩個算術表達式的大小 。 第 2章 人工智能程序設計語言 所以上述六種關系運算符 , 實際上也就是 Turbo PROLOG內(nèi)部定義好了的六個謂詞 。 這六個關系運算符可用來比較兩個算術表達式的大小 。 例如: brother(Name1,Name2):person(Name1,man,Age1), person(Name2,man,Age2), mother(Z,Name1),mother(Z,Name2), Age1Age2. 需要說明的是 , “ =” 的用法比較特殊 , 它既可以表示比較 , 也可以表示約束值 , 即使在同一個規(guī)則中的同一個 “ =” 也是如此 。 第 2章 人工智能程序設計語言 例如: p(X,Y,Z):Z=X+Y. 當變量 X、 Y、 Z全部被實例化時 , “ =” 就是比較符 。 如:對于問題 Goal:p(3,5,8). 機器回答: yes。 而對于 Goal:p(3,5,7). 機器回答: no。 即這時機器把 X+Y的值,與 Z的值進行比較。 第 2章 人工智能程序設計語言 但當 X,Y被實例化 , 為 Z未被實例化時 , “ =” 號就是約束符 。 如: Goal:p(3,5,Z). 機器回答: Z=8 這時 , 機器使 Z實例化為 X+Y的結(jié)果 。 第 2章 人工智能程序設計語言 輸入與輸出 雖然 PROLOG能自動輸出目標子句中的變量的值 ,但這種輸出功能必定有限 , 往往不能滿足實際需要;另一方面 , 對通常大多數(shù)的程序來說 , 運行時從鍵盤上輸入有關數(shù)據(jù)或信息也是必不可少的 。 為此每種具體 PROLOG一般都提供專門的輸入和輸出謂詞 , 供用戶直接調(diào)用 。 例如 , 下面就是 TorboPROLOG的幾種輸入輸出謂詞: 第 2章 人工智能程序設計語言 (1) readln (X)。 這個謂詞的功能是從鍵盤上讀取一個字符串 , 然后約束給變量 X。 (2) readint (X)。 這個謂詞的功能是從鍵盤上讀取一個整數(shù) , 然后約束給變量 X, 如果鍵盤上打入的不是整數(shù)則該謂詞失敗 。 (3) readreal (X)。 這個謂詞的功能是從鍵盤上讀取一個實數(shù) , 然后約束給變量 X, 如果鍵盤上打入的不是實數(shù)則該謂詞失敗 。 第 2章 人工智能程序設計語言 (4) readchar(X)。 這個謂詞的功能是從鍵盤上讀取一個字符 , 然后約束給變量 X, 如果鍵盤上打入的不是單個字符 , 則該謂詞失敗 。 (5) write(X1,X2,… Xn)。 這個謂詞的功能是把項 Xi(i=1,2,… n)的值顯示在屏幕上或者打印在紙上 , 當有某個 Xi未實例化時 , 該謂詞失敗 , 其中的 Xi可以是變量 , 也可以是字符串或數(shù)字 。 第 2章 人工智能程序設計語言 (6) nl換行謂詞 。 它使后面的輸出 (如果有的話 )另起一行 。 另外 , 利用 write的輸出項 \n也同樣可起換行作用 。 例如: write(name), n l ,write(age) 與 write(name,\n,age) 的效果完全一樣 。 第 2章 人工智能程序設計語言 例 成績數(shù)據(jù)庫查詢程序 。 PREDICATES student(integer,string,real) grade GOAL grade. CLAUSES 第 2章 人工智能程序設計語言 student(1,張三 ,). student(2,李四 ,). student(3,王五 ,). grade:write(請輸入姓名 :),readln(Name), student(,Name,Score), nl,write(Name,的成績是 ,Score). grade:write(“對不起,找不到這個學生 !” ). grade:write(對不起 , 找不到這個學生 !). 下面是程序運行時的屏幕顯示 : 請輸入姓名: 王五的成績是 。 第 2章 人工智能程序設計語言 分支與循環(huán) P R O L O G中并無專門的分支和循環(huán)語句 , 但PROLOG也可實現(xiàn)分支和循環(huán)程序結(jié)構 。 對于通常的 IFTHENELSE分支結(jié)構 , PROLOG可用兩條同頭的并列規(guī)則實現(xiàn) 。 例如 , 將 IF x0THENx:=1 ELSE x:=0 第 2章 人工智能程序設計語言 用 PROLOG實現(xiàn)則是 Br :x0,x=1. Br :x=0. 類似地 , 對于多分支 , 可以用多條規(guī)則實現(xiàn) 。 例如: Br :x0,x=1. Br :x=0,x=0. Br :x0,x=1. 第 2章 人工智能程序設計語言 PROLOG可以實現(xiàn)計循環(huán)次數(shù)的 FOR循環(huán) , 也可以實現(xiàn)不計循環(huán)次數(shù)的 DO循環(huán) 。 例如下面的程序段就實現(xiàn)了循環(huán) , 它使得 write語句重復執(zhí)行了三次 , 而打印輸出了三個學生的記錄 。 student(1,張三 ,). student(2,李四 ,). student(3,王五 ,). print:student(Number,Name,Score), write(Number,Name,Score),n l , Number=3. 第 2章 人工智能程序設計語言 這個例子可以看作是計數(shù)循環(huán) 。 當然 , 也可以通過設置計數(shù)器而實現(xiàn)真正的計數(shù)循環(huán) 。 下面的程序段實現(xiàn)的則是不計數(shù)的 DO循環(huán) 。 student(1,張三 ,). student(2,李四 ,). student(3,王五 ,). print:student(Number,Name,Score), write(Number,Name,Score),nl, fail. print:. 第 2章 人工智能程序設計語言 這個程序段中的 fail是一個內(nèi)部謂詞 , 它的語義是恒失敗 。 這個程序段與上面的程序段的差別僅在于把原來用計數(shù)器 ( 或標記數(shù) ) 循環(huán)控制語句變成了恒失敗謂詞 fail, 另外再增加了一個 print語句 。 增加這個語句的目的是為程序設置一個出口 。 因為 fail是恒失敗 ,下面若無出口的話 , 將引起 print本身的失敗 。 進而又會導致程序中的連鎖失敗 。 第 2章 人工智能程序設計語言 動態(tài)數(shù)據(jù)庫 動態(tài)數(shù)據(jù)庫就是在內(nèi)存中實現(xiàn)的動態(tài)數(shù)據(jù)結(jié)構 。它由事實組成 , 程序可以對它操作 , 所以在程序運行期間它可以動態(tài)變化 。 Turbo PROLOG提供了三個動態(tài)數(shù)據(jù)庫操作謂詞 : asserta (fact). assertz (fact). retract (fact). 第 2章 人工智能程序設計語言 其中 fact表示事實 。 這三個謂詞的功能是: asserta (fact).把 fact插入當前動態(tài)數(shù)據(jù)庫中的同名謂詞的事實之前; assertz (fact).把 fact插入當前動態(tài)數(shù)據(jù)庫中的同名謂詞的事實之后; retract(fact).把 fact從當前動態(tài)數(shù)據(jù)庫中刪除。 第 2章 人工智能程序設計語言 例如語句 asserta(student(20,李明 ,)). 將在內(nèi)存的謂詞名為 student的事實前插入一個新事實: student(20,李明 ,) 如果內(nèi)存中還沒有這樣的事實 , 則它就是第一個 。又如語句 retract(student(20,,)). 將從內(nèi)存的動態(tài)數(shù)據(jù)庫中的刪除事實 student(20,,) 第 2章 人工智能程序設計語言 它可解釋為學號為 20的一個學生的記錄 。 注意 , 這里用了無名變量 。 可以看出 , PROLOG提供的動態(tài)數(shù)據(jù)庫機制 , 可非常方便
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1