修了試験 2015-07-26実施分 基本情報技術者試験 問20
次の一連の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”を意味します。 問題文の約束により、結果の式では優先順位が高い順に*、/、+、-となります。 *が/より優先されるという通常とは異なる約束に注意します。 【計算】 1行目:w1=c/d です。 2行目:w2=b+w1=b+c/d です。 3行目:w3=e/f です。 4行目:w4=w3-g=e/f-g です。 5行目:x=w2*w4=(b+c/d)*(e/f-g) です。 *は+や-より優先されるので、w2とw4はどちらも括弧で囲む必要があります。 【選択肢別解説】 1:× 約束どおりに読むと、まずd*eが計算され、c/(d*e)/fにbを足してgを引く式になります。 xの計算順序とは異なります。 2:× 約束どおりに読むと、d*(e/f-g)が先に計算され、cをその値で割ってbを足す式になります。 b+c/d全体に掛けていないので誤りです。 3:× 約束どおりに読むと、(b+c/d)*eが先に計算され、それをfで割ってgを引く式になります。 e/f-g全体を掛けていないので誤りです。 4:○ (b+c/d)と(e/f-g)をそれぞれ括弧で囲んで掛けており、5行目のw2*w4と一致します。 【ポイント】 命令を上から順に置き換えていけば、最終的な式が得られます。 問題文で独自に定めた演算子の優先順位は、必ずそのとおりに式を読みます。まとめて解く
修了試験 2015-07-26実施分を通しで解く(80問)→