修了試験 2011-07-02実施分 基本情報技術者試験 問25
次の一連の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に何が入るかを1行ずつたどります。 選択肢の式は、問題文の優先順位(*、/、+、-の順に高い)に従って読みます。 *が/より優先される点が、通常の数式と異なります。 【計算】 /(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=w2*w4=(b+c/d)*(e/f-g)です。 【選択肢別解説】 1:× 括弧がないので、最も優先順位の高い*のd*eが先に計算されます。 式全体はb+c/(d*e)/f-gの意味になり、命令の結果と一致しません。 2:× b+c/d*(e/f-g)では、括弧の次に*が計算されるので、まずd*(e/f-g)が求まります。 cをその値で割ってからbを足す式になり、w2全体にw4を掛ける命令の結果と一致しません。 3:× (b+c/d)*e/f-gでは、(b+c/d)にe/fを掛けてからgを引くことになります。 w4=e/f-gの全体を掛けるという命令の結果と一致しません。 4:○ w2=b+c/dとw4=e/f-gを掛け合わせるには、両方に括弧が必要です。 上の計算と完全に一致します。 【ポイント】 3アドレス命令を式に直すときは、作業変数を元の式に置き換えた後、演算子の優先順位を保つための括弧を付けます。 +や-を含むまとまりに*を掛けるときは、必ず括弧で囲みます。まとめて解く
修了試験 2011-07-02実施分を通しで解く(80問)→