このプログラム例は、$PROROOT/demos/cの中にあります。新しい述語for_pred/3は、C言語,Pascal,Fortranなどの従来のプログラミング言語で使う”for”文と同様の働きをします。この述語は3つの引数を持ちます。第1引数は、初期整数値、第3引数は最大整数値、第2引数は数列の現在値を与える変数です。その増分は内部で1にセットされ、外部からは変更できません。...
移動
次へ 前へ
上へ 最上
詳細
for_predのソースコード
for_predの説明
参考
理論背景 : ボックスモデルとコル−チン
C言語によるコル−チンの実現
IF/Prologによってサポートされるコル−チン
マクロ定義と関数のライブラリ−
バックトラックをするプログラム例
バックトラックをし、Epilogを持つプログラム例
イフコンピュータ > IF/Prolog > マニュアル > IF/Prolog V4.1 マニュアル > IF/Prolog Interfaces > IF/PrologからC言語へのインタフェ−ス > バックトラックするProlog述語をC言語で書く > バックトラックをするプログラム例

バックトラックをするプログラム例

MINERVA superseeded IF/Prolog. Please see http://www.ifcomputer.co.jp/MINERVA for details.

We discontinued to sell IF/Prolog Dec 31. 2003. For current customers, we continue to provide professional support for IF/Prolog until Dec 31, 2008.

このプログラム例は、$PROROOT/demos/cの中にあります。新しい述語for_pred/3は、C言語,Pascal,Fortranなどの従来のプログラミング言語で使う”for”文と同様の働きをします。この述語は3つの引数を持ちます。第1引数は、初期整数値、第3引数は最大整数値、第2引数は数列の現在値を与える変数です。その増分は内部で1にセットされ、外部からは変更できません。 (注意:この述語は、すでに組み込み述語for/3として提供されています)

/* ---------------------------------------------------------------------- */ /* filename : $PROROOT/demos/c/for_pred.c */ /* for_pred(Min_int, N, Max_int): produces the series of */ /* integers [Min_int,Max_int]. test with (in ./for_test): */ /* go :- M=3,N=6, for(M,I,N),write('I='),write(I),nl,fail. */ /* ---------------------------------------------------------------------- */ #include "cpred.h"

typedef struct {int i; int max;} FORSTATE;

Cboot() { CPRED("for_pred", 3, Forpred, sizeof(FORSTATE)); } /* ---------------------------------------------------------------------- */ COROUTINE(Forpred, FORSTATE, state) RESUME(1, res1); BEGIN if( !XChk(IsInt(Arg(1)) && IsInt(Arg(3)), "integer_expected")) { FAIL; } state->i = IntPC(Arg(1)); state->max = IntPC(Arg(3)); while(state->i <= state->max) { if (UnifyArg(2, IntCP((INT)state->i))) { DETACH(1,res1); } state->i++; } END

for_predのプログラム例は、以下のようになります。

?- for_pred(3,I,5),write('Number='),write(I),nl,fail. Number=3 Number=4 Number=5

no ?-

続く..
for_predのソースコード
以下の表で左側は、for_pred/3に対するCのプログラムを示しています。右側は、cpred.hの中のマクロ定義がC-プリプロセッサによって展開された後の同一のファイルを表しています。...
for_predの説明
-・C関数名”Forpred”は、Cboot()関数の中でマクロ定義CPRED()によってIF/Prologに与えられます。...
IF/Prolog by Siemens
言語
English
Japanese
German
サーバー
USA
Japan
サイトマップ
索引
目次
全体目次
全体索引
印刷向き
imode
PDA
探索
document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/advanced_feature/c_interface/cpredbw/exampb/home_jp.html
published 2008/11/17 update 1995/11/6 (c) 1996-2006 IF Computer Japan
IF Computer 〒113-0022 Tel 03-5814-3352 start (AT) ifcomputer.com
Customer Support 東京都文京区千駄木5-28-2   http://www.ifcomputer.co.jp
冒頭へ managed with ubiCMS