平成28年度春期 問20 / 80

平成28年度 春期 応用情報技術者試験 午前 問20

メインプログラムを実行した後,メインプログラムの変数 X,Y の値は幾つになるか。ここで,仮引数 X は値呼出し(call by value),仮引数 Y は参照呼出し(call by reference)であるとする。

メインプログラム

X=2;
Y=2;
add(X,Y);

手続 add(X,Y)

X=X+Y;
Y=X+Y;
return;
X Y
ア 2 4
イ 2 6
ウ 4 2
エ 4 6

キーボード:1〜4 で解答 → 次の問題 ← 前の問題

正解と解説を見る

正解:イ

  • 値呼出しの X は,手続の中で値を変えてもメインプログラムの X には影響しません。
  • 参照呼出しの Y は,手続の中で値を変えるとメインプログラムの Y も変わります。

手続 add の中の動きは次のとおりです。

  1. X = X + Y = 2 + 2 = 4(手続内の X だけが 4 になる)
  2. Y = X + Y = 4 + 2 = 6(メインプログラムの Y も 6 になる)

したがって,メインプログラムの X = 2,Y = 6 です。

  • ア: X = 2,Y = 4
    誤り。Y は手続内で X(= 4)を加えて 6 になります。

  • イ: X = 2,Y = 6
    正しい。X は値呼出しなので 2 のまま,Y は参照呼出しなので 6 に変わります。

  • ウ: X = 4,Y = 2
    誤り。X は値呼出しなのでメインプログラムの X は変わらず,Y は参照呼出しなので変わります。逆になっています。

  • エ: X = 4,Y = 6
    誤り。X は値呼出しなので,メインプログラムの X は 2 のままです。


答え

イ: X = 2,Y = 6

出典:平成28年度 春期 応用情報技術者試験 午前 問20

平成28年度春期の他の問題