このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1357748713/609
#  [1] 授業単元:プログラミング演習 
#  [2] 問題文(含コード&リンク) 
#  問題1 キーボードから入力した複数個の整数の、加算と積算の計算結果を表示するプログラムを作成しなさい。
ただし、このプログラムは、連続して実行される前半と後半の2部構成で作成してください。 
#  0が入力された時点で、入力処理を終了し結果の表示を行ってください。 
#  すなわち、前半の処理では、キーボードから入力した数値の加算合計の表示を、0が入力されるまで繰返し、後半の処理ではキーボードから入力した数値の積算値の表示を、0が入力されるまで繰返すプログラムを作成してください。 
#  【条件】 
前半の「和を求める」繰返しは while 文、後半の「積を求める」繰返しは do-while 文を使用して作成すること。 
#  【実行例】
=加算処理= 
#  
値:6
 
#  値:8 
#  
値:12
 
#  値:0 
#  
合計は26です。 
#  
=積算処理= 
#  
値:2 
#  
値:6 
#  
値:3 
#  
値:3 
#  
値:0
 
#  積算値は108です。 
#  問題2 繰返し処理を用いて、m ÷ nの計算をするプログラム(商を求める)を作成しなさい。 
ただし、演算に割り算記号 / を使ってはいけません。また、mとnはキーボードから入力してください。 
#  【ヒント】 
・割り算をするとは、mからnを何回引くことができたか?を調べることと等価です 。元の数mが正の間、nを引くことができた回数が、割り算の商となります。 
#  この回数を、 繰返し処理を使って数えさせてください。 
・繰返し条件は、「mからnを引いた結果が正の値の間」繰り返し、商を1ずつ増やしていきます。 
#  負の値になったら、繰返しを終了します。 
#  

'問題2 繰返し処理を用いて、m ÷ nの計算をするプログラム(商を求める)を作成しなさい。ただし、演算に割り算記号 / を使ってはいけません。また、mとnはキーボードから入力してください。' :-
        'mとnはキーボードから入力してください'(_m,_n),
        '繰返し処理を用いて、m ÷ nの計算をする'(0,_m,_n,_商,_剰余),
        writef('%t ÷ %t = %t...%t\n',[_m,_n,_商,_剰余]).

'mとnはキーボードから入力してください'(_m,_n) :-
        整数を得る(被除数,_m > 0,_m),
        整数を得る(除数,_n > 0,_n).

'繰返し処理を用いて、m ÷ nの計算をする'(_m,_n,_商,_剰余) :-
        '繰返し処理を用いて、m ÷ nの計算をする'(0,_m,_n,_商,_剰余).

'繰返し処理を用いて、m ÷ nの計算をする'(_商,_剰余,_n,_商,_剰余) :-
        _剰余 < _n,!.
'繰返し処理を用いて、m ÷ nの計算をする'(_商_1,_m,_n,_商,_剰余) :-
        _m_1 is _m - _n,
        _商_2 is _商_1 + 1,
        '繰返し処理を用いて、m ÷ nの計算をする'(_商_2,_m_1,_n,_商,_剰余).