C言語

C言語プログラミングの基本と書き方について

今回は、プログラムを始める前に押さえておきたい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ではプログラムを終了することを示しています。

コメントの記載

サンプルプログラムに、 /* 文字列を出力する */ がありますが、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スタイルなど、代表的なルールがあるので、興味がある方は調べてみてはいかがでしょうか。

次は、画面に文字を表示する方法について学びます。

文字を画面に表示

-C言語