プログラミングの基礎(擬似言語のトレース)
次のプログラムの and は、左側の式が false のときは右側の式を評価しない(短絡評価)。cnt は大域変数である。実行した後の cnt の値はどれか。
整数型: cnt ← 0
○論理型: even(整数型: k)
cnt ← cnt + 1
return k mod 2 = 0
for (i を 1 から 5 まで 1 ずつ増やす)
if (i > 3 and even(i))
出力 i
endif
endfor
- A1
- B2
- C5
答えと解説を見る
正解:B. 2
i = 1〜3 では左側の i > 3 が false なので、右側の even(i) は呼ばれません。i = 4 と i = 5 では i > 3 が true なので even(i) が呼ばれ、cnt は2になります。出力されるのは、条件全体が true になる i = 4 だけです。両側を必ず評価する方式なら even は5回呼ばれ、cnt = 5 になります。
- A. 条件全体が true になって出力される回数(i = 4 の1回)です。
- B. 正しい。i = 4、5 のときだけ even が呼ばれます。
- C. 短絡評価をしないで、毎回 even を呼んだ場合の値です。