このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1325685876/194
#  [1] 授業単元:C言語入門  
#  [2] 問題文: http://ime.nu/codepad.org/hsA7qgRQ  
#  
#  課題2
#  
#  物体が自由落下するとき初速度0とすると時刻t, そのtの瞬間の速度v, t秒間の落下距離yの関係は次のようになる.
#  v = gt
#  y = gt2/2.0
#  ただしgは重力加速度で9.8m/s2とする.
#  最初に目的落下距離ylimitをキーボードから入力するようにしておく.そして0.1秒おきのvとyを計算して目的落下距離を越えた時点の速度vを表示せよ.なお目的落下距離をマイナスの数としたときはerrorと表示すること.
#  
#  実行例
#  実行開始
#  100.0              ←キーボードから100m落下させたいと入力
#  45.080000	   ←100m落下したときの速度として毎秒45mを表示
#  
#  

'最初に目的落下距離ylimitをキーボードから入力するようにしておく.そして0.1秒おきのvとyを計算して目的落下距離を越えた時点の速度vを表示せよ' :-
        '最初に目的落下距離ylimitをキーボードから入力するようにしておく'(_目的落下距離),
        'そして0.1秒おきのvとyを計算して目的落下距離を越えた時点の速度vを表示せよ'(0.0,0.0,_目的落下距離,_速度),
        writef('目的な落下距離を越えた時点の速度Vは %t です。\n',[_速度]).

'最初に目的落下距離ylimitをキーボードから入力するようにしておく'(_目的落下距離) :-
        writef('目的落下距離を入力して下さい : '),
        get_line(Line),
        目的落下距離入力診断(Line,_目的落下距離),!.
'最初に目的落下距離ylimitをキーボードから入力するようにしておく'(_目的落下距離) :-
        '最初に目的落下距離ylimitをキーボードから入力するようにしておく'(_目的落下距離).

目的落下距離入力診断(Line,_目的落下距離) :-
        atom_to_term(Line,_目的落下距離,_),
        number(_目的落下距離),
        _目的落下距離 >= 0.0,!.
目的落下距離入力診断(Line,_目的落下距離) :-
        write('error\n'),
        fail.

'そして0.1秒おきのvとyを計算して目的落下距離を越えた時点の速度vを表示せよ'(_落下距離,_目的落下距離,_経過秒数,_速度) :-
        _落下距離 > _目的落下距離,
        _速度 is 9.8 * _経過秒数,!.
'そして0.1秒おきのvとyを計算して目的落下距離を越えた時点の速度vを表示せよ'(_,_目的落下距離,_経過秒数_1,_速度_1,_速度) :-
        _落下距離 =< _目的落下距離,
        _落下距離_2 is 9.8 * (_経過秒数_1 * _経過秒数_1) / 2.0,
        _経過秒数_2 is _経過秒数_1 + 0.1,
        'そして0.1秒おきのvとyを計算して目的落下距離を越えた時点の速度vを表示せよ'(_落下距離_2,_目的落下距離,_経過秒数_2,_速度).