擬似言語で正解するための切り札はトレース
科目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を出力する| 通し番号 | トレース表 | 条件式 | a | b |
|---|---|---|---|---|
| A | 2:a←1 | 1 | ||
| B | 3:b←0 | 0 | ||
| C | 4: while (a < 3) | 1 < 3 T | ||
| D | 5: b← b + a | 1 | ||
| E | 6:a←a + 1 | 2 | ||
| F | 4: while (a <3) | 2 < 3 T | ||
| G | 5:b← b + a | 3 | ||
| H | 6:a←a + 1 | 3 | ||
| I | 4: while (a <3) | 3 < 3 F | ||
| J | 8: 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 > 5 | 6,7,8…(5は含まず) |
| 以上 | ≧ | aが5以上 | a ≧ 5 | 5,6,7…(5を含む) |
| より小さい | < | aが5より小さい | a <5 | 4,3,2…(5は含まず) |
| 以下 | ≦ | aが5以下 | a≦5 | 5,4,3…(5を含む) |
| 等しい | = | aが5と等しい | a=5 | 5 |
| 等しくない | ≠ | aが5と等しくない | a ≠ 5 | 3, 4, 6, 7… |
(参考)情報処理教科書 出るとこだけ!基本情報技術者[科目B]第4版 橋本 祐史 (著) 翔泳社


コメント