基本情報技術者試験対策(39)「擬似言語(プロローグ)」

スポンサーリンク
IT系

擬似言語で正解するための切り札はトレース

科目Bで出題される、擬似言語で正解するための切り札が、トレースである。 トレースを有効活用すれば、合格点を十分に取れる。

トレースとは、プログラムを実行順どおりに1行ずつ追っていきながら、その途中の変数の値条件式の真偽を記入する作業である。 これにより、プログラムの実行途中で、 現在の変数の値を忘れる事態を避けられる。

試験問題を作成する情報処理推進機構 (IPA) Webサイト上に公開した「採点講評」を分析すると、過去29問中28回も 「トレース」 や 「追跡」 (トレースと同義)が重要であると解説している。つまり「トレースを活用できれば、正答率が上がる」とほぼ毎回教えてくれているのである。 採点講評の例は、次のとおりである。

プログラムをトレースして処理の流れを理解することは, ソフトウェア開発者に必要とされる能力なので、身につけておいてほしい。

採点講評(基本情報技術者試験 平成27年春 午後問8)

なお、「採点講評」 とは、 情報処理推進機構 (IPA) が、採点結果のフィードバックのために、解答の傾向と状況・出題者の考察をまとめたものである。 過去29問とは、採点講評が公開された平成18年(2006年) 秋から令和元年(2019年) 秋までの期間の擬似言語の問題数である。

トレースがとても重要なのに、 解答段階でうまく活用されていない現実がある。 トレースの具体的なやり方があいまいなため、粗くメモ書きする程度にとどまっているのである。 また、 「メモを書け」 と言われても 「一体どう書けばよいの?」 との声が多いのである。

そこで、トレースを下記に学習しやすい形式で紹介している。

また、問題中のプログラムをもとに、各行がどんな処理を実行しているかを解釈しようとしがちである。 それ自体は間違ってはいないのだが, その前にやるべきことがある。 それがトレースである。

確かにプログラムの解釈により、 正解できる設問もある。 しかし、すべてのプログムを解釈できるかというと、それはあやしいだろう。 なぜなら受験者が初めて見るアルゴリズムのプログラムを出題者はあえて出題するからである。 つまり、 プログラムを解釈するという解き方は、あるプログラムではうまくいっても、 別の問題ではうまくいかないケースが少なくないのである。

つまり、プログラムの解釈は、当たりはずれが大きいのである。 試験という緊張した環境下では安定して正解できるトレースがまず最初に行うべき解法である。 要するに、 当たりはずれがある 「解釈」 でなく、 当たりばかりの 「トレース」 がよいのである。

そして、トレースをしながら, 処理内容を解釈するのが最善の方法である。

こう解く!トレース

トレースは、 擬似言語において最も基本となる解法となる。 実行途中で、現在の変数の値を忘れる事態を避ける目的で、トレース表に記入しながら、プログラムを追っていく。

[プログラム]

1: 整数型: a, b 
2:a←1
3:b←0
4: while (a <3)
5: b ← b + a
6: a ←a + 1
7: endwhile
8: bを出力する
通し番号トレース表条件式ab
A2:a←11
B3:b←00
C4: while (a < 3)1 < 3 T
D 5: b← b + a1
E6:a←a + 12
F4: while (a <3)2 < 3 T
G5:b← b + a3
H6:a←a + 13
I4: while (a <3)3 < 3 F
J8: bを出力する。

(説明)
・通し番号は、プログラムの行番号と区別するため、A、B、Cと記載している。
・表の左側には、a,bなど変数名を記入する。
・条件式には、真ならば 「T」を、偽ならば 「F」を記入する。
・トレース表には、命令後自体は記入せず、行番号のみ記入してもOk。つまり「2:a←1」でなく、「2」とだけ記入すればよい。

トレース表に記入しない行

すばやく記入するために、次の命令語については, トレース表に記入しない。これらの命令語では変数の値が変わることがないため、記入を省略する。

変数の宣言。 ただし、例えば 「整数型: a ← 0 」 のように, 変数の宣言と値の格納を1行で行っている場合は、変数の値 が変わるためトレース表に記入する。

以下は、変数の値が変わらないため、トレース表に記入しない。

  • else
  • endif
  • endwhile
  • do
  • endfor

トレース表に記入する条件式

試験問題の表記は 「a が 5 より大きい」 などのこともあるが、このトレース表では、 すばやく記入するために、 それを 「a > 5」と記述する。

試験問題の表記トレース表試験問題の表記の例トレース表の例真になる変数aの値の例 (値が整数の場合)
より大きいaが5より大きいa > 56,7,8…(5は含まず)
以上aが5以上a ≧ 55,6,7…(5を含む)
より小さいaが5より小さいa <54,3,2…(5は含まず)
以下aが5以下a≦55,4,3…(5を含む)
等しいaが5と等しいa=55
等しくないaが5と等しくないa ≠ 53, 4, 6, 7…

参考)情報処理教科書 出るとこだけ!基本情報技術者[科目B]第4版 橋本 祐史 (著) 翔泳社

コメント

タイトルとURLをコピーしました