戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

応用情報技術者 2022年 春期 午前2 問07


問題文

プログラム言語のうち、ブロックの範囲を指定する方法として特定の記号や予約語を用いず、等しい文字数の字下げを用いるという特徴をもつものはどれか。

選択肢

ア:C
イ:Java
ウ:PHP
エ:Python(正解)

🔒 解説は解答すると表示されます

インデントによるブロック指定【午前2解説】

正解の理由

選択肢のうち、プログラムのブロック範囲を字下げ(インデント)の等しさだけで示す言語は エ(Python)です。Pythonでは制御構造や関数定義などのブロック開始行で末尾にコロン(:)を置き、その次の行以降のインデントの深さがブロックの範囲を決定します。中括弧 {} やbegin/endのような終端記号や専用の予約語で明示するのではなく、インデントの増減(パーサーが生成するINDENT / DEDENTトークン)によってブロックが表現されます。
他の選択肢(ア: C、イ: Java、ウ: PHP)は基本的に中括弧 {} やキーワードでブロックを区切る設計であり、字下げは主に可読性のためのスタイル指針として扱われます。したがって、ブロックの範囲を「等しい字下げのみ」で決める言語として代表的なのはPythonであり、これが正答となります。

解法ステップ

  1. 各選択肢がブロックをどのように示すかを思い浮かべる(中括弧、予約語、字下げ)。
  2. 「等しい字下げのみでブロック範囲を指定する」という条件に合致する言語を探す。
  3. Pythonはインデントの深さでブロックを決める(ただしブロック開始を示すための行末コロンは用いる)ことを確認する。
  4. 上記の照合から エ を選ぶ。

選択肢別の誤答解説

  • ア: C
    C言語はブロックを { と } の中括弧で明示します。字下げは慣習(スタイル)であり、コンパイラは中括弧で範囲を判断します。したがって条件に合いません。
  • イ: Java
    JavaもCと同様に中括弧 {} でブロックを区切ります。字下げは可読性向上のための書式であり、文法上の役割は持ちません。
  • ウ: PHP
    PHPの標準的な構文は中括弧 {} を用います(C系統に類似)。テンプレート等で代替構文(if: ... endif; など)を使うことはありますが、それも字下げによってブロック範囲を決定する方式ではありません。したがって条件を満たしません。
  • エ: Python
    Pythonではインデントの深さが文法的に重要であり、同じ字下げ幅の行が同じブロックに属します(ただしブロック開始行末の : は必要)。この特徴が本問の条件に一致します。

よくある誤解

  • 「Pythonはインデントだけでブロックを始める」は不正確
    Pythonはインデントでブロック範囲を示しますが、ブロックの開始箇所は通常行末のコロン : によって明示されます。インデントはブロックの“範囲”を示すための仕組みであり、開始の合図も併せて使います。
  • 「Pythonが唯一インデント方式の言語である」も誤り
    Pythonは代表的な例ですが、Haskellのオフサイドルールのようにインデントで意味を持たせる言語もあります。試験問題では選択肢の中から最も合致するものを選びます。
  • タブとスペースの混在に注意
    インデントは文法要素なので、タブとスペースを混ぜると実行時にIndentationErrorや予期しない挙動を招くことがあります。エディタ設定で統一することが重要です。

補足コラム

  • Pythonのインデントは単なるスタイル指針ではなく、字下げの変化がパーサーでINDENT / DEDENTトークンに変換され、文法解析に直接使われます。これによりブロック構造が視覚的に明確になり、読みやすさが向上する一方でインデントの不整合がエラーの原因になり得ます。
  • PEP8(公式スタイルガイド)ではインデントはスペース4つを推奨しています。プロジェクトによりタブを使うこともありますが、混在は避けるべきです。
  • PHPの代替構文(例: if (cond): ... endif;)は主にHTML埋め込み時の可読性向上のための構文糖衣であり、字下げそのものが文法要素とはなりません。

FAQ

Q: Pythonでブロック開始にコロン : が必須か?
A: はい。典型的な制御文(if、for、while)、関数定義、クラス定義などでは行末に : が必要で、その次の行以降のインデントによってブロック内容が決まります。
Q: タブとスペース、どちらを使うべきか?
A: PEP8ではスペース4つを推奨します。重要なのはプロジェクト内で統一することで、混在すると実行時エラーや可読性低下の原因になります。
Q: PHPの代替構文はインデント方式と同じか?
A: いいえ。PHPの代替構文は if: ... endif; のようにキーワードや終端でブロックを区切る形式であり、インデントがブロック範囲を決める方式とは性質が異なります。

関連キーワード: Python、インデント、オフサイドルール、字下げ、中括弧、コロン、INDENT、DEDENT、PEP8、タブスペース混在問題
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者を
クイズ形式で学習しませんか?

クイズ画面へ遷移する→

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について