3つの数の和を計算する


これまでは2つの数 a, b が与えられた時に a+b を計算するプログラムを作っていましたが、今度は3つの数が与えられた時、その和を求めるプログラムを作ってみましょう。プログラムは次のようになります。

サンプルプログラム5

プログラムを解説します。

こうして、プログラムの解説を読んだだけでは、良く分からないかもしれませんが、とりあえず 「実行(R)」から「開始(G)」実行してみてください。そうすると、実行画面が次のようになり

足す数を聞いてきます。1 と入力して、Enter キーを打ってください。すると行番号 40 で a に数 1 が代入されました。次に行番号 50 で sum = sum + a が実行されます。命令を実行する前の、sum の値は 0 で、a の値は 1 なので、命令を実行した後の sum の値は 1 になります。次に行番号 60 に行き、i = i+1 を実行します。命令を実行する前の i の値は 1 ですから、命令を実行した後の i の値は 2 になります。次に行番号 70 へ行き、i の値 2 は、n の値 3 以下なので、行番号 40 へ行きます。行番号 40 では、また a の値を聞いてくるので、実行画面は次のようになります。

ここで、今度は 2 を入力して Enter キーを打ってください。そうすると行番号 40 で a に数 2 が代入されました。次に行番号 50 で sum = sum + a が実行されます。命令を実行する前の、sum の値は 1 で、a の値は 2 なので、命令を実行した後の sum の値は 3 になります。次に行番号 60 に行き、i = i+1 を実行します。命令を実行する前の i の値は 2 ですから、命令を実行した後の i の値は 3 になります。次に行番号 70 へ行き、i の値 3 は、n の値 3 以下なので、行番号 40 へ行きます。行番号 40 では、また a の値を聞いてくるので、実行画面は次のようになります。

ここで、今度は 3 を入力して Enter キーを打ってください。そうすると行番号 40 で a に数 3 が代入されました。次に行番号 50 で sum = sum + a が実行されます。命令を実行する前の、sum の値は 3 で、a の値は 3 なので、命令を実行した後の sum の値は 6 になります。次に行番号 60 に行き、i = i+1 を実行します。命令を実行する前の i の値は 3 ですから、命令を実行した後の i の値は 4 になります。次に行番号 70 へ行き、i の値 4 は、n の値 3 以下ではないので、then の次の goto 命令は実行されません。よって行番号 70 はそのまま通過し、行番号 80 へ行きます。行番号 80 では、sum の値を表示するので、実行画面は次のようになります。

実行結果からわかるように、入力した3つの数の和 1+2+3=6 が、合計として表示されました。このプログラムはちょっと複雑なので分かり難いかもしれません。次に、プログラムの実行過程を表の形で示します。上のプログラムは表の上の行から下の行へと実行されます。表の各列は次の物を意味しています。

ただし、?はまだ値の入力されていない変数を意味しています。

参照番号 行番号 a sum i n
1 10 ? ? ? 3
2 20 ? 0 ? 3
3 30 ? 0 1 3
4 40 1 0 1 3
5 50 1 1 1 3
6 60 1 1 2 3
7 70 1 1 2 3
8 40 2 1 2 3
9 50 2 3 2 3
10 60 2 3 3 3
11 70 2 3 3 3
12 40 3 3 3 3
13 50 3 6 3 3
14 60 3 6 4 3
15 70 3 6 4 3
16 80 3 6 4 3

上の表は、次のようにしてみます。

始めは分かり難いかも知れませんが、慣れればわかってくるはずです。慣れるまではプログラムを上の表に従って、プログラムを一行ごとに追ってみてください。