修了試験 2017-06-11実施分 基本情報技術者試験 問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)
正答4
解説
正解は4です。 3アドレス命令「op(a, b, c)」は「c=a op b」を意味します。 命令を上から順に実行して中間結果w1〜w4を式で表し、最後にxを組み立てます。 問題文では演算子の優先順位を*、/、+、-の順と定めているので、選択肢の式もこの約束に従って読みます。 【計算】 /(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:× *が最優先なので、d*eが先に計算されます。 b+c/(d*e)/f-gの意味になり、xとは異なります。 2:× *が/より優先なので、d*(e/f-g)が先に計算されます。 b+c/{d*(e/f-g)}の意味になり、xとは異なります。 3:× 括弧の外では*が先なので、(b+c/d)*eを求めてからfで割り、gを引く式になります。 w4の引き算全体に掛けていないので、xとは異なります。 4:○ w2とw4をそれぞれ括弧でくくって掛けた形であり、命令列の結果と一致します。 【ポイント】 命令列は、中間変数を一つずつ式に置き換えると確実に解けます。 本問は*が/より優先という独自の約束があるので、通常の数学の感覚で読まないことが大切です。まとめて解く
修了試験 2017-06-11実施分を通しで解く(80問)→