今回は、プログラムを始める前に押さえておきたいC言語の基本を、下記のサンプルプログラムをもとに解説していきます。
#include <stdio.h>
int main(void)
{
/* 文字列を出力する */
printf("Hellow World\n");
printf("はじめてのC言語\n");
return 0;
}
C言語のプログラムの開始と終了
C言語では、原則、mainと記述されているところから処理が行われます。
mainの下にある中カッコ( { } )で囲まれた部分をブロックと呼び、関数の範囲を示しています。
このため、mainは 、{ から始まり、 } で終了します。ただし、returnが記述されているところでプログラムは終了します。
サンプルプログラムでは、mainは次のように書かれています。
int main(void)
int は、戻り値の型で、関数の呼び出し元に値を返すものがあることを示しています。
( ) で書かれているところは、仮引数と呼ばれ、呼び出し元から値を受け取るものがあれば、ここに記述されます。
サンプルプログラムでは、void と書かれていますが、これは、受け取るものがない場合に記述します。
今回は、特に気にする必要はありませんが、詳細が知りたい方は、「 プログラムの部品化ができる関数の仕組み 」にて、解説しますので、参照いただければと思います。
プログラムの処理の最小単位と処理の流れ
C言語では、1つの最小の処理の単位を文と呼び、文の最後には ;(セミコロン)を付ける決まりになっています。
そして、この文が、原則、上から順番に1文ずつ処理されます。
サンプルプログラムでは、次のように実行されます。
printf("Hellow World\n"); ←最初に実行されます。
↓
printf("はじめてのC言語\n");←次に実行されます。
↓
return 0; ←3番目に実行されます。
printfという文は、「画面に文字を表示する」という処理を行うことを表しています。
これはC言語に標準で備わっている機能の1つで、これを記述すれば、画面に文字を表示してくれます。
また、return文は、mainではプログラムを終了することを示しています。
printf()関数の詳細については、「文字を画面に表示する」や、「数値や記憶した値を画面に表示する」の記事を参照してみてください。
コメントの記載
サンプルプログラムに、 /* 文字列を出力する */ がありますが、C言語では、/* から */ までの文字を無視するという決まりになっています。プログラムの処理には影響しません。
このため、プログラムのメモとして残しておくことができます。これを、コメント といいます。
/* と */ に囲まれてさえいれば、複数行にわたってコメントを記載することもできます。
コメントは、プログラムの処理とは直接関係のないもので、メモなどとして入力しておくことで、プログラムを後で読み返したときに参考になったりします。
コメントは、次のように複数行にわたって記載することもできます。
/* 文字列を
出力する */
/* からコメントが始まり、*/ が登場するまでは、コメントとみなされます。
このため、*/ を忘れると、/* 以降がすべてコメントと扱われるため注意が必要です。
また、コメントには、もう1つの書き方があります。
// 文字列を出力する
これは、// 以降の1行の末尾までをすべてコメントにします。
// については、開発環境により使用できない場合があります。
#includeの概要
最後に、サンプルプログラムの先頭にある #include について解説します。
C言語では、#の付いた行をプリプロセッサといい、コンパイルする前に処理されます。
#include <stdio.h>
#include とは、コンパイルする前に< > で囲われたファイルの内容を読み込んで、#includeと書かれている行にペーストするという機能になります。
この作業のことをインクルードすると呼ばれています。
#が付いた行は、セミコロンを付けずに1行で書くことになっています。
サンプルプログラムでは、なぜ、インクルードしているかというと、printfという機能を使うためには stdio.h というファイルをインクルードする必要があるからです。
このstdio.hというファイルはC言語の標準で用意されているものなので、自分で用意する必要はありません。
C言語のプログラムの最小の単位であるトークンと、フォーマット
プログラムの処理の最小単位は文と説明しましたが、この文を単語単位に分解した最小単位をトークンと呼びます。
トークンをさらに分解する(return文をret urnとする等)エラーになってしまいます。
C言語は、基本的にフリーフォーマットになっており、書き方の制限が緩く、自由に書くことができます。
ただし、トークン同士をつなげて書くことはできません。
例えば、サンプルプログラムにあった例でいうと次のような書き方はエラーとなります。
intmain( void )
これは、int と mainというトークンをつなげたせいでエラーになります。
ただし、( ) ; { } など記号についてはつなげて書いても大丈夫です。
サンプルプログラムでも繋げて書いていたと思いますが、エラーになりません。
このため、次のように書いても問題ありません。
int
main
(
void
){
その他のルール
C言語は、大文字と小文字を区別します。
mainとMainは別のトークンとなるということです。
先ほども触れましたが、文の終わりには、 ; (セミコロン)を書くことです。
コメント以外では、全角文字を認識することはできないため、すべて半角で入力してください。
これは、スペースなども同様です。気づきにくいのですが、全角のスペースはエラーとなります。
慣習となっている書き方
C言語はフリーフォーマットと言いましたが、自由に書いていると、他人が見て読みにくいプログラムになってしまうため、ある程度、書き方の慣習になっていることがあります。
ブロックの書き方
int main(void) {
return 0;
}
int main(void)
{
return 0;
}
ブロックの開始は、上記のように関数の横に置くか、関数の下に書くのがよいとされています。
また、ブロックの終了は、上記のように、最後の行に } のみを書くのが良いとされています。
インデント
先ほどのブロックの書き方の例にあったreturn文は、字下げがされていたかと思います。
これは、インデントと呼ばれる、書き方です。
階層を表現するためにインデントが使われます。
右にずらすには、タブ(Tab)キーを使用するか、半角スペースで4つずらす、または、2つずらすことが多いです。
以上が、C言語プログラミングの基本と書き方についてでした。
書き方は自由度が高いため、コーディングルールを決めておくのがいいかと思います。
K&Rスタイルなど、代表的なルールがあるので、興味がある方は調べてみてはいかがでしょうか。
次は、画面に文字を表示する方法について学びます。