修了試験 2013-07-28実施分 基本情報技術者試験 問26
次の一連の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)
正答4
解説
正解は4です。 3アドレス命令の列をたどり、最終結果xを表す式を求める問題です。 命令op(a,b,c)は「c=a op b」を意味するので、上から順に中間結果w1〜w4を求めます。 【計算】 /(c,d,w1)より、w1=c/dです。 +(b,w1,w2)より、w2=b+c/dです。 /(e,f,w3)より、w3=e/fです。 -(w3,g,w4)より、w4=e/f-gです。 *(w2,w4,x)より、x=(b+c/d)*(e/f-g)です。 【選択肢別解説】 1:× 括弧がないため、問題の優先順位では*や/が先に計算されます。 b+c/dとe/f-gをそれぞれまとめてから掛ける計算になりません。 2:× b+c/dの部分に括弧がないため、bは最後に足されるだけになります。 b+c/d全体に(e/f-g)を掛ける計算と一致しません。 3:× e/f-gの部分に括弧がないため、最後にgを引く式になります。 w4全体を掛ける計算と一致しません。 4:○ w2=b+c/dとw4=e/f-gをそれぞれ括弧でまとめて掛けた式であり、命令列の結果と一致します。 【ポイント】 3アドレス命令の列は、中間結果を一つずつ式に置き換えていけば元の式に戻せます。 最後の演算の二つのオペランドがそれぞれ括弧のまとまりになることを確認しましょう。まとめて解く
修了試験 2013-07-28実施分を通しで解く(80問)→