OPS5> (p テスト (a) --> (remove 1) (write a がありました (crlf)))
# ルールの入力.
# ルールの意味「もし,WM(作業記憶:Working Memory)
# 内に要素aが存在するならば,そのWMEを削除し画面に
# メッセージを出力する」
OPS5> pm # 登録されているルールの確認
(p テスト
(A)
-->
(REMOVE 1)
(WRITE A がありました (CRLF)))
OPS5> (make a) # WMへの要素aの追加
OPS5> wm # WM内に存在する要素の確認
1 [NIL] (A)
OPS5> run # ルールの実行
A がありました # 実行結果
OPS5> wm # WMから要素aが削除されているため,何も表示されない
OPS5>
(p 最初は1
(a) # 条件部「要素aが存在するならば」
-->
(remove 1) # 実行部「数える対象である要素aを削除し,かつ,
(make count 1)) # カウンタを用意し,初期値を代入する.」
(p 要素があれば数える
(a) # 条件部「要素aが存在し,かつ,
(count ) # countが存在するならば」
-->
(remove 1) # 実行部「その要素aを削除し,かつ,
(modify 2 count (compute + 1))) # countに1を加える.」
(p 答えを返す
(count ) # 条件部「countが存在するならば」
-->
(remove 1) # 実行部「その要素countを削除し,かつ,
(write 要素 a は 個ありました (crlf))) # countの値を出力する.」
上記の3つのルールを入力後,要素aをWMに追加し,ルールを実行すると
要素aを数えてくれる.
OPS5> (make a) OPS5> (make a) OPS5> (make a) OPS5> run 要素 A は 3 個ありました OPS5>
上記のように実行結果を log.txt に書き出すと,OPS5.exeのある フォルダ上にそのファイルが保存される.OPS5> (openfile dump log.txt out) # dumpはファイル識別名です OPS5> (default dump write) # dumpにOPS5の出力を書き出す OPS5> (run) OPS5> (closefile dump) # ファイルクローズ
- 例題を作成する.
ここでは「数を数える」を例題として採用する.ソースファイルはここ(count.ops).注意:ファイルの拡張子は .ops とすること- 実行スクリプトを作成する.
作成したソースファイルを読み込み,実行するには,以下のような作業が必要である.OPS5> (watch 2) # 実行ルールとWMEの削除と追加に関するトレース OPS5> (openfile dump log.txt out) # 結果出力用ファイル log.txt の指定 OPS5> (default dump write) # 出力の書き出し開始 OPS5> (@ count.ops) # ソースファイル読み込み OPS5> pm # ルールの確認 OPS5> (make a) # 複数回WMEaを作成 OPS5> run # 実行 OPS5> (closefile dump) # 出力の書き出し終了これらの実行手順をスクリプト(example.ops)として作成し,保存する.- スクリプトの実行
- 方法1:OPS5起動し,を手順2で作成したスクリプトを入力する.
- 方法2:スクリプトファイルを startup.ops という名前でOPS5本体のあるフォルダに保存すると,OPS5を起動したときに自動実行される.
- 実行結果の参照
作成したスクリプトを実行すると,OPS5本体のあるフォルダ上に「 Log.txt 」というファイルが作成されている.このファイルに先ほどのトレース結果が書き出されているので,これを参考に正しく実行できているかを確認し,レポートを作成してください.