このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1328276597/522
#  [1] 授業単元: 情報処理 
#  [2] 問題文 
#  (1) 
#  http://ime.nu/ideone.com/F0NZo 
#   
#  上記のプログラムはオープンするファイルが abc に限られている。 
#  キーボードからファイル名を読み込んで、そのファイルをオープンするように変更せよ。 
#   
#  (2) 台形公式を用いて、分割数 N を増やしながら f(x) = x 3 を 0から1の範囲で積分し、 
#  その計算結果と解析解(1/4)の差が0.001未満になったら計算を終了するプログラムを作成せよ。 
#  Nの初期値を1として、Nについての for文を用いること。 
#   

f(X,Y) :- Y is X ^ 3.

'台形公式を用いて、分割数 N を増やしながら f(x) = x 3 を 0から1の範囲で積分し、その計算結果と解析解(1/4)の差が0.001未満になったら計算を終了する' :-
        for(1,N,maxint),
        '0から1の範囲で積分し'(N,_積分値),
        writef('N=%t: 計算結果=%t\n',[N,_積分値]),
        0.001 > abs((1/4) - _積分値).

'0から1の範囲で積分し'(N,_積分値) :-
        _区分間距離 is (1-0) / N,
        f(0,Y_1),
        '0から1の範囲で積分し'(0.0,Y_1,_区分間距離,_積分値).

'0から1の範囲で積分し'(K,_,_区分間距離,0.0) :-
        K >= 1.0,!.
'0から1の範囲で積分し'(X_1,Y_1,_区分間距離,_積分値) :-
        X_2 is X_1 + _区分間距離,
        f(X_2,Y_2),
        _台形面積 is (_Y_1 + _Y_2) * _区分間距離 / 2,
        '0から1の範囲で積分し'(X_2,Y_2,_区分間距離,_積分値_2),
        _積分値 is _台形面積 + _積分値_2.