C言語基礎|プログラムとコンパイルのしくみ

プログラムとは「文字の並び」である

みなさんがエディタで打ち込んだ C言語のプログラムは、
最初からコンピュータが理解できる形になっているわけではありません。

私たちが書いているのは、
人間が読み書きしやすい文字の並び
です。

このような、人間向けに書かれたプログラムのことを
ソースプログラム(source program)
と呼びます。

そして、そのソースプログラムを保存したファイルを
ソースファイル(source file)
と呼びます。

用語意味
ソースプログラム人間が読むために書かれたプログラム
ソースファイルソースプログラムを保存したファイル

source には「もとになるもの」という意味があります。
そのため、ソースプログラムは「原始プログラム」と呼ばれることもあります。

ソースファイルはテキスト形式で保存する

ソースプログラムは、
テキスト形式
で保存されます。

ここでいうテキストとは、
文字データとして扱える形式
という意味です。

C言語では、ソースファイルに
.c
という拡張子を付けるのが慣習です。

たとえば、chap01 というフォルダの中に
sample_calc.c
という名前で保存すると、それが C言語のソースファイルになります。

重要なポイント

項目内容
拡張子.c
保存形式テキスト形式
目的C言語のソースファイルであることを示す。

ソースプログラムはそのままでは実行できない

ここがとても大切なポイントです。

ソースプログラムは、
そのままでは実行できません。

なぜなら、コンピュータが直接理解できるのは、
0 と 1 の並び(ビット列)
だけだからです。

そこで必要になるのが、
コンパイル
という作業です。

コンパイルとリンクの流れ

ソースプログラムを実行できる形に変換するまでには、
いくつかの段階があります。

作業内容
コンパイルソースプログラムを機械語に翻訳
リンク必要な部品を結合
実行実行プログラムを動かす。

この一連の流れを図で表すと、次のようなイメージになります。

この処理が正しく完了すると、
プログラムを実行したときに画面へ結果が表示されます。

エラーと診断メッセージ

もしソースプログラムに誤りがあると、
コンパイルの途中で エラー が発生します。

その際、コンパイラは
診断メッセージ(diagnostic message)
を表示して、どこに問題があるかを教えてくれます。

状況対応
エラー発生メッセージを確認
修正ソースプログラムを直す。
再実行もう一度コンパイル

エラーは失敗ではなく、
修正点を教えてくれる案内役
だと考えてください。

サンプルプログラムを見てみよう

ここで、実際の C言語プログラムを確認してみます。
内容と表示メッセージは、指定どおり変更しています。

プロジェクト名:chap1-4-1 ソースファイル名:chap1-4-1.c

/* 二つの整数を足して結果を表示するプログラム */

#include <stdio.h>

int main(void)
{
    printf("%d", 21 + 29);   // 二つの整数の合計を表示
    return 0;
}

このプログラムを実行すると、画面には次の数値が表示されます。

50

コメント(注釈)とは何か

プログラムの中で、

/* 二つの整数を足して結果を表示するプログラム */

// 二つの整数の合計を表示

と書かれている部分は、
コメント(注釈)
と呼ばれます。

コメントは、
プログラムの動作には一切影響しません。

項目内容
目的読み手に説明を伝える。
実行への影響なし
記述言語日本語・英語どちらでも可

コメントは、
他人のためだけでなく、未来の自分のため
にも非常に重要です。

二種類のコメント形式

伝統的コメント

/* コメント内容 */

特徴は次のとおりです。

特徴内容
複数行可能
位置どこにでも書ける。
注意点閉じ忘れると危険

閉じるための */ を書き忘れると、
プログラムの終わりまでコメントとして扱われてしまいます。

行末コメント

// コメント内容
特徴内容
対象範囲その行の終わりまで
終了記号不要
向いている用途短い説明

手軽に書けるため、現在はこちらがよく使われます。

コメントを書くときの注意点

コメントの入れ子はできない

次のような書き方はエラーになります。

/* /* この書き方はNG */ */

最初の */ までがコメントと認識されてしまうためです。

コメント内で使える記号

状況使用可否
伝統的コメント内の //使用可能
行末コメント内の /* */使用可能

そのため、次の記述はエラーになりません。

/* // このコメントはOK */
/* /* この書き方もOK */

プログラムの決まり文句を覚えよう

コメントを除いたプログラムは、次のようになります。

プロジェクト名:chap1-4-2 ソースファイル名:chap1-4-2.c

#include <stdio.h>

int main(void)
{
    printf("%d", 21 + 29);
    return 0;
}

この形は、
C言語プログラムの基本形(決まり文句)
です。

部分役割
include機能の読み込み
mainプログラムの入口
printf表示
return 0正常終了

意味はこれから少しずつ理解していけば大丈夫です。
まずは 形を覚えること が大切です。

stdio.h の名前に注意

stdio は
standard input/output(標準入出力)
の略です。

studio ではないので、
綴りには注意しましょう。

まとめ:コンパイルのしくみを意識しよう

この章で覚えておきたいポイントは次のとおりです。

ポイント内容
ソースプログラム人間向けの文字の並び
実行前の作業コンパイルとリンクが必要
コメント読み手のための説明
エラー修正点を教えてくれる。

プログラムには記号が多く、
最初は戸惑うかもしれません。

でも大丈夫です。
一つひとつ意味を知っていけば、必ず読めるようになります。