平成29年度春期 応用情報技術者試験 午前 問4

分野:基礎理論(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の再帰的定義では、基底として1文字の英字<letter>を置き、既にできた識別子<identifier>の後ろに<digit>(数字)又は<letter>(英字)を付け加える形で定義する。エの「<letter>|<identifier><digit>|<identifier><letter>」はこの構造を正しく表し、先頭が必ず英字になることが保証される。 ア: <digit>単独が候補に含まれており、数字1文字だけ(先頭が数字)の文字列も識別子になってしまうため誤りである。 イ: <digit>単独を含む点で先頭が数字の文字列を許してしまい、また<letter><identifier>は先頭以外の構成規則としても不適切であり誤りである。 ウ: <identifier><letter>(識別子の後ろに英字を続ける規則)がないため、2文字目以降に英字を含む識別子(例:ab1)が生成できず誤りである。 エ: 正しい。基底の<letter>から始まり、後ろに<digit>又は<letter>を任意個追加でき、題意の識別子をすべて過不足なく生成できる。 💡 BNFの再帰定義は「基底ケース(最短の正しい形)」と「拡張ルール(後ろに何を足せるか)」の2点で検証する。誤答肢は『数字始まりを許す』か『英字を追加できない』のどちらかのパターンが定番。

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

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

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

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

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