インタプリタにプログラムを読み込む

「インタプリタにプログラムを読み込む」の編集履歴(バックアップ)一覧に戻る

インタプリタにプログラムを読み込む - (2014/05/07 (水) 14:22:40) のソース

インストール作業が完了したら、プログラムを書いて実行させるところまでやってみましょう。
プログラムの夫々の意味は次項以降に記載しています。

試しに使ってみましょう
#image(http://cdn46.atwikiimg.com/az-prolog/?cmd=upload&act=open&page=%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%96%B9%E6%B3%95&file=2.png)
まず最初に起動すると
?-と書いてあるのを消して
上記のように一行づつプログラムを記述します。

3行書いたら?- の後にlisting. と記述すると
上に記載した3行のプログラムが表示されます。
これは正確にインタプリタにプログラムが格納されたことを意味します。

?- 以降は記載したプログラムが正しい動作か否かを確認するための記述です。
XとYは変数です。こちらは次項に説明を行なっています。

?-a(X). と記述した後にEnterキーを押して下さい。
yesと表示されるとプログラムが正しく動作して終了したことを意味します。

最後の?-X is 3,b(X). ですが、今度はEnterキーを押さずに
;を押した後にEnterキーを押して下さい。
;はコマンドでfailと記述しているのと同じ意味です。
プログラム中にfailがあると別の解答がないかprologは自動的に探しに行きます。
別の解を探しますが、見当たらないため、解が見つからなかったのでnoと表示されます。

インタプリタに一行づつプログラムを格納するのは面倒なので、
プログラムをテキストファイルに記述してそれを読み込む方法を行います。

テキストファイルに上記にある3行を記述し、ファイル名をa.plとして
ファイルフォーマットをs-jisにして保存してみてください。
拡張子のplはperlが入っていたらperlスクリプトとしてアイコンが表示されていますが、問題ありません。
(prologの拡張子は元々.plらしいです。)
consultの後に() の中に'a.pl'とありますが、ファイル名をシングルクォーテーションで囲って下さい。

#image(http://cdn46.atwikiimg.com/az-prolog/?cmd=upload&act=open&page=%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%97%E3%83%AA%E3%82%BF%E3%81%AB%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%82%80&file=3.png)

?-listing を実行するとプログラムが格納されていることが分かります。
しかし、もう一度consultを行うとプログラムが二重に格納されてしまいます。
これを防ぐためにs_new というコマンド(prologでは述語といいます。)を実行すると、
インタプリタに格納されたプログラムを消去してくれます。

consultしてs_newを繰り返しするのが面倒な場合はreconsultまたは[-'ファイル名'] と記述する方法があります。
#image(http://cdn46.atwikiimg.com/az-prolog/?cmd=upload&act=open&page=%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%97%E3%83%AA%E3%82%BF%E3%81%AB%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%82%80&file=4.png)