このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1305867431/146
#  [1] 授業単元:プログラミング演習  
#  [2] 問題文(含コード&リンク):  
#    for文を用いて、下の実行結果のように、定価(price)を入力すると 
#    1〜9割引の価格(kakaku)を表示するプログラムを作成せよ 
#   
#    定価の入力:500 
#      1割引=450 
#      2割引=400 
#      3割引=350 
#      4割引=300 
#      5割引=250 
#      6割引=200 
#      7割引=150 
#      8割引=100 
#      9割引=50 
#   
#  

'for文を用いて、下の実行結果のように、定価を入力すると1〜9割引の価格を表示する' :-
        定価を入力(_定価),
        for(1,N,9),
        _割引率 is 0.5 * N,
        _価格 is _定価 * ( 1 - _割引率),
        writef('%t割引 = %t\n',[N,_価格]),
        N = 9.

定価を入力(_定価) :-
        write('定価を入力してください : '),
        get_line(Line),
        定価入力診断(Line,_定価),!.
定価を入力(_定価) :- 定価を入力(_定価).

定価入力診断(Line,_定価) :-
        atom_to_term(Line,_定価,_),
        number(_定価),
        _定価 >= 0,!.
定価入力診断(Line,_定価) :-
        writef('入力された文字列 %t から定価に相応しい値を得られませんでした。再入力をお願いします\n',[Line]),
        fail.


%
%  for/3とbetween/3の違いはbetween(Start,End,N)はEnd >= Startでなくてはならないのに
%  対して
%  for/3はStart < Endが許される。この場合Nは降順に呼び出される。
%