このディレクトリの索引

http://hibari.2ch.net/test/read.cgi/tech/1312201995/876
#  [1] 授業単元:プログラム作成 
#  [2]D, C, B, A, S, Invalid という成績を表す列挙体 
#  enum result を定義し,点数(int 型)を引数として 
#  enum result 型の値を返す関数 
#  seiseki_hantei(int sc) 
#  と,enum result 型の値を引数として,成績を表示する関数も作成する 
#  点数と成績は以下の通とする 
#  0〜59 点: D 
#  60〜69 点: C 
#  70〜79 点: B 
#  80〜89 点: A 
#  90〜100 点: S 
#  それ以外: Invalid 
#   
#   
#  る関数 
#  print_seiseki(enum result res) 
#  を作成せよ.この2 つの関数を使用して,以下の実行例 
#  のように点数を入力すると成績を表示するmain 関数も 
#  作成すること.点数と成績の関係は以下の通りとする. 
#  例. 
#  点数(整数)を入力してください:91 
#  成績はS です。 
#  

:- op(250,xfx,'〜').
:- op(280,xf,'点').
:- op(300,xfx,':').

成績判定表(0 〜 59 点 : 'D').
成績判定表(60 〜 69 点 : 'C'). 
成績判定表(70 〜 79 点 : 'B').
成績判定表(80 〜 89 点 : 'A').
成績判定表(90 〜 100 点 : 'S').

'成績を入力して判定し、それを表示する' :-
        成績を入力して(_成績),
        成績を判定し(_成績,_判定),
        判定を表示する(_判定).

成績を入力して(_成績) :-
        write('点数(整数)を入力してください:'),
        get_line(Line),
        成績入力診断(Line,_成績),!.
成績を入力して(_成績) :-
        成績を入力して(_成績).

成績入力診断(Line,_成績) :-
        atom_to_term(Line,_成績,_),
        integer(_成績),!.
成績入力診断(Line,_成績) :-
        writef('入力された%tからは整数が得られません。再入力をお願いします。\n',[Line]),
        fail.

成績を判定し(_点数,_判定) :-
        成績判定表(_下限 〜 _上限 点 : _判定),
        _成績 >= _下限,
        _成績 =< _上限,!.
成績を判定し(_,成績が異常値).

判定を表示する(_判定) :-
        writef('判定は%tです\n',[_判定]),!.