PMプロジェクトマネージャ試験 午前Ⅰ

平成25年度春期 プロジェクトマネージャ 午前Ⅰ 問7

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

問題

メインプログラムを実行した後,メインプログラムの変数 X,Y の値は幾つになるか。ここで,仮引数 X は値呼出し(call by value),仮引数 Y は参照呼出し(call by reference)であるとする。 メインプログラムと手続 add(X、Y) の図は,添付の公式問題ページの問7を参照。 メインプログラム X=2; Y=2; add(X、Y); 手続 add(X、Y) X=X+Y; Y=X+Y; return;
公式問題冊子の問7(図や選択肢を含む)
公式問題冊子の問7(図や選択肢を含む)

選択肢

  1. ア
    X:2,Y:4
  2. イ
    X:2,Y:6
  3. ウ
    X:4,Y:2
  4. エ
    X:4,Y:6
解き方のヒントを見る

引数の受渡しと変数のスコープ

呼出し元と手続内の変数を区別し、代入による変化を追うには、どんな記録が必要だろうか。

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

値呼出し・参照呼出しと、連続する代入文の評価順序を調べ、実行を追跡する準備をしよう。

引数の受渡しと変数のスコープ

値呼出し・参照呼出しと、連続する代入文の評価順序を調べ、実行を追跡する準備をしよう。

確認ポイント

  • 値呼出しと参照呼出しでは、実引数と仮引数の対応関係をどう図示できるか。別の短いプログラム例で比較できるか。
  • 呼出し元と手続内に同名の変数がある場合、スコープと引数の受渡し方式をどう区別して確認するか。
  • 連続する代入文の右辺は、どの時点の値を使って評価されるか。逐次実行の規則を調べられるか。 呼出し前・各代入後・復帰後を行に、呼出し元と手続内の変数を列にした空の追跡表を作れるか。
正解と解説を見る

正解

イ

解説

添付の公式解答表では,問7の正解は「イ」です。呼出し時点では X,Y はともに2。値呼出しの仮引数 X は値のコピーを受け取り,参照呼出しの仮引数 Y はメインプログラムの Y を参照する。手続の X=X+Y; によって仮引数 X は4となり,続く Y=X+Y; によってメインプログラムの Y は4+2=6となる。メインプログラムの X は変更されないため,実行後は X=2,Y=6となる。

添付の公式解答表では,問7の正解は「イ」です。呼出し時点では X,Y はともに2。値呼出しの仮引数 X は値のコピーを受け取り,参照呼出しの仮引数 Y はメインプログラムの Y を参照する。手続の X=X+Y; によって仮引数 X は4となり,続く Y=X+Y; によってメインプログラムの Y は4+2=6となる。メインプログラムの X は変更されないため,実行後は X=2,Y=6となる。

選択肢ア

誤り。メインプログラムの X は2のままだが,手続の最初の代入で仮引数 X は4になる。次の代入ではこの4を使うため,Y は6になる。

選択肢イ(正解)

正しい。値呼出しの仮引数 X を変更しても,メインプログラムの X は2のままである。参照呼出しの Y への代入はメインプログラムの Y に反映され,4+2で6になる。

選択肢ウ

誤り。X は値呼出しなので,手続内の変更はメインプログラムの X に反映されない。一方,Y は参照呼出しなので,手続内の代入によって6に変わる。

選択肢エ

誤り。Y が6になる点は合っているが,4になるのは手続内の仮引数 X である。メインプログラムの X は2のままである。

学習のポイント

値呼出し・参照呼出しと、連続する代入文の評価順序を調べ、実行を追跡する準備をしよう。

出典:独立行政法人 情報処理推進機構(IPA)平成25年度春期 プロジェクトマネージャ試験 午前Ⅰ 問7(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

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