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

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

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

問題の図表(IPA公式問題冊子より引用)
図表:IPA公式問題冊子より

※選択肢ア〜エは上の図表内に記載されています。

解答・解説を見る

正解:イ

AI解説

正解はイ。値呼出し(call by value)では実引数の値のコピーが仮引数に渡されるため、副プログラム内で仮引数Xを変更しても呼出し元の変数Xには反映されない。一方、参照呼出し(call by reference)では変数の格納場所(参照)そのものが渡されるため、仮引数Yへの変更は呼出し元の変数Yにそのまま反映される。 ア: XとYの両方に副プログラムでの変更が反映されるとした値の組であり、Xが値呼出しである点を見落としているため誤り。 イ: Xは呼出し前の値のまま変わらず、Yのみ副プログラム内の計算結果が反映された値の組であり、正しい。 ウ: XとYのどちらにも変更が反映されないとした値の組であり、Yが参照呼出しである点を見落としているため誤り。 エ: 呼出し方式の効果を取り違えて計算した値の組であり、誤り。 💡 『値呼出し=コピーを渡すので元は不変、参照呼出し=本体を渡すので元も変わる』と覚える。トレース問題では、副プログラム側の計算をメイン側に戻すのは参照呼出しの引数だけである。

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

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

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

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

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