You are on page 1of 10

Jess 程式開發

Jess 程式開發

撰寫者:陳志華

一、安裝 Jess

(1)

下載 Jess Jess 網址:http://herzberg.ca.sandia.gov/jess/

Jess Jess 網址: http://herzberg.ca.sandia.gov/jess/ (2) area” 輸入相關資訊,並點選 ” I agree with
Jess Jess 網址: http://herzberg.ca.sandia.gov/jess/ (2) area” 輸入相關資訊,並點選 ” I agree with

(2)

area”

輸入相關資訊,並點選” I agree with the license; take me to software download

(2) area” 輸入相關資訊,並點選 ” I agree with the license; ta ke me to software download 第

1

Jess 程式開發

撰寫者:陳志華

(3)

Jess70p1.zip

點選 ” Stable:Jess 7.0p1 classes, docs and samples (trial version)”,下載

7.0p1 classes, docs and samples (trial version)” ,下載 (4) 解壓縮 Jess70p1.zip ,本文件以 C:\Jess

(4)

解壓縮 Jess70p1.zip,本文件以 C:\Jess 為例

(5)

設定環境變數,新增環境變數 classpath,值為 C:\Jess\lib\jess.jar

C:\Jess 為例 (5) 設定環境變數,新增環境變數 classpath ,值為 C:\Jess\lib\jess.jar 第 2 頁

2

(6) 測試環境

(i) 開啟命令提示字元

Jess 程式開發

(ii)

切換到 jess 資料庫,輸入 cd\jess

(iii)

Java jess.Main examples/jess/hello.clp

(iv)

成功顯示 Hello, world! 字樣

撰寫者:陳志華

Java jess.Main examples/jess/hello.clp (iv) 成功顯示 Hello, world! 字樣 撰寫者:陳志華 第 3 頁

3

Jess 程式開發

撰寫者:陳志華

二、安裝 Eclipse plugin for Jess

(1)

解壓縮 Jess70p1.zip,將 jess/eclipse 目錄裡的壓縮檔複製到 eclipse 所在目錄

下,然後直接解壓縮

(2)

執行 eclipse,開啟「File\New\Project

(3) 建立新專案,本文件以 Jess 名稱為例

(2) 執行 eclipse ,開啟「 File\New\Project 」 (3) 建立新專案,本文件以 Jess 名稱為例 第 4 頁

4

Jess 程式開發

撰寫者:陳志華

(4) 設定專案屬性,於專案名稱點選滑鼠右鍵,並選擇 Properties

Properties (5) 選擇「 Java Build Path\Libraries 」,點選「 Add

(5)

選擇「Java Build Path\Libraries」,點選「Add External JARs…」加入外部 JAR

jess.jar,完成後點選「OK

」,點選「 Add External JARs… 」加入外部 JAR 檔 jess.jar ,完成後點選「 OK 」 第 5 頁

5

(6)

Jess 程式開發

新增 hello.clp,並輸入 (printout t "Hello, world!" crlf)

撰寫者:陳志華

t "Hello, world!" crlf ) 撰寫者:陳志華 (7) 點選「

(7)

點選「

world!" crlf ) 撰寫者:陳志華 (7) 點選「 」進行編譯和執行,結果如下圖中飲 Console

」進行編譯和執行,結果如下圖中飲 Console

crlf ) 撰寫者:陳志華 (7) 點選「 」進行編譯和執行,結果如下圖中飲 Console 第 6 頁

6

三、Jess 基本語法

Jess 程式開發

撰寫者:陳志華

(1)

Symbols

 

A Jess symbol 可以包含 letters, numbers,以及下列標點符號: $, *, ., =, =,

/, >, <, _, ?, and # A Jess symbol 開頭不能是數字

($, ?, and =)這幾個標點符號不能使用在 symbol 開頭

Valid symbols

 

first-name

Name1

name#1

name$1

_abc

(2)

Special symbols

nil null

TRUE, FALSE (uppercase)

crlf

(3)

Numbers

 

3

4.

2.323

(4)

Strings

“Hello !”

“\”Nonsense, \” he said firmly.”

(5)

Comments

 

;;this is a comment

(6)

List

(+ 3 2)

(a b c)

(“Hello, World!”)

()

(1 2 3)

(deftemplate foo (slot bar))

7

Jess 程式開發

撰寫者:陳志華

(7)

Calling functions

(+ (* 2 2) (- 3 2))

(printout t “Hello World!”)

(batch examples/hello.clp)

(8)

Variables 不需要事先宣告 are untyped, 意味這個變數可以裝任何資料型態 範例:

(bind ?x “Hello World!”)

(bind ?x 2007)

承續上面 (bind ?x (+ ?x 3)),則?x 2010

(9)

Global Variables

(defglobal ?*a* = 2007),宣告全域變數?*a*2007

(bind ?*a* (+ ?*a* 3)),則?*a*變成 2010

(reset),則?*a*變回 2007

(10) More lists (bind ?newlist (create$ eggs bread milk)),則?newlist (eggs bread milk) (printout t (nth$ 2 ?newlist) crlf),則印出 bread (printout t (first$ ?newlist) crlf) ,則印出 eggs (bind ?more-list (create$ ?newlist salt soap)),則?more-list (eggs bread

milk salt soap)

(11) foreach

範例:

(foreach <variable> <list> <expression>+)

(bind ?newlist (create$ eggs bread milk))

(foreach ?e ?newlist (printout t ?e crlf)),分行依序印出?newlist 內容

(12) while

範例(計算 1~10 之總合)

(while <Boolean expression> do <expression>+)

(bind ?i 1)

(bind ?sum 0)

(while (<= ?i 10) do (bind ?sum (+ ?sum ?i)) (bind ?i (+ ?i 1))), 則?sum 55

8

Jess 程式開發

撰寫者:陳志華

(13) if/then/else

範例:

(if <Boolean expression> then <expression>+ [else <expression>+])

(bind ?newlist (create$ eggs bread milk))

(if (member$ eggs ?newlist) then

(printout t “I need to buy eggs” crlf)

else

(printout t “No eggs, thanks”)),則最後印出 I need to buy eggs

9

Jess 程式開發

撰寫者:陳志華

四、Jess 事實與規則語法

(1)

Jess 程式是由規則”(rules)事實”(facts)所組成的,而事實是被規則

行使用的

(2) 事實相關語法 存放資料到事實串列

(assert (man))

(assert (man-is jack))

查看事實串列內容

(facts)

清除記憶體所有內容

(clear)

(3) 規則相關語法 定義規則 範例

(defrule rule0

;定義 rule

(man-is jack)

=>

查看規則

(rules)

執行

(run)

(printout t “jack” crlf))

清除記憶體所有內容

(clear)

=> 查看規則 (rules) 執行 (run) (printout t “jack” crlf)) 清除記憶體所有內容 (clear) 第 10 頁

10