このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1320365280/102
#  [1] プログラミング実習応用  
#  [2] √a(ただしaは正の実数)の近似値を求めて表示するプログラムを作成せよ。 
#    X(n)=1/2{X(n-1)+a/X(n-1)},X(0)=1.0  ()の文字は右下の文字。 
#    ・nは整数型、X(n)は実数型(float or double) ・aの値はキーボードから入力 
#    ・再起呼び出しによる方法、逐次的に計算する方法のいずれでもよい 
#  

'X'(_a,0,1.0).
'X'(_a,_n,X) :-
        _n_1 is _n - 1,
        'X'(_a,_n_1,Y),
        X is Y / 2 + _a / ( 2 * Y).

'√a(ただしaは正の実数)の近似値を求めて表示する' :-
        'aはキーボードから入力'(_a),
        'X'(_a,50,_近似値),
        表示する(_近似値).

'aはキーボードから入力'(_a) :-
        write('aを入力して下さい : '),
        get_char(Line),
        'aはキーボードから入力'(Line,_a),!.
'aはキーボードから入力'(_a) :-
        'aはキーボードから入力'(_a).

'aはキーボードから入力'(Line,_a) :-
        atom_to_term(Line,_a,_),
        float(_a),
        _a >= 0.0,!.
'aはキーボードから入力'(Line,_a) :-
        writef('入力された %t からは正の実数が得られません。再入力をお願いします。\n',[Line]),
        fail.