平成22年度 春期 基本情報技術者試験 午前 問22
テクノロジ/コンピュータ構成要素次の一連の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)
出典:平成22年度 春期 基本情報技術者試験 午前 問22
- アb+c/d*e/f-g
- イb+c/d*(e/f-g)
- ウ(b+c/d)*e/f-g
- エ(b+c/d)*(e/f-g)
正解:エ
解説
各命令を順に置き換えていくと,w1=c/d,w2=b+w1=b+c/d,w3=e/f,w4=w3-g=e/f-g,x=w2*w4=(b+c/d)*(e/f-g)となります。3アドレス命令の各ステップは一度計算した中間結果をそのまま次の命令で使うため,式全体としてはそれぞれ括弧でくくった形になります。
選択肢ごとの解説
- ア誤り。括弧を付けずに書いており,w2とw4がそれぞれ独立した中間結果であることを表せていません。
- イ誤り。w2側にだけ括弧が付いておらず,b+c/dがまとめて一つの中間結果であることが表現されていません。
- ウ誤り。w4側にだけ括弧が付いておらず,e/f-gがまとめて一つの中間結果であることが表現されていません。
- エ正しい。w2=b+c/d,w4=e/f-gがそれぞれ中間結果としてまとめられ,x=w2*w4=(b+c/d)*(e/f-g)となります。