このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1335517816/216
#  [1] 授業単元:プログラミング  
#  [2] 問題文:  
#  国語、数学、英語の得点を受け取ると、その合計点を返すgoukei関数と3教科の合計点を受け取ると 
#  それが200点以上の場合にはA、150点以上200点未満の場合にはB、150点未満の場合にはCを返すhyouka関数を作成せよ。 
#  そして国語、数学、英語の得点を入力し、その合計点と成績を出力するプログラムをmain関数からgoukei関数およびhyouka関数を呼び出す形で作成しなさい。 
#   
#  

'国語、数学、英語の得点を入力し、その合計点と成績を出力する' :-
        '国語、数学、英語の得点を入力し'(_国語,_数学,_英語),
        'その合計点と成績を出力する'(_国語,_数学,_英語).

'国語、数学、英語の得点を入力し'(_国語,_数学,_英語) :-
        国語の点数の入力(_国語),
        数学の点数の入力(_数学),
        英語の点数の入力(_英語).

国語の点数の入力(_国語) :-
        write('国語の点数を入力してください : '), 
        点数を入力する(_国語),!.
国語の点数の入力(_国語) :-
        国語の点数の入力(_国語).

数学の点数の入力(_数学) :-
        write('数学の点数を入力してください : '), 
        点数を入力する(_数学).
数学の点数の入力(_数学) :-
        数学の点数の入力(_数学).

英語の点数の入力(_英語) :-
        write('英語の点数を入力してください : '), 
        点数を入力する(_英語).
英語の点数の入力(_英語) :-
        英語の点数の入力(_英語).

点数を入力する(_点数) :-
        get_line(Line),
        点数を入力診断(Line,_点数),!.

点数を入力診断(Line,_点数) :-
        atom_to_term(Line,_点数,_),
        integer(_点数),
        _点数 >= 0,
        _点数 =< 100,!.
点数を入力診断(Line,_点数) :-
        writef('入力された %t からは適切な点数が得られません。再入力をお願いします。\n',[Line]),
        fail.

'その合計点と成績を出力する'(_国語,_数学,_英語) :-
        '国語、数学、英語の得点を受け取ると、その合計点を返す'(_国語,_数学,_英語,_合計点),
        評価(_合計点,_評価),
        writef('国語 = %t点\n数学 = %t点\n英語 = %t点\n合計点 = %t点\n評価 = %t',[_国語,_数学,_英語,_合計点,_評価]).
        

'国語、数学、英語の得点を受け取ると、その合計点を返す'(_国語,_数学,_英語,_合計点) :-
        _合計点 is _国語 + _数学 + _英語.

評価(_3教科の合計点,_評価) :-
        '3教科の合計点を受け取るとそれが200点以上の場合にはA、150点以上200点未満の場合にはB、150点未満の場合にはCを返す'(_3教科の合計点,_評価).

'3教科の合計点を受け取るとそれが200点以上の場合にはA、150点以上200点未満の場合にはB、150点未満の場合にはCを返す'(_3教科の合計点,'A') :-
        '3教科の合計点を受け取るとそれが200点以上の場合には'(_3教科の合計点),!.
'3教科の合計点を受け取るとそれが200点以上の場合にはA、150点以上200点未満の場合にはB、150点未満の場合にはCを返す'(_3教科の合計点,'B') :-
        '3教科の合計点を受け取るとそれが150以上200点未満の場合には'(_3教科の合計点),!.
'3教科の合計点を受け取るとそれが200点以上の場合にはA、150点以上200点未満の場合にはB、150点未満の場合にはCを返す'(_3教科の合計点,'C') :-
        '3教科の合計点を受け取るとそれが150未満の場合には'(_3教科の合計点),!.

'3教科の合計点を受け取るとそれが200点以上の場合には'(_3教科の合計点) :-
        _3教科の合計点 >= 200.

'3教科の合計点を受け取るとそれが150以上200点未満の場合には'(_3教科の合計点) :-
        _3教科の合計点 >= 150,
        _3教科の合計点 < 200.

'3教科の合計点を受け取るとそれが150未満の場合には'(_3教科の合計点) :-
        _3教科の合計点 < 150.