プログラミングの基礎(擬似言語のトレース)

次のプログラムの 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
  1. A1
  2. B2
  3. 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 を呼んだ場合の値です。
この分野を解く 分野ページへ

関連する計算ツール

プログラミングの基礎(擬似言語のトレース)の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

プログラミングの基礎(擬似言語のトレース)のほかの問題

  1. 要素数 n の配列 a から値 x を探し、見つかった要素番号を i に求める次のプログラムがある。配列の要素番号は1から始まる。and と or は、左側の式だけで結果が決まるときは右側の式を評価しない。【a】に入れる条件式のうち、x が a の中にないときに範囲外の a[n + 1] を参照してしまうものはどれか。
  2. 実数型の値は IEEE 754 の倍精度(binary64)で表し、加算の結果は最も近い表せる値に丸める。次のプログラムを実行した後の c の値はどれか。
  3. クラス Counter は、インスタンスごとに整数型のメンバ変数 count(生成時は0)を持ち、メソッド inc() は自分の count に1を加える。次のプログラムを実行した後の x の値はどれか。
  4. クラス Counter は、インスタンスごとに整数型のメンバ変数 count(生成時は0)を持ち、メソッド inc() は自分の count に1を加える。Counter 型の変数には、インスタンスそのものではなく、インスタンスへの参照が入る。次のプログラムを実行した後の x の値はどれか。
  5. 次のプログラムで、x と y の値を入れ替えるつもりで2つの代入文を書いた。実行した後の x と y の値の組はどれか。