このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1335517816/592
#  {1] 授業単元:プログラミング言語演習 
#  [2] 問題文:   
#  整数aとbを入力し、a^bを求めるプログラムを作成しなさい 
#   
#  実行例↓ 
#   
#  整数aとbを入力してください 
#  100 2 
#  100の2乗は10000です 
#   
#  2回目の実行例↓ 
#   
#  整数aとbを入力してください 
#  4 0 
#  4の0乗は1です。 
#   
#  

'整数aとbを入力し、a^bを求める' :-
        整数aとbを入力し(_a,_b),
        'a^bを求める'(_a,_b,_x),
        writef('%tの%t乗は%tです。\n',[_a,_b,_x]).

整数aとbを入力し(_a,_b) :-
        write('整数aとbを入力してください : '),
        get_line(Line),
        整数aとbの入力診断(Line,_a,_b),!.
整数aとbを入力し(_a,_b) :-
        整数aとbを入力し(_a,_b).

整数aとbの入力診断(Line,_a,_b) :-
        splie(Line,[' ',','],[_a,_b]),
        integer(_a),
        integer(_b),!.
整数aとbの入力診断(Line,_a,_b) :-
        writef('入力された %t からは二つの整数値が得られません。もう一度、カンマ区切りで二つの整数を入力して改行してください。\n',[Line]),
        fail.

'a^bを求める'(_a,0,1).
'a^bを求める'(_a,_b,_x) :-
        _b > 0,
        _b_1 is _b - 1,
        'a^bを求める'(_a,_b_1,_x_1),
        _x is _a * _x_1.
'a^bを求める'(_a,_b,_x) :-
        _b < 0,
        _b_1 is _b + 1,
        'a^bを求める'(_a,_b_1,_x_1),
        _x is _x_1 / _a.