本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

平成25年度 春期 高度情報技術者試験問題と解説

問7

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

メインプログラム
 X=2;
 Y=2;
 add(XY);

手続きadd(XY)
 XXY;
 YXY;
 return;

      ┌──┬──┐
      │ X │ Y │
    ┌─┼──┼──┤
    │ア│ 2 │ 4 │
    ├─┼──┼──┤
    │イ│ 2 │ 6 │
    ├─┼──┼──┤
    │ウ│ 4 │ 2 │
    ├─┼──┼──┤
    │エ│ 4 │ 6 │
    └─┴──┴──┘


正解


解説

値呼び出しは引数(変数)の値をコピーして渡す渡し方である。
サブ関数の中で引数がどのような値に変化しても、呼び出した元プログラムの引数の値は変らない。

参照呼出しは引数(変数)の値を共有する渡し方である。 (アドレス渡し)
サブ関数の中で引数の値が変化したら、呼び出した元プログラムの引数の値にも反映される。

これを踏まえて、プログラムを順に追いかける。
 X=2;       ・・・X=2、Y=0
 Y=2;       ・・・X=2、Y=2
 add(22);
    X22  ・・・X=4、Y=2
    Y42  ・・・X=4、Y=6
    return;
終了時点では X=2、Y=6となる。

問6 目次 問8