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

クラス Counter は、インスタンスごとに整数型のメンバ変数 count(生成時は0)を持ち、メソッド inc() は自分の count に1を加える。次のプログラムを実行した後の x の値はどれか。

Counter: c1 ← new Counter()
Counter: c2 ← new Counter()
c1.inc()
c1.inc()
c2.inc()
c1.inc()
整数型: x ← c1.count × 10 + c2.count
  1. A13
  2. B31
  3. C44
答えと解説を見る

正解:B. 31

オブジェクト指向では、new Counter() はそのたびに新しいインスタンスを生成するので、c1 と c2 はそれぞれ別の count を持ちます。c1.inc() は c1 の count だけを増やすので、c1.count = 3、c2.count = 1 です。x = 3 × 10 + 1 = 31 になります。メンバ変数の値はインスタンスごとに別々に保持されます。

  • A. c1 と c2 の count を取り違えた場合の値です。
  • B. 正しい。c1.count = 3、c2.count = 1 です。
  • C. count がすべてのインスタンスで共有されると考えた場合の値です。メンバ変数はインスタンスごとにあります。
この分野を解く 分野ページへ

関連する計算ツール

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

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

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

  1. クラス Counter は、インスタンスごとに整数型のメンバ変数 count(生成時は0)を持ち、メソッド inc() は自分の count に1を加える。Counter 型の変数には、インスタンスそのものではなく、インスタンスへの参照が入る。次のプログラムを実行した後の x の値はどれか。
  2. 次のプログラムで、x と y の値を入れ替えるつもりで2つの代入文を書いた。実行した後の x と y の値の組はどれか。
  3. 3つの変数の値を順に送る次のプログラムを実行した後の a、b、c の値の組はどれか。
  4. x を3倍することを繰り返す次のプログラムを実行した後の n の値はどれか。
  5. i を2ずつ増やす次の for 文を実行した後の s の値はどれか。