先頭へ戻る

最小限のC言語プログラム | Programming Place Plus C言語編 第1章

Programming Place Plus トップページC言語編

先頭へ戻る

この章の概要

この章の概要です。


プログラムとは

プログラムは、コンピュータに何らかの仕事をさせる目的でつくられます。

コンピュータは、大量の処理を高速に、間違えずに、繰り返し何度でも、休むことなく働き続けることができます。その能力を活かすには、人間が、やってほしいことを丁寧に伝える必要があります。そこで、プログラムというものを作るのです。

プログラムは、一定の文法にしたがって書きます。文法は、使用するプログラミング言語によって異なります。世の中には数多くのプログラミング言語が存在しており、C言語はその1つです。

ほとんどのプログラミング言語は、テキスト形式のファイル(文字だけで構成されたファイル)に、文字を使って記述します。C言語もこのタイプのプログラミング言語です。

プログラミング言語の文法にしたがって書かれた文字の並びをソースコードと呼びます。そして、ソースコードが書き込まれたファイルをソースファイルといいます。

ソースコードを記述することをコーディングといいます。多くの場合、コーディングのことを指して、プログラミングと呼んでいますが、本来、プログラミングはもっと広い意味をもちます。

プログラミングという言葉は、「どんなプログラムを作ればいいか検討・設計する」だとか、「一応書き上げたものの、予定どおりに動いていない部分があるので、原因を探して修正する」といったことも含むと考えられます。

プログラミングについて学ぶには、実際に自分の手でプログラミングを行うことが必要です。 まずは、C言語の最も小さなプログラムを試してみましょう。


最小限のプログラム

C言語で最も小さいプログラムは、次のようになります。

int main(void){}

このプログラムを実行しても、これといって何も起こりません。冒頭で書いたように、プログラムとは「コンピュータに何らかの仕事をさせる目的でつくられるもの」ですから、この点からいえば、このプログラムには意味がないといえます。

それでもまずはやり方を知るということで、実際に試してみてください。

以下の点に注意しながら、ソースファイルを作成してみてください。

Visual Studio でソースファイルを作成する方法についての説明が、こちらのページにあります。

ソースコードが書けたら、ビルドを行ってください。ビルドは、プログラムを実行できる状態にする作業です。Visual Studio での操作方法は、こちらのページにあります。

もしビルドが失敗してしまったら、ソースファイルの書き方に問題がないか確認しましょう。たとえば、アルファベットや空白、括弧が全角文字になっていませんか?

ビルドが成功したら、実行してください。Visual Studio での操作方法は、こちらのページにあります。

main関数

先ほどのサンプルプログラムの内容について、少しだけ説明を加えておきます。

「int main(void)」という部分は、main関数をあらわしています。関数については第9章で詳しく説明しますが、「複数の処理(コンピュータに行わせる仕事)をまとめたもの」と考えてください。{ から } のあいだに、行いたい処理のソースコードを記述します。

int と void は、C言語に用意されている機能を表しています。もちろん何かしらの意味をもっているのですが、今のところは意識する必要がないので深入りしないことにします。関数について詳しく学習するときに、改めて解説します。

なお、int や void のような、標準で用意された、何かしらの意味がある単語をキーワードといいます。

C言語のプログラムでは、必ず main関数を書かなければなりません。C言語のプログラムを実行すると、main関数からスタートするからです。スタート地点が分からないと処理が開始できないので、main関数は必須であるというわけです。

プログラムが実行されると、main関数の { } の内側に書いた処理が、上から下に向かって順々に進んでいきます。main関数の } のところにまで到達すると、プログラムの実行が終了します。今回のサンプルプログラムは、{ } の中身がないので、特に何も起こりません。

【上級】main関数の書き方には、ほかにもいくつか種類があるのですが、他の書き方については第45章で取り上げます。

記述の自由度について

