このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1288531658/239
#  [1] 授業単元:プログラミング演習 
#  [2] 問題文(含コード&リンク):文字列の入出力をサブルーチンとして実行する 
#  プログラムを作成せよ。ただし、文字列の入力は複数回行うことができ、 
#  1回入力するたびに入力した文字列を標準出力へ出力すること。 
#  
%%%%%%%%%% 決定性 %%%%%%%%%%%%%

文字列の入出力をサブルーチンとして実行する(_文字列) :-
        get_line(_文字列),
        write_formatted('%t\n',[_文字列]).

%%%%%%%% 繰り返し(非決定性) %%%%%%%%%%

文字列の入出力をサブルーチンとして実行する(_文字列) :-
        get_line(_文字列),
        write_formatted('%t\n',[_文字列]).
文字列の入出力をサブルーチンとして実行する(_文字列) :-
        文字列の入出力をサブルーチンとして実行する(_文字列).

%%%%%%%% 繰り返し(非決定性) %%%%%%%%%%

文字列の入出力をサブルーチンとして実行する(_文字列) :-
        repeat,
        get_line(_文字列),
        write_formatted('%t\n',[_文字列]).

%%%%%%%%% 文字列データ収集(決定性) %%%%%%%%

文字列の入出力をサブルーチンとして実行する(_文字列ならび) :-
        get_line(_文字列),
        文字列の入出力をサブルーチンとして実行する(_文字列,_文字列ならび).

文字列の入出力をサブルーチンとして実行する('end_of_file',[]) :- !.
文字列の入出力をサブルーチンとして実行する(_文字列,[_文字列|R]) :-
        write_formatted('%t\n',[_文字列]),
        get_line(_文字列2),
        文字列の入出力をサブルーチンとして実行する(_文字列2,R).

%%%%%%%%% 文字列データ収集(決定性) %%%%%%%%

文字列の入出力をサブルーチンとして実行する(_文字列ならび) :-
        findall(_文字列,(
                    repeat,
                    get_line(_文字列),
                    ( _文字列=end_of_file,!,fail;
                      write_formatted('%t\n',[_文字列]))),
               _文字列ならび).

%%%%%%%%%% 入力データ検査の定型 %%%%%%%%%%%

文字列の入出力をサブルーチンとして実行する(_文字列,_検査結果) :-
        get_line(_文字列),
        ここに検査を入れる(_文字列,_検査結果),
        write_formatted('%t\n',[_文字列]),!.
文字列の入出力をサブルーチンとして実行する(_文字列,_検査結果) :-
        文字列の入出力をサブルーチンとして実行する(_文字列).

ここに検査を入れる(_文字列,_検査結果) :-
        例えば整数検査ならば,
        atom_to_term(_文字列,_検査結果,_),
        入力検査(_検査結果),!.
ここに検査を入れる(_文字列,_検査結果) :-
        再入力を求める(_文字列),
        fail.

再入力を求める(_文字列) :-
        write_formatted('入力された %t は適切な値を得られませんでした。\n再入力をお願いします。\n',[_文字列]).