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

令和6年度秋期 情報処理安全確保支援士 午前Ⅰ 問7

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

問題

手続型言語のコンパイラがコード生成までに行う処理のうち、 最後に行うものはどれか。

選択肢

  1. ア
    意味解析
  2. イ
    構文解析
  3. ウ
    最適化
  4. エ
    字句解析
解き方のヒントを見る

午前I 問07:コンパイラの流れを料理の下ごしらえみたいに追おう

コンパイラは、いきなり実行用のコードを作るわけじゃないよ。まず単語に分ける字句解析、文の形を確認する構文解析、意味としておかしくないかを見る意味解析を順番に行う。そのあと、ムダを減らして速く・小さくする最適化をして、最後に実際のコード生成へ進むんだ。料理でいうと、材料を切って、手順を確認して、味の組み合わせを見て、効率よく調理できるよう整えてから仕上げる感じだよ。

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

コンパイラの基本的な処理順序を正しく並べられるかがポイントだよ。特に、最適化は意味解析などで内容を確認したあと、コード生成の前に行う流れとして覚えておこう。

コンパイル処理の流れ

`字句解析 -> 構文解析 -> 意味解析 -> 最適化 -> コード生成`。

lexical\nsyntax\nsemantic\noptimization\ncode generation

確認ポイント

  • 字句解析が最初です。
  • コード生成の直前を問うている。
  • 最適化の位置を押さえる。
正解と解説を見る

正解

ウ

出典

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

選択肢ア

意味解析は不正解だよ。これは、文の形が合っているかを見たあとに、「その変数は宣言済み?」「整数と文字列を変に足してない?」のように中身のつじつまを確認する段階だよ。窓口で書類の形式を見たあと、内容が本当に正しいか確認する感じで、最適化より前に行うんだ。

選択肢イ

構文解析は不正解だよ。これは、字句解析で分けた部品を見て、「文法どおりに並んでいるか」を確認する段階なんだ。日本語でいうと、単語を並べて主語・述語の形になっているか見るようなものだよ。まだ効率よく直す段階ではないので、最後ではないよ。

選択肢ウ(正解)

最適化は正解だよ。コンパイラは、文字を単語に分ける→文の形を確認する→意味を確認する→最後にムダを減らす、という流れでコード生成に近づくんだ。料理でいうと、材料を切って、レシピ通りか確認して、味の組合せを見たあと、最後に手順を短くして効率よく作れるようにする感じだよ。

選択肢エ

字句解析は不正解だよ。これは最初のほうでやる作業で、プログラムの文字列を「if」「変数名」「=」「数字」みたいな小さな部品に分ける段階なんだ。文章を読む前に、まず単語カードに切り分ける作業みたいなものだから、最後に行う処理ではないよ。

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

関連する過去問一覧

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