課題:OPS5を用いた例題を作成し,シミュレーションを行う.    作成した例題の説明および,行ったシミュレーション結果を    レポートにまとめること.    例題はサンプルプログラムを参照して作成してください. ■ OPS5のダウンロード先 http://www.vector.co.jp/soft/dos/prog/se023100.html ■ ファイル構成 ops5ex28.lzh # OPS5本体. ops5ma27.lzh # サンプルプログラム. ■ OPS5起動方法 ・ops5ex28.lzh を展開. ・DOSプロンプトを起動し,上記のアーカイブを展開したフォルダに移動. ・コマンドラインから OPS5 を起動. ■ 実行例 以下に,講義時に行った例題を再掲し,コメントを付けて紹介する. □ 基本コマンド 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> □ 例題:数を数える WM の中に (a) と言う WME がいくつあるか報告するには,どうすればよいのか? 例えば、次のような3つの規則で実現が可能である. ・最初は要素が一つある。 ・要素 (a) があれば、今までの数に1を加える。 ・全部数えたらその数を答える。 これを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> (openfile dump log.txt out) # dumpはファイル識別名です OPS5> (default dump write) # dumpにOPS5の出力を書き出す OPS5> (run) OPS5> (closefile dump) # ファイルクローズ 上記のように実行結果を log.txt に書き出すと,OPS5.exeのある フォルダ上にそのファイルが保存される. □ その他のコマンド及びマニュアルの所在 前述の例題およびOPS5の基本的な使用方法は,ops5ma27.lzhに 含まれている beginer.doc に記載されている.また,OPS5に 実装されているコマンド等のマニュアルはops5ex28.lzh内の Refer.doc に記載されている.