このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1305867431/220
#  全然わからなくて困ってます。よろしくお願いします。 
#  [1] 授業単元:実用プログラミング 
#  [2] 問題文(含コード&リンク): 
#  キーボードから入力された2つの整数と演算番号(1〜4)に対して、ポインタを使って以下の処理をするプログラムを作りなさい。 
#  ただし、演算番号として1〜4以外の値が入力された場合は、"該当する番号がありません.確認して下さい" 
#  と表示してプログラムを終了させることとする。 
#  (↓からプログラム実行例。_が後ろの数字に付いてる所はキーボードからの入力を表す) 
#   
#  2つの実数a,bを入力してください. 
#  a=3_ 
#  b=5_ 
#  計算の種類を選んでください. 
#  1:a+b 
#  2:a-b 
#  3:a*b 
#  4:a/b 
#  ==>4_ 
#  a/b=0.600000 
#  

'キーボードから入力された2つの整数と演算番号(1〜4)に対して、ポインタを使って以下の処理をする' :-
        write('a='),
        'キーボードから整数を入力'(_a),
        write('b='),
        'キーボードから整数を入力'(_b),
        write('計算の種類を選んでください\n'),
        write('1:a+b\n2:a-b\n3:a*b\n4:a/b\n'),
        write('==>'),
        '演算番号(1〜4)の取得'(_演算番号),
        演算(_演算番号,_a,_b,_答え),
        writef('%t\n',[_答え]),!.
'キーボードから入力された2つの整数と演算番号(1〜4)に対して、ポインタを使って以下の処理をする'.

'キーボードから整数を入力'(_整数) :-
        get_line(Line),
        'キーボードから整数を入力診断'(Line,_整数).
'キーボードから整数を入力'(_整数) :- 'キーボードから整数を入力'(_整数).

'キーボードから整数を入力診断'(Line,_整数) :-
        atom_to_term(Line,_整数,_),
        integer(_整数),!.
'キーボードから整数を入力診断'(Line,_整数) :-
        writef('入力された %t から整数が得られません。再入力をお願いします。\n',[Line]),
        fail.

'演算番号(1〜4)の取得'(_演算番号) :-
        get_line(Line),
        '演算番号(1〜4)の取得診断'(Line,_演算番号).

'演算番号(1〜4)の取得診断'(Line,_演算番号) :-
        atom_to_term(Line,_演算記号,_),
        integer(_演算記号),
        _演算記号 >= 1,
        _演算記号 =< 4.
'演算番号(1〜4)の取得診断'(Line,_演算番号) :-
        write('該当する番号がありません.確認して下さい\n'),
        fail.

演算(1,_a,_b,_答え) :-
        _x is _a + _b,
        concat_atom([_a,'+',_b,'=',_x],_答え).
演算(2,_a,_b,_答え) :-
        _x is _a - _b,
        concat_atom([_a,'-',_b,'=',_x],_答え).
演算(3,_a,_b,_答え) :-
        _x is _a * _b,
        concat_atom([_a,'*',_b,'=',_x],_答え).
演算(4,_a,_b,_答え) :-
        _x is _a / _b,
        concat_atom([_a,'/',_b,'=',_x],_答え).