応用情報技術者試験 応用情報技術者試験 平成28年度春期 午前20: メインプログラムを実行した後,メインプログラムの変数 X,Y の値は幾つになるか。ここで,仮引数 X は値呼出し(call by value),仮引数 Y は参

応用情報技術者試験 平成28年度春期 午前
Q 2020 / 80
メインプログラムを実行した後,メインプログラムの変数 X,Y の値は幾つになるか。ここで,仮引数 X は値呼出し(call by value),仮引数 Y は参照呼出し(call by reference)であるとする。 メインプログラムと手続 add(X,Y) の内容は図に示すとおりである。
XY
24
26
42
46
メインプログラム(X=2; Y=2; add(X,Y);)と手続 add(X,Y)(X=X+Y; Y=X+Y; return;)のプログラムコードボックス
この問の正解率:52.37%(949件)

問題本文

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

選択肢

  • .X = 2,Y = 4
  • .X = 2,Y = 6
  • .X = 4,Y = 2
  • .X = 4,Y = 6

正解

. X = 2,Y = 6

解説

値呼出し(call by value)は引数の「値の複製」を渡すので手続側での変更は呼出し元に戻らず、参照呼出し(call by reference)は変数そのものを共有するので手続側での変更が呼出し元に反映される、という違いを問う問題である。メインで X=2,Y=2 として add を呼ぶと、手続内で X=X+Y=4、続いて Y=X+Y=4+2=6 となる。Xは値呼出しなので変更はメインに戻らずメインの X は2のまま、Yは参照呼出しなので変更が反映されメインの Y は6になる。よって正解はイ(X=2, Y=6)である。

応用情報技術者試験 平成28年度春期 午前過去問一覧へ戻る・問20