アルゴリズムとプログラミング

基本情報技術者試験 科目A免除 修了試験 20170611 実施分 問19

次の一連の3アドレス命令で得られる結果 x を表す式はどれか。ここで,3アドレス命令では,三つのオペランドを用いた命令 “c = a op b” を “op ( a,b,c )” として表記する。op は一つの演算子を表し,結果 x を表す式においては優先順位の高い順に *,/,+,- とする。
/(c,d,w1) +(b,w1,w2) /(e,f,w3) -(w3,g,w4) *(w2,w4,x)
  • ア b+c/d*e/f-g
  • イ b+c/d*(e/f-g)
  • ウ (b+c/d)*e/f-g
  • エ (b+c/d)*(e/f-g)

出典:基本情報技術者試験 科目A免除 修了試験 20170611 実施分 問19

答えと解説を見る

正解:エ

覚える知識

3アドレス命令列から式への復元

3アドレス命令の列は中間結果を順に代入して元の式に戻し、先に計算された和・差には括弧を付ける。

この問題で必要なこと

w1=c/d、w2=b+w1、w3=e/f、w4=w3-g、x=w2*w4 の順に代入すると x=(b+c/d)*(e/f-g) になる。加減算を乗算より先に行う箇所に括弧が必要となる。

ひっかけ

優先順位だけで括弧を省略した式を選ばせる。

この知識の出題:本試験系 2 回・免除試験 12 回(公開問題での観測値)

この知識をアプリで解いて覚える レッスン「式の表し方とスタックの応用」で学ぶ

同じ知識の過去問