一番初めのCプログラム
ということで、前準備に色々と手間がかかりました。では、ソースを入力してプログラムを作ってみましょう。
まずはおなじみのソースから
では、いよいよ最初のプログラムを1つ作ってみます。と言っても、もうほとんどの人にとっておなじみの『あの』プログラムです。「こんなの、Cの入門書で見飽きたよ!」という人も多いでしょう。ですが、あえてすっかりおなじみの『基本中の基本』から入ることにします。
VC++の場合はリスト2、UNIX系OSのGCCやLSI-Cの場合はリスト3のようになります。処理の本体は
printf("Hello C language!\n");
の1行です。
リスト2:Visual C++のテンプレートを使った場合
int _tmain(int argc, _TCHAR* argv[])
{
printf("Hello C language!\n");
return 0;
}
リスト3:GCCなど一般的なCの場合
int main(int argv, char *argv[])
{
printf("Hello C language!\n");
return (0);
}
すべてはmain関数から
このソースから実行形式ファイル(DOSやWindowsでは.exeファイル、UNIX系OSでは実行可能属性“x”を持ったファイル)を生成し、それを実行すると、ディスプレイには
Hello C language!
というメッセージ(文字列)が表示されます。文字列最後の“\n”は改行の出力を示すエスケープシーケンスです。これについても、詳しくは回を追って取り上げます。
実に単純なプログラムですが、このソースコードはCプログラミングの最も原初的・基本的な要素を示しています。
まず、
すべての処理はmain関数(VC++では_tmain関数)から始まる
ということです。手続き型言語のCは、ソースを上から下へ向かって順次実行するのではなく、main関数という出発点から他の関数を呼び出すことで処理を進めていきます。
printf関数
上の例でmain関数から呼び出されているのは、printf関数です。printという語はBASICなどでおなじみでしょう。ここでは画面(標準出力)にテキスト(文字列)を送出することを示しています。続くfはformatのfで、『文字列を書式化して出力する』機能を意味しています。
printf関数の書式指定については、回を改めて取り上げます。ここでは、main関数から呼び出されているprintfがC処理系に備わっている命令(例えば、BASIC言語のPRINT命令のような)ではなく、標準関数であるということを意識しておいてください。
標準関数とは、C処理系に予め準備されている標準的な関数群です。それらに関する扱いは、プログラマーが独自に作った関数とまったく変わりません。
BASIC ※3 やFORTRANでユーザーが独自に関数や命令語を作ることはできません。ところがCではプログラマーが自由に関数を作ることができ、しかもそれらは処理系に予め備わっている関数と何らの区別も差別もなく、同等に扱われます。
Visualではない方のBASIC言語を指しています 作成手順はあえて省略…
さて、先に「ソースから実行形式ファイルを生成して……」と書きましたが、まだそのための手順を紹介していません。というか、僕は『今はまだ、そんな作業をしなくてもいい』と思っています。だから、ソースファイルから実行形式ファイルを生成する手順には、今回の記事では触れないことにしたのです。
だってみなさんは、既に統合環境でテキストボックスやラベルに設定した文字列をウィンドウ内に表示する処理を作ったことがあるはずです。そんな経験者に、今さら「Hello C language!」と(それも、真っ黒なキャラクタ端末に)表示する処理を作って実行してみましょうだなんて、運転免許を持っている人に「これがハンドル、これがアクセルペダルですよ」と説明しているみたいなものですよね。
という訳で、今回は「Cの基本のソースはまぁこんなもんです」と紹介するにとどめておきます。コンソールモードのプログラミングでは手作り感のようなものが味わえるので、興味のある人は実行ファイルを生成してみてください。VC++でビルドすればあっという間に出来上がります。実行する場合は「デバッグなしで開始」を選んでください ※4 。
Visual Studioのバージョンによっては、DOSのウィンドウが表示され、メッセージが表示された後にそのウィンドウが消えてしまう場合があります。そのような場合は、return命令のすぐ上に“(void)getchar();”の1行を挿入してください。[Enter]キーを押すまでウィンドウが閉じないようになります
あとがき
今回は、Cの最も基本的なプログラムのソースコードを、VC++とGCCなどの処理系とに分けて2種類紹介しました。本質的には、両者はまったく変わりません。次回は、これらから実行形式ファイルを作るためのプロセスについてお話しします。
統合環境ではワンクリックで簡単にできてしまいますが、実はその裏では結構手間暇がかかっているのです。
サンプルファイル (LZH形式
7.59KB)
|