SAシステムアーキテクト試験 午前Ⅱ

令和3年度春期 システムアーキテクト 午前Ⅱ 問8

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

サブルーチンへの引数の受渡し方のうち,引数として渡した変数の値が,サブルーチンの実行後に変更されないことが保証されているものはどれか。

選択肢

  1. ア
    値呼出し
  2. イ
    結果呼出し
  3. ウ
    参照呼出し
  4. エ
    名前呼出し
解き方のヒントを見る

引数の受渡しで共有されるものを見極める

引数の受渡し方式を区別するときは、名称を覚えるより、呼出し側から呼ばれる側へ実際に何が渡され、両者の間で何が共有されるのかを一つの観点として整理し、その観点から各内容の妥当性を自分で確かめる姿勢が役立ちます。

この問題で問われていること

問われているのは、各方式について、呼ばれる側の処理が呼出し側のデータにどのような形で関わり得るかを区別できるかどうかです。受け渡される対象と、それが処理の前後でどう扱われるかに注目してください。

視点

サブルーチン呼出しでは、呼出し側が持つデータと、呼ばれる側が処理に使うデータの間に何らかの対応付けが生じます。方式を区別する際は、この対応付けが『何を介して』成り立っているのかを一つの軸として考えると整理しやすくなります。個々の方式の結論を先に暗記するのではなく、この軸に沿って自分で状況を想定し、呼出しの前・処理中・呼出し後でデータがどうなるかを順に追ってみることが、どのような形で問われても応用できる検討の進め方です。

確認ポイント

  • 呼出し時に呼ばれる側へ渡されている対象が何なのかを、自分の言葉で説明できるか確認する
  • 呼ばれる側での処理が、呼出し側のデータとどのような関係を持ち得るかを、方式ごとに自分で想定してみる
  • 呼出しの前と後で呼出し側のデータがどう扱われるかを、簡単な例を思い浮かべて順に追って確かめる
正解と解説を見る

正解

ア

解説

値呼出しは、呼出し側の変数の値をサブルーチン側の別の領域へ複製して渡す方式です。そのため、サブルーチン内で引数を変更しても呼出し側の変数には影響せず、実行後も元の値が保たれる。

理由

値呼出しでは、呼出し時に引数の値だけがサブルーチンへ渡される。サブルーチン側で受け取った引数を変更しても、それは渡された値の複製に対する変更であり、呼出し側の元の変数は変更されない。したがって、実行後に元の値が変更されないことが保証される。

比較

結果呼出しはサブルーチン終了時に結果を呼出し側へ反映し得る。参照呼出しは呼出し側の変数を直接参照するため、サブルーチン内の変更が元の変数へ及び得る。名前呼出しも、実引数を評価する仕組みによって元の変数への操作が生じ得るため、値の不変更を保証する方式ではありません。

選択肢ア(正解)

これは正解だよ。値呼出しは、呼出し側の変数そのものではなく、その時点の値をサブルーチン側へ渡す方式である。サブルーチン内で引数の値を変更しても、変更対象は渡された複製であり、呼出し側の元の変数には反映されないため、実行後も元の値が保たれる。

選択肢イ

これは不正解だよ。結果呼出しでは、サブルーチンの実行時には局所的な値を扱う場合でも、処理終了時にその結果を呼出し側へ反映することがある。そのため、引数として渡した変数の値が実行後に変更されないことを保証する方式とはいえない。

選択肢ウ

これは不正解だよ。参照呼出しは、引数の値だけを複製するのではなく、呼出し側の変数を直接参照できるようにする方式である。サブルーチンが参照先へ代入や変更を行うと、呼出し側の元の変数にも影響するため、不変更は保証されない。

選択肢エ

これは不正解だよ。名前呼出しは、通常の値の複製とは異なり、サブルーチンで引数が使われる時点に実引数を評価する考え方である。引数の利用が呼出し側の変数への操作につながる場合があるため、実行後の元の値が必ず保たれる方式ではない。

学習のポイント

値呼出しと、変更が呼出し側へ反映され得る方式の違いを整理する。

出典:独立行政法人 情報処理推進機構(IPA)令和3年度春期 システムアーキテクト試験 午前Ⅱ 問8(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針