過去問解きまくり研究所 ホーム

令和5年度 科目B 問2

アルゴリズム

手続に関する問題

次の記述中の[ ]に入れる正しい答えを,解答群の中から選べ。

次のプログラムにおいて,手続 proc2 を呼び出すと,[ ]の順に出力される。

〔プログラム〕

○proc1()
  "A" を出力する
  proc3()

○proc2()
  proc3()
  "B" を出力する
  proc1()

○proc3()
  "C" を出力する
答えと解説を見る

✓ これが正解ク“C”,“B”,“A”,“C”

解説

proc2は C、B、A、C の順に出力します。

この問は、手続の中から別の手続を呼び出したとき、出力がどの順に並ぶかを追う問です。手続を呼び出すと、呼ばれた側の処理を最後まで実行してから、呼んだ側の次の行に戻って続きを実行します。この戻り先を見失わないことが軸になります。

proc2 の中身は、proc3 の呼出し、B の出力、proc1 の呼出しの3行です。1行目で proc3 に入り C を出力して戻ります。2行目で B を出力します。3行目で proc1 に入ると、まず A を出力し、続けて proc1 の中から proc3 を呼び出して C を出力します。proc3 から proc1 に戻り、proc1 も最後まで終わるので proc2 に戻って終了します。

したがって出力は C、B、A、C の4つで、この順になります。B を出力する行はプログラム全体で proc2 の中に1回しかなく、proc2 は1回しか呼ばれないので、B はちょうど1回だけ現れます。また C は proc3 からしか出力されず、proc3 は proc2 から直接1回、proc1 経由で1回呼ばれるので、2回現れます。

呼出しの問は、各文字を出力する行が何回実行されるかを先に数えておくと、並びを追う前に候補をかなり絞り込めます。

ほかの選択肢はなぜ違うのか

出典:令和5年度 基本情報技術者試験 科目B 問2

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)