プログラミングの基礎(擬似言語のトレース)
配列 a のすべての要素の合計を求めるつもりで、次のプログラムを書いた。配列の要素番号は1から始まる。実行した後の s の値はどれか。
整数型の配列: a ← {4, 7, 1, 9, 3}
整数型: s ← 0
for (i を 1 から aの要素数 − 1 まで 1 ずつ増やす)
s ← s + a[i]
endfor
- A20
- B21
- C24
答えと解説を見る
正解:B. 21
aの要素数は5なので、i は1から4まで動き、s = 4 + 7 + 1 + 9 = 21 になります。最後の要素 a[5] = 3 が足されないので、正しい合計24より3小さくなります。要素番号が0から始まる言語での書き方(0から要素数 − 1 まで)を、1から始まる配列にそのまま当てはめると、このような1つずれた誤り(オフバイワンエラー)が起こります。
- A. a[2]〜a[5] を足した値です。i は1から始まるので、a[1] = 4 は足され、a[5] が足されません。
- B. 正しい。a[1]〜a[4] の 4 + 7 + 1 + 9 = 21 です。
- C. すべての要素の合計で、意図した値です。終値が要素数 − 1 なので a[5] は足されません。