SC情報処理安全確保支援士試験 午前Ⅰ

平成29年度春期 情報処理安全確保支援士 午前Ⅰ 問2

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

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

選択肢

  1. ア
    ぐくdgtテー0|112131415le6l7lsl9くletter>テAIBICI…IXIYIZlalblcl…lxlylz
  2. イ
    べくidentiferドー [しュ』
  3. ウ
    <ぐletter> | ぐdigit> | くidentifer>ぐletter> | くidentifer>ぐdigit> イ。ぐJetter> | <digit> | くletter>ぐidentifer> | くidentifer>ぐdigit> ウぐletter> | ぐidentifer>くdigit
  4. エ
    ぐJetter | <identifer>ぐdigit> | くiqentifer>ぐletter>
解き方のヒントを見る

午前I 問02:BNFは“文の作り方ルール”を書くための記法だよ

Backus-Naur Form(BNF)は、プログラミング言語などの文法を表すための書き方だよ。料理のレシピみたいに、「この部品は、こういう部品の組合せで作れるよ」と、非終端記号・終端記号・生成規則を使って構文の形を定義するんだ。

この問題で問われていること

ここでは、BNFが意味の説明や状態の移り変わりを表すものではなく、“文としてどう組み立てられるか”を定義する記法だと見抜けるかがポイントだよ。

BNF

BNF formally describes syntax rules using nonterminals、 terminals、 and production rules

syntax definition\nproduction rules

確認ポイント

  • 意味や処理手順の記述ではありません。
  • 構文規則の記述です。
  • 文法定義の説明を選ぶ。
正解と解説を見る

正解

エ

出典

問題文と解答は IPA 公開の過去問題冊子・解答例を基にしています。

選択肢ア

これは不正解だよ。<digit>だけでも<identifier>になれるので、1や9abcみたいに数字で始まる名前を許してしまうんだ。問題は「先頭は英字」と言っているから、受付で『最初は英字の札を見せてね』と言っているのに、数字の札だけで通してしまうようなものだよ。

選択肢イ

これは不正解だよ。これも<digit>だけで<identifier>になれるので、先頭が数字のものを許してしまうんだ。さらに<letter><identifier>もあるので後ろ側に数字始まりのidentifierをつなげられてしまうけど、そもそも数字単独OKの時点で条件から外れているよ。

選択肢ウ

これは不正解だよ。最初の1文字は<letter>で始められるけど、その後に足せるのが<digit>だけだから、A123みたいな名前は作れても、AbcやA1bみたいに途中や後ろに英字を混ぜられないんだ。名札を作るルールなのに、2文字目以降は数字シールしか貼れない感じだね。

選択肢エ(正解)

これが正解だよ。まず<letter>で英字1文字の名前を作り、そこに<digit>や<letter>を後ろへ何個でも足していける。つまりA、A1、Ab、Ab12みたいに『先頭は英字、後ろは英字でも数字でもOK』をそのまま表せているんだ。先頭の合鍵だけは英字で作り、その後の飾りは英字でも数字でも足せるイメージだね。

出典:独立行政法人 情報処理推進機構(IPA)平成29年度春期 情報処理安全確保支援士試験 午前Ⅰ 問2(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針