応用情報技術者試験 応用情報技術者試験 平成29年度春期 午前4: あるプログラム言語において,識別子(identifier)は,先頭が英字で始まり,それ以降に任意個の英数字が続く文字列である。これをBNFで定義したとき,aに入

応用情報技術者試験 平成29年度春期 午前
Q 44 / 80
あるプログラム言語において,識別子(identifier)は,先頭が英字で始まり,それ以降に任意個の英数字が続く文字列である。これをで定義したとき,aに入るものはどれか。 <digit> ::= 0|1|2|3|4|5|6|7|8|9 <letter> ::= A|B|C|…|X|Y|Z|a|b|c|…|x|y|z <identifier> ::= a
この問の正解率:40.43%(1,217件)

解説

応用情報技術者試験 平成29年度春期 午前 問4「あるプログラム言語において,識別子(identifier)は,先頭が英字で始まり…」の正解と解説です。応用情報技術者試験の「テクノロジ系」分野の過去問で、これまでの受験者の正答率は約40%です。

正解

. <letter><identifier><letter>

正答率 40.4%(1,217人中 492人が正解)

問題の解説

BNFの再帰定義では、無限の繰り返しを止める“終端”がどこかに必要で、識別子の終端(最も短い形)は条件「先頭が英字」を表す<letter>である。識別子は「すでにある識別子の後ろに英字または数字を1つ足す」形で伸ばせるので、<identifier><letter>と<identifier><digit>を加えた選択肢エが正しい。これにより、先頭は必ず<letter>、2文字目以降は英数字が任意個続く文字列を過不足なく定義できる。

選択肢ごとの解説

  • 右辺に単独の<digit>を含むため、識別子が数字1文字だけで成立してしまい「先頭は英字」という条件に反する。誤り。
  • 単独の<digit>を含む点でアと同じく数字始まりを許してしまう。さらに<letter><identifier>は「英字+識別子」となり末尾に英数字を足す形ではないため、定義として不適切。誤り。
  • <identifier><digit>しかなく末尾に英字を足せないため、2文字目以降に英字が現れる識別子(例 Ab)を定義できない。誤り。
  • 正しい。終端=<letter>で先頭を英字に固定し、<identifier><letter>と<identifier><digit>で末尾に英数字を任意個続けられるため、要求どおりの識別子をすべて表現できる。

応用情報技術者試験 平成29年度春期 午前 の過去問一覧に戻る・問4

応用情報技術者試験 の iOS アプリ版

アプリ版なら、よりスムーズに動作し、
スワイプで問題遷移ができます。

応用情報技術者試験 合格.dev を App Store でダウンロード