平成21年度 秋期 午前 問3
情報に関する理論
逆ポーランド表記法に関する問題
逆ポーランド表記法(後置表記法)で,“EF−G÷CD−AB+÷+”と表現される式はどれか。
- ア((A+B)+(C−D))÷G−(E÷F)
- イ((A+B)÷(C−D))+G÷(E−F)
- ウ((E−F)÷G)+((C−D)÷(A+B))
- エ((E−F)÷G)÷((C−D)+(A+B))
答えと解説を見る
✓ これが正解ウ((E−F)÷G)+((C−D)÷(A+B))
解説
左から読み演算子で直前の二つを束ねます。
逆ポーランド表記法は後置表記法とも呼ばれ、演算子を二つの対象の後ろに置く書き方です。読むときは左から一文字ずつ進め、演算子が現れたらその直前に控えている二つを取り出して一つに束ね、束ねた結果をまた控えに戻します。見分ける軸は二つあります。一つは読む向きで、この表記は名前に逆と付いていても処理は左から順に進めます。もう一つは、並びの末尾にある演算子が式全体の一番外側の演算になることです。設問の並びは末尾が加算なので、答えは何かと何かの和という形でなければなりません。この二点だけで候補は大きく減ります。実際に左から追うと、まず引き算で一組ができ、それを除算で束ね、続いて別の引き算と加算で二組ができ、その二つを除算で束ね、最後に加算で全体がまとまります。四つの選択肢は文字の並びが同じで括弧の掛かり方だけが違うので、外側の演算から見ると速く決まります。
ほかの選択肢はなぜ違うのか
- ア((A+B)+(C−D))÷G−(E÷F…:全体を包む演算が減算になっている式です。与えられた並びの末尾は加算なので、一番外側の演算が合わず、括弧の中身を確かめるまでもなく外れます。
- イ((A+B)÷(C−D))+G÷(E−F…:外側の演算は加算で合っていますが、並びを後ろ側から読み取った形になっています。先頭に控えるべき二文字が式の末尾側へ回っており、処理の向きが逆です。
- エ((E−F)÷G)÷((C−D)+(A+…:一番外側の演算が除算になっています。並びの末尾にある記号と一致しないため、内側の組み方が正しく見えてもこの一点で成り立ちません。
出典:平成21年度 秋期 基本情報技術者試験 午前 問3
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)