平成23年度 秋期 午前 問4
情報に関する理論
変数に関する問題
次の規則から生成することができる式はどれか。
〔規則〕 <式> ::= <変数> | (<式>+<式>) | <式>*<式> <変数> ::= A | B | C | D
- アA+(B+C)*D
- イ(A+B)+(C+D)
- ウ(A+B)*(C+D)
- エ(A*B)+(C*D)
答えと解説を見る
✓ これが正解ウ(A+B)*(C+D)
解説
+でつなぐ形にだけ丸括弧が付く規則です。
規則を一つずつ読みます。式になれるのは三通りで、変数そのもの、二つの式を+でつないで全体を丸括弧で囲んだもの、二つの式を*でつないだものです。ここで見落としてはいけないのは、丸括弧が現れるのは+でつなぐ形だけだということです。*でつなぐ形には丸括弧が付きません。ですから、ある並びが作れるかどうかは、いちばん外側の演算子に目を付ければ見分けられます。外側が+なら、その全体が丸括弧で囲まれていなければなりません。外側が*なら、全体が丸括弧で囲まれていてはいけません。判定の軸はこの一点です。外側の演算子と、それを囲む丸括弧の有無がかみ合っているかを見て、かみ合っていれば内側の部分に対して同じ問いを繰り返します。変数だけになるところまで下りて全部かみ合えば、その並びは作れます。
ほかの選択肢はなぜ違うのか
- アA+(B+C)*D:いちばん外側の演算子が+なのに、その全体を囲む丸括弧がありません。+でつなぐ形には必ず外側の丸括弧が付くという規則から外れているので、作ることができません。
- イ(A+B)+(C+D):内側の二つはどちらも規則どおりに作れますが、それらを+でつないだ全体に丸括弧が付いていません。もう一重、いちばん外側に丸括弧が必要です。
- エ(A*B)+(C*D):*でつないだものを丸括弧で囲んだ部分が二つ並んでいますが、丸括弧が付くのは+でつなぐ形だけです。しかも全体の+にも丸括弧がなく、二重に規則から外れています。
出典:平成23年度 秋期 基本情報技術者試験 午前 問4(改変:原典の図表をテキストに書き起こした)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)