応用情報技術者試験 応用情報技術者試験 平成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.32%(950件)

解説

応用情報技術者試験 平成28年度春期 午前 問20「メインプログラムを実行した後,メインプログラムの変数 X,Y の値は幾つになるか…」の正解と解説です。応用情報技術者試験の「テクノロジ系」分野の過去問で、これまでの受験者の正答率は約52%です。

正解

イ. X = 2,Y = 6

正答率 52.3%(950人中 497人が正解)

問題の解説

値呼出しでは実引数の値のコピーが仮引数に渡るので、手続内で X を書き換えても、メインの X は変わらない。参照呼出しでは仮引数が実引数そのものを指すので、手続内での Y の書換えがメインの Y に反映される。手続内では X = X + Y = 2 + 2 = 4、Y = X + Y = 4 + 2 = 6 となり、メインの X は 2、Y は 6 になる。

選択肢ごとの解説

  • アY = X + Y の X は、直前に手続内で 4 に書き換えた値なので、Y は 4 + 2 = 6 になる。X を 2 のままとして 2 + 2 = 4 とするのは誤りである。
  • イ正しい。X は値呼出しなので手続内の変更が戻らず 2 のまま、Y は参照呼出しなので手続内の結果の 6 が反映される。
  • ウ値呼出しと参照呼出しを取り違えた結果である。X は値呼出しで 2 のまま、Y は参照呼出しで 6 になる。
  • エY は 6 になるが、X は値呼出しなので、手続内で 4 になってもメインの X は 2 のままである。

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

応用情報技術者試験 の iOS アプリ版

アプリ版なら、よりスムーズに動作し、
スワイプで問題遷移ができます。

応用情報技術者試験 合格.dev を App Store でダウンロード