平成29年度 春期 応用情報技術者試験 午前 問4
あるプログラム言語において,識別子(identifier)は,先頭が英字で始まり,それ以降に任意個の英数字が続く文字列である。これをBNFで定義したとき,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 ]
キーボード:1〜4 で解答 → 次の問題 ← 前の問題
正解と解説を見る
解答する前に解説を開いたので、この問題は「見て解いた」として記録します(正解数には入りません)。
正解:エ
識別子の条件は「1文字目は英字」「2文字目以降は英字でも数字でもよい」です。
- まず英字1文字 <letter> は識別子です。
- 識別子の後ろに英字か数字を1文字付け足したものも識別子です(<identifier><letter>,<identifier><digit>)。
この3つを「|」でつなげば,英字で始まり英数字が任意個続く文字列を全て表せます。
-
ア:
| | |
誤り。<digit>単独も識別子になってしまうため,「1」のような数字で始まる文字列が識別子になってしまいます。 -
イ:
| | |
誤り。<digit>単独が識別子になるため,数字で始まる文字列が識別子になってしまいます。 -
ウ:
|
誤り。識別子の後ろには数字しか付け足せないため,「ab」のように英字が2文字以上続く識別子を表せません。 -
エ:
| |
正しい。英字1文字から始まり,後ろに数字か英字を何文字でも付け足せるので,定義どおりの識別子を表せます。
答え
エ:
出典:平成29年度 春期 応用情報技術者試験 午前 問4