C言語では、空白改行を入れる位置は、ほぼ自由です。“ほぼ” というのは、「void」のようなキーワードを分断して「vo id」のようにするといったことはできないからです。「main」も意味をもった単語なので「ma in」のようなことはできません。

【上級】より正しくいえば、トークン(字句)は分割できない、ということになります。トークンとは、キーワード、識別子(第3章)、定数(第3章)、文字列リテラル(第2章)、区切り子(括弧などの記号類全般のこと)の総称です。

このような自由度があるため、先ほどのプログラムは、次のように書いてもすべて正しく、しかも同じ意味です。

int main(void)
{
}
int     main    (   void    )
{
}
int main(void)
{





}
int
main
(
void
)
{
}

また、空白については、いわゆる「半角スペース」のほかに、タブ文字も許可されます。

どの書き方も文法上は正しいのですが、実際には冒頭で紹介した書き方が多く使われます。何を基準にすればいいかは、人によって言い分があるのですが、ソースコードは、見やすく分かりやすく書くことが求められます。なぜなら、ソースコードを見たり、読み解いたりするのは自分だけではないからです。仕事やサークルなど、多人数で1つのプログラムを作り上げていくことがありますから、できる限り、誰もが読みやすいソースコードを目指してください。

return文

最初に示したサンプルプログラムでは使っていませんが、最小のプログラム例では、よく次のプログラムが取り上げられます。

int main(void)
{
    return 0;
}

return はキーワードです。

return の後ろに 0 という数値が付いています。これについては関数について説明するとき(第9章)にまとめて説明しますが、とりあえず必要なものであると思っておいてください。今のところは、つねに更新このように書いておけば問題ありません。

「return 0;」のような記述全体で return文と呼びます。

プログラムの実行中に return文のところに来ると、関数内の処理がそこで強制終了されます。main関数内の return文が実行されると、main関数内の処理がその時点で終了します。main関数が終了すると、プログラムも終了します。

この章の最初に示したサンプルプログラムで return文を書かなかったのは、現在の標準規格では、なくても問題ないからです。しかし、以前は書かなければならない時代がありました。現在でも明示的に書くことに問題はありませんし、今後は明示的に書いておくことにします。

【上級】このルールは C99規格で追加されました。このルールが適用されるのは main関数だけです。なお、return に続く数値が 0 でない場合には、明示的に書かなければなりません。

セミコロン

return文の末尾には、セミコロン (;) があります。これは、文の終わりを表す記号です。

C言語では、改行によって文が終わるわけではありません。そのため、セミコロンを使って、明確に終わりを示す必要があります。

セミコロンが登場すれば文の終わりが示せるので、次のように1行に2つ以上の文を置くこともできます。

int main(void)
{
    return 0;  return 0;
}

この場合、左側にある文が先に実行され、次にその右側の文、さらにあればその右の文へと続いていきます。

このプログラムの場合、左側の return で関数が終了してしまうので、右側の文に行き着くことはありません。そのため、これは無意味ですが、文法上は可能だということです。

とはいえ、基本的には1行1文を守った方が見やすいでしょう。1行に文が複数あると、2つ目以降の文の存在を見落としやすいです。

また、セミコロンしかない文も許されます。これは、空文と呼ばれ、実行時には何もしません。

int main(void)
{
    ;
    return 0;
}

空文を使う必要性はほとんどありませんが、まれに便利なこともあります。


参考リンク


更新履歴

’2018/8/27 VisualStudio でソースファイルを作成する方法を、開発ツールのページでサポートするようにした。
ソースファイル、ソースコード、ビルドなどの用語について補足を入れた。

’2018/8/20 VisualStudio でのビルドと実行の方法を、開発ツールのページでサポートするようにした。
練習問題が不要になったので削除。

’2018/4/2 「VisualC++」という表現を「VisualStudio」に統一。

≪さらに古い更新履歴を展開する≫



次の章へ (第2章 Hello, Worldプログラム)

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー