このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1320365280/29
#  [1] 授業単元:プログラミング入門 
#  [2] 問題文:0以上20以下の整数を入力として受け付けて, 
#      その数から20までの整数を順に出力せよ。 
#  

'0以上20以下の整数を入力として受け付けて,その数から20までの整数を順に出力せよ。' :-
        '0以上20以下の整数を入力として受け付けて'(_入力整数),
        'その数から20までの整数を順に出力する'(_入力整数).

'0以上20以下の整数を入力として受け付けて'(_入力整数) :-
        write('0以上20以下の整数を入力して下さい: '),
        get_line(Line),
        '0以上20以下の整数を入力として受け付けて'(Line,_入力整数),!.
'0以上20以下の整数を入力として受け付けて'(_入力整数) :-
        '0以上20以下の整数を入力として受け付けて'(_入力整数).

'0以上20以下の整数を入力として受け付けて'(Line,_入力整数) :-
        atom_to_term(Line,_入力整数),
        integer(_入力整数),
        _入力整数 >= 0,
        _入力整数 =< 20,!.
'0以上20以下の整数を入力として受け付けて'(Line,_入力整数) :-
        writef('入力された %t からは0以上20以下の整数が得られません。再入力をお願いします。\n',[Line]),
        fail.

'その数から20までの整数を順に出力する'(_その数) :-
        for(_その数,_整数,20),
        writef('%t\n',[_整数]),
        _整数 = 20.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

'その数から20までの整数を順に出力する'(20) :-
        write('%t\n',[20]),!.
'その数から20までの整数を順に出力する'(_整数) :-
        writef('%t\n',[_整数]),
        _整数_2 is _整数 + 1,
        'その数から20までの整数を順に出力する'(_整数_2).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

'その数から20までの整数を順に出力する'(_整数) :-
        _整数 > 20,!.
'その数から20までの整数を順に出力する'(_整数) :-
        writef('%t\n',[_整数]),
        _整数_2 is _整数 + 1,
        'その数から20までの整数を順に出力する'(_整数_2).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

'その数から20までの整数を順に出力する'(_その数) :-
        '限界数までの整数を順に出力する'(_その数,20).

'限界数までの整数を順に出力する'(N,_限界数) :-
        N > _限界数,!.
'限界数までの整数を順に出力する'(N,_限界数) :-
        writef('%t\n',[N]),
        N_2 is N + 1,
        '限界数までの整数を順に出力する'(N_2,_限界数).