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

分野:アルゴリズムとプログラミング(データ構造・アルゴリズム・探索整列・計算量の実際・擬似言語・プログラム言語・データ記述言語)|実際に出題されたIPA過去問題

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

問題の図表(IPA公式問題冊子より引用)
図表:IPA公式問題冊子より
  1.  X:2,Y:4
  2.  X:2,Y:6
  3.  X:4,Y:2
  4.  X:4,Y:6
解答・解説を見る

正解:イ

AI解説

値呼出し(call by value)は実引数の値のコピーを渡すため、手続内で仮引数を変更しても呼出し元の変数は変わらない。参照呼出し(call by reference)は変数の実体(アドレス)を渡すため、手続内の変更が呼出し元に反映される。本問ではXは値呼出しなのでmainのXは2のまま、Yは参照呼出しなので手続内での更新結果6が反映され、X:2、Y:6のイが正しい。 ア: Yを4とするのは、手続内でのYへの最終的な代入結果を追い切れていない誤りである。 イ: 正しい。値呼出しのXは呼出し元に影響せず2のまま、参照呼出しのYは手続内の計算結果6が反映される。 ウ: XとYの呼出し方式を取り違え、Xに手続内の変更が反映されるとした誤りである。 エ: Xも参照呼出しとして手続内の変更4が反映されるとした誤りである。値呼出しではコピーが変更されるだけである。 💡 「値呼出し=コピーを渡す→元は不変」「参照呼出し=実体を渡す→元も変わる」が鉄則。トレースでは、仮引数と実引数が同じ箱か別の箱かを図に書いて追うと間違えない。

出典:平成25年度 春期 応用情報技術者試験 午前 問20 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。
📱 演習アプリで解く(無料・登録不要・2,640問収録)

「アルゴリズムとプログラミング」分野の攻略ポイント

データ構造・アルゴリズム・探索と整列・計算量・擬似言語・プログラム言語・データ記述言語が対象です。擬似言語のトレースは時間はかかるものの、落ち着いて表を書けば必ず正解にたどり着く「確実に取れる」問題です。

アルゴリズムとプログラミングの攻略ポイントをすべて見る(要点6項目・ひっかけ3項目)→

同じ分野(アルゴリズムとプログラミング(データ構造・アルゴリズム・探索整列・計算量の実際・擬似言語・プログラム言語・データ記述言語))の過去問