プログラムの「式」と「文」の違いを新人エンジニア向けに解説

こんにちは。ゆうせいです。

プログラムを書いていると、「式」と「文」という言葉に出会いますよね。最初は「どっちもコードの一部でしょ?」と思うかもしれません。でも、これらの違いを理解しておくと、プログラムの仕組みがスッキリ見えるようになります!

この記事では、Java の for を例に、「式」と「文」の違いをわかりやすく解説します。


式(Expression)と文(Statement)の違い

まず、ざっくりとした違いを説明すると、

  • 式(Expression):値を計算するもの
  • 文(Statement):処理を実行するもの

例えば、次のようなコードを考えてみてください。

int a = 5 + 3;

この 5 + 3 の部分は 「式」 です。なぜなら、計算結果(8という値)を返すからです。

一方で、int a = 5 + 3; 全体は 「文」 です。なぜなら、処理を実行する命令になっているからです。

「文は式を含むことがある」という関係ですね。


for(int i = 0; i < 3; i++) の各部分を見てみよう

for 文の中には、3 つの部分があります。

for (int i = 0; i < 3; i++) {
    System.out.println(i);
}

この for 文のカッコ内の3つの項目を、それぞれ 「式」か「文」か」 を見てみましょう。

1. int i = 0; → 文(Statement)

これは 「変数の宣言と代入」 です。

変数 i を作り、0 を代入しています。これは値を返すというより、「変数を作る・値をセットする」という処理なので 「文」 です。

2. i < 3 → 式(Expression)

これは 「比較演算」 を行う部分です。

i が 3 より小さいかどうかを判定し、true または false という値を返します。このように、何かの値を返すものは「式」 になります。

3. i++ → 式(Expression)かつ文(Statement)

i++「インクリメント演算」 です。

一見すると「i を増やしているだけ」ですが、実は i++ は値を返します。例えば、int a = i++; のように書くと i++ の結果(元の i の値)が a に入ります。

  • 値を返すため 「式」 でもある
  • それ単体で使われると処理の一部になるため 「文」 でもある

つまり、i++ は「式としても文としても使えるもの」ということになります!


まとめ

コード式 or 文理由
int i = 0;文(Statement)変数を宣言し、値を代入する処理
i < 3式(Expression)true or false を返す
i++式 かつ 文値を返しつつ、i を増やす

もう少し踏み込むと…

「式と文の違い」をさらに深く理解するには、「式文(Expression Statement)」という概念も知っておくといいです。

例えば、次のようなコードを考えてみましょう。

i++;

この i++ は「値を返せる」ので式ですが、それ単体で書かれると 「文として扱われる」 んですね。こういう 「式を文として扱うもの」「式文(Expression Statement)」 と呼びます。

「すべての式が文になるわけではないが、一部の式は文として使える」 というのがポイントです!


まとめ & 今後の学習のポイント

  • 「式は値を返す」「文は処理を実行する」
  • for のカッコ内の 3 つの部分を分類すると
    • int i = 0;
    • i < 3
    • i++式 かつ 文
  • i++ のように「式としても文としても使える」ものがある

「式と文の違い」は、最初はぼんやりしているかもしれません。でも、コードを書いていくうちに、「ここは値を返す?処理を実行する?」と考えるクセをつけると、自然と区別できるようになります。

もし疑問があったら、どんどん質問してくださいね!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。