SAシステムアーキテクト試験 午前Ⅱ
令和7年度春期 システムアーキテクト 午前Ⅱ 問9
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題
選択肢
- ア値呼出し
- イ結果呼出し
- ウ参照呼出し
- エ名前呼出し
解き方のヒントを見る
受渡し方式と呼出し元変数の追跡
引数の受渡し方式を扱う問題では、サブルーチン内で行われた操作が呼出し元のどの記憶領域に届くのかを、方式ごとの定義に照らして一つずつ確かめる姿勢が大切です。暗記した結論に頼らず、手順を追って確認しましょう。
この問題で問われていること
確認すべき観点は一つ、呼出し前後で呼出し元の変数の値がどう変わり得るかを、方式ごとの定義から自分で導けるかどうかです。各方式で何が渡されるのかを定義の言葉で説明できるか確かめてから判断しましょう。
視点
サブルーチン呼出しでは、呼出し元が持つ変数と、サブルーチン側で使われる仮引数という二つの名前が登場します。両者の関係は受渡し方式の定義によって決まります。結論を丸暗記するより、呼出しの時点で何が受け渡され、戻る時点で何が起こるかを定義から順に追うことが理解の近道です。
確認ポイント
- 各受渡し方式について、結論ではなく「何が受け渡されるか」を定義の言葉で自分なりに説明できるか
- 呼出し前・サブルーチン実行中・呼出し後の各時点で、呼出し元の変数の値を順に書き出して追えているか
- 導いた結果を方式の定義に照らし直し、途中の思い込みで判断していないか見直したか
正解と解説を見る
正解
ア
解説
引数として渡した変数の値をサブルーチン実行後も変更しないことが保証されるのは、実引数の値を仮引数へコピーして処理する方式です。サブルーチン内の変更が呼出し側へ戻らない点が判断の根拠になる。
理由
値呼出しでは、呼出し側の変数の値が仮引数へ渡され、サブルーチンはそのコピーを操作する。そのため、サブルーチン内で仮引数の値を変更しても、元の実引数の値は変更されないことが保証される。
比較
結果呼出しは実行終了時に結果を実引数へ戻す方式なので、値が変更され得る。参照呼出しは実引数そのものを操作し、名前呼出しも実引数を評価する形で扱うため、いずれも元の変数が不変とは保証されない。
選択肢ア(正解)
これは正解だよ。値呼出しでは、呼出し側の変数の値を仮引数へコピーして渡すため、サブルーチン内で仮引数を変更しても実引数には反映されない。したがって、サブルーチン実行後に引数として渡した変数の値が変更されないことが保証される。
選択肢イ
これは不正解だよ。結果呼出しは、サブルーチンへ値を渡すだけの方式ではなく、サブルーチン終了時に処理結果を実引数へ戻す方式である。そのため、サブルーチン内で得られた結果によって呼出し側の変数が変更される可能性があり、不変とは保証されない。
選択肢ウ
これは不正解だよ。参照呼出しでは、実引数の値を単に複製して扱うのではなく、実引数を直接参照する仮引数が用いられる。そのため、サブルーチン内で仮引数を変更すると呼出し側の変数にも変更が反映され、値が不変とは保証されない。
選択肢エ
これは不正解だよ。名前呼出しでは、実引数を値のコピーとして固定するのではなく、必要な箇所で実引数を評価するように扱う。その評価対象が変数である場合、サブルーチン内の操作が呼出し側の変数へ影響する可能性があるため、不変であることは保証されない。
学習のポイント
値呼出し、結果呼出し、参照呼出し、名前呼出しの値の伝達方向と変更反映の違いを整理する。
出典:独立行政法人 情報処理推進機構(IPA)令和7年度春期 システムアーキテクト試験 午前Ⅱ 問9(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針