平成30年度 I-2-5

科目: 基礎科目 / 分野: 情報・論理 / 年度: 平成30年度

I-2-5 問題画像

出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」

中間記法で書かれた数式a×b+c÷dを、2分木の順路を用いた後置記法(逆ポーランド記法)に変換する問題。演算子の優先順位を考慮して2分木を作成する。

解説

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

中間記法の数式a×b+c÷dを、後置記法(逆ポーランド記法)に変換したときの表記を選ぶ問題。

解き方

① ×・÷は+より先に計算する。後置記法=左の部分→右の部分→演算子の順に並べる
② a×b+c÷d=(a×b)+(c÷d) → 左は ab×、右は cd÷、最後に +
③ ab×cd÷+(①)

正解が正しい理由

演算子の優先順位は「×、÷」が「+」より高いので、a×b+c÷dは(a×b)+(c÷d)と解釈される。2分木は、根が「+」、左の子が「×」(葉a、b)、右の子が「÷」(葉c、d)となる。後置記法は、左部分木→右部分木→根の順に並べるので、左部分木はab×、右部分木はcd÷となり、全体はab×cd÷+となる。したがって①が正しい。

各選択肢について

覚えるべきポイント

後置記法(逆ポーランド記法)は、演算子をオペランドの後ろに置く記法で、括弧が不要になる。中間記法から変換するときは、まず演算子の優先順位を考えて2分木を作り、左部分木→右部分木→根の順にたどる。

キーワード: 後置記法、逆ポーランド記法、2分木、演算子の優先順位、情報・論理