SAシステムアーキテクト試験 午前Ⅰ
令和4年度春期 システムアーキテクト 午前Ⅰ 問3
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題
選択肢
- アC
- イJava
- ウPHP
- エPython
解き方のヒントを見る
ブロック構造を読むための視点
選択肢を比べるときは、処理のまとまりがどの境界で表され、同じ階層の命令と内側の命令がどう区別されているかに注目し、表面的な記号だけで判断しないように整理します。
この問題で問われていること
確認する観点を、命令のまとまりと入れ子の関係を読み手がどのように把握できるかという一点に絞ります。各表現を具体的に再現せず、構造の見え方だけ比較してください。
視点
構造を検討する際は、処理の開始・終了や階層の境界が、どのような手掛かりで読み取れる設計になっているかを意識します。見た目の好みではなく、まとまりの把握しやすさという視点で比較しましょう。
確認ポイント
- 処理のまとまりを示す境界が、読み手に一貫して伝わるか
- 内側と外側の階層を、混同せず追跡できるか
- 短い例だけでなく、入れ子が増えた場合にも視認性を保てるか
正解と解説を見る
正解
エ
解説
この問題は、プログラム言語がブロックの範囲をどのような構文規則で表現するかを問うている。Pythonは、同じ階層の文を等しい幅で字下げし、その字下げの深さによってブロックを区別するため、条件に合致する。
理由
Pythonでは、if文や関数定義などのブロックを、特定の括弧記号で囲むのではなく、行頭の字下げによって表す。同じブロックに属する文は同じ字下げ幅でそろえ、字下げの深さが変わることでブロックの階層を示します。したがって正答はエです。
比較
C、Java、PHPでは、一般に中括弧を使って処理のまとまりを明示する。これらは字下げを読みやすさのためにそろえることはあっても、ブロックの範囲そのものを決定する構文要素ではありません。この違いを、見た目の整形と文法上の規則に分けて理解するとよい。
選択肢ア
これは不正解だよ。Cでは、通常、中括弧で文のまとまりや制御構文のブロックの開始・終了を示す。字下げをそろえることは可読性のために行えるが、字下げの幅そのものがブロック範囲を決める文法規則ではないため、設問の条件とは一致しない。
選択肢イ
これは不正解だよ。Javaでは、クラスやメソッド、条件分岐などのブロックを主に中括弧で囲んで表す。字下げはコードを読みやすくするための慣習にすぎず、同じ字下げ幅であることがブロックの所属を決める仕組みではない。
選択肢ウ
これは不正解だよ。PHPでは、処理のブロックを中括弧で囲む書き方が一般的であり、字下げは主に可読性を高めるための整形である。したがって、等しい文字数の字下げを文法上のブロック指定に用いるという設問の特徴には該当しない。
選択肢エ(正解)
これは正解だよ。Pythonでは、ブロックの範囲を中括弧などの特定記号で囲まず、行頭の字下げによって表す。同じ階層の文を等しい幅で字下げし、字下げの深さの変化でブロックの階層を示すため、設問の特徴に一致する。
学習のポイント
記号によるブロック指定と、字下げによるブロック指定の違いを整理する。
出典:独立行政法人 情報処理推進機構(IPA)令和4年度春期 システムアーキテクト試験 午前Ⅰ 問3(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針