プログラムにおける文(statement)とは、
コンピュータプログラミング言語で記述されたプログラムを構成する基本的な要素の一つであり、一般的に手続きを表現するものです。文の種類や意味、構文は
プログラミング言語によって異なりますが、その役割はプログラムの動作を制御する上で非常に重要です。
初期の
プログラミング言語であるFORTRANや
COBOLでは、1行に1つの文を記述するのが一般的でした。一方、
C言語や多くの
スクリプト言語では、文の終端を
セミコロンなどの記号で明示します。
Pascalのように、文と文の区切りに特定の記号を用いる言語もあります。これらの違いは、文の並びの最後に記号が必要かどうかで判断できます。
ただし、
C言語の文法に関する説明は注意が必要です。例えば、`if`文自体には
セミコロンは不要で、
セミコロンが付くのは、`空文`、`do-while文`、`式文`などの場合です。また、
C言語では宣言は文とは区別されます。
1行1文の言語では、行末や行頭に特定の記号を付与することで、複数行にわたって1つの文を記述できる場合があります。これは継続行と呼ばれます。
文とよく比較される概念に「式」があります。式は値を持ちますが、必ずしも手続きを表すわけではありません。しかし、多くの手続き型言語では、式にも手続きが伴い、副作用が発生することがあります。特に
C言語では代入が式として扱われます。逆に、文が値を持つ言語もあります。
大まかに言えば、文は1つ以上の式や関数呼び出しで構成される手続き構造の単位と考えることができます。代表的な文としては、条件分岐を表す`if`文や、変数の値を更新する代入文などが挙げられます。
構造化プログラミング以降の言語では、複数の文をまとめてブロック(複文)を構成することが可能です。
`if`文などの構文には、大きく分けて2つの流儀が存在します。1つは
C言語のように、以下のような規則を用いるものです。
= IF <条件式> <文> [ELSE <文>]
<文> = ||<代入文>|...etc...|<複文>
<複文> = { <文> ; <文> ; <文> ; ... }
しかし、実際にはC言語の文法はより複雑です。この形式では、dangling else問題(`else`節がどの`if`文に対応するか曖昧になる問題)が発生する可能性があります。
もう1つの流儀は、PerlやGoのように、以下のように定義します。
= IF <条件式> <複文> [ELSE <複文>]
この場合、`if`文の後に直接文を書くことはできず、必ず複文(ブロック)を書く必要があります。この方式は、dangling else問題の対策としても有効です。
文はプログラミングにおいて、プログラムの制御構造を記述するための基礎となる要素であり、その理解はプログラミングスキル向上に不可欠です。
関連事項:
* 式 (プログラミング)