平成29年度 高度共通 午前I(PM試験) 問2

分野:基礎理論(2進数・論理・集合・確率統計・情報理論・AI/機械学習の理論・オートマトン・形式言語・計算量)|実際に出題されたIPA過去問題

あるプログラム言語において,識別子(identifier)は,先頭が英字で始まり,それ以降に任意個の英数字が続く文字列である。これを BNF で定義したとき,a に入るものはどれか。

問題の図表(IPA公式問題冊子より引用)
図表:IPA公式問題冊子より
  1.  <letter>|<digit>|<identifier><letter>|<identifier><digit>
  2.  <letter>|<digit>|<letter><identifier>|<identifier><digit>
  3.  <letter>|<identifier><digit>
  4.  <letter>|<identifier><digit>|<identifier><letter>
解答・解説を見る

正解:エ

AI解説

正解はエ。識別子は「先頭が英字、以降は英数字が任意個続く」文字列である。BNFで左再帰を使い、<identifier>::=<letter>|<identifier><digit>|<identifier><letter>と定義すれば、基底が<letter>単独なので先頭は必ず英字となり、末尾に英字・数字を何個でも追加できる。 ア: <digit>単独が識別子になり得る定義であり、数字だけの文字列(例:1)や数字で始まる文字列を許してしまうため誤り。 イ: アと同様に<digit>単独を許すため、先頭が英字という条件に違反する文字列を生成できてしまい誤り。 ウ: <letter>と<identifier><digit>だけでは、英字の後に英字を続けること(例:ab)ができず、識別子の一部しか表現できない。 エ: 正解。基底<letter>で先頭英字を保証し、再帰<identifier><digit>と<identifier><letter>で英数字を後ろに任意個続けられる。 💡 BNF問題は「基底(再帰しない選択肢)が条件を満たすか」「再帰でどんな文字を追加できるか」の2点を確認する。反例(数字だけ・英字連続不可など)を探すと誤答肢を素早く消せる。

出典:平成29年度 秋期 プロジェクトマネージャ試験 午前I 問2 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。
📱 演習アプリで解く(無料・登録不要・904問収録)

「基礎理論」分野の攻略ポイント

2進数・論理演算・集合・確率統計・情報理論・AI/機械学習の理論・オートマトン・形式言語・計算量が範囲です。純粋な計算問題が多く、対策の有無がそのまま得点差になります。手を動かす練習が最も効く分野です。

基礎理論の攻略ポイントをすべて見る(要点6項目・ひっかけ3項目)→

同じ分野(基礎理論(2進数・論理・集合・確率統計・情報理論・AI/機械学習の理論・オートマトン・形式言語・計算量))の過去問