2.4 文
2.4.1 命令実行単位
複数のトークンからなるひとつの実行対象を文と呼びます。つまり、コンピュータに対する命令は文であり、関数は文の集合と考えることができます。C 言語のお約束で、文の末尾にはセミコロン ; をつけなければなりません。コンパイラはセミコロンが見つかると、そこでひとつの文が終了したと認識します。例えば次のプログラムはふたつの文で成り立っています。
printf("Kitty on your lap"); return 0;
printf() 関数の末尾と return キーワードの末尾にセミコロン ; がありますが、ここで文が終了していること考えてください。コードの読みやすさを考えて、一般には文の終わりで改行しますが、改行は文法で定められているものではなく任意です。コンパイラはセミコロン ; で文の終了を認識できるため、複数の文を 1 行にまとめることも可能です。
#include <stdio.h> int main() { printf("Kitty on your lap\n"); return 0; }
このプログラムは、改行文字を使わずに記述しています。コンパイラはセミコロンで文の終端を認識できるため、これでも問題なくコンパイルができます。ただし、#include プリプロセッサディレクティブは文ではないので改行で終了させる必要があります。
文といっても実際には複数種類あり、次のように分類されています。
- 名札付き文
- 式文
- 複合文
- 選択文
- 繰り返し文
- ジャンプ文
このうち、関数の呼び出しや計算などを行うのは式文に分類されます。関数の中に記述される文のほとんどは式文となるでしょう。式文やジャンプ文など、一部の構文には末尾にセミコロン ; をつけなければならない決まりになっているのですが、必ずしもすべての文にセミコロンが付けられるわけではありません。
例えば、複合文(複文またはブロック文とも呼ばれる)にはセミコロンをつけません。複合文とは関数に用いている波括弧 { } の部分で、複数の文を内包する文として機能します。文の入れ物となる文、と考えてもよいでしょう。関数本体はひとつの複合文と考えることができ、関数の末尾に ; をつける必要がないのはこのためです。
それぞれの文が具体的にどのようなものかは、これから順番に説明していきます。今は、文がこのように分類されていることを知ってください。原則として、コンピュータのプログラミング言語は、私たちが日常で使っている自然言語とは異なり、一切の曖昧さがありません。プログラムのすべてのトークンには、厳密な意味が存在します。これは、プログラミング言語の最大の強みでもあり、弱点でもあるのです。
プログラミング言語を本質的に理解するためには、プログラミング言語で使われる、あらゆる文字や記号などの意味を説明できる程度に学習しなければなりません。これに必要なのは学力ではなく、積極的な学習姿勢です。わからない部分を後回しにするのではなく、少しずつでも確実に理解することが重要です。