みんなC言語大好き?
大嫌い? あっそ.
C言語はコンパイル型のプログラミング言語です.コンピュータは機械語しか処理できません.プログラミング言語を含む自然言語から機械語へ翻訳することをコンパイルと呼びます.コンパイルするソフトウェアのことをコンパイラと呼びます.
C言語の導入方法
開発環境やコンパイラはいろいろあります.それらの種類を簡単にまとめます.あまりにも種類が多くて導入が面倒くさいので,オンライン・コンパイラを使います.以下は完全に蛇足なので導入したい人はどうぞ.
オンライン・コンパイラ
オンライン上でコンパイルできるシステムです.Googleで調べるとたくさん出てきます.
個人的におすすめできるのが,このコンパイラです.
Paizaでもいいのですが,なぜか動かないことがあるので正直つらいです.以下完全に蛇足なので,本格的に導入したい人はそれぞれ調べてみてください.
統合開発環境
統合開発環境とは,楽に開発するためのソフトウェアです.コンパイルからデバッグ,テストまでありとあらゆることをサポートしてくれます.主な統合開発環境としては以下のものが挙げられます.
- Visual Studio
- Visual Studio Code
- XCode
Macを使っている場合はXCodeが主流ですが,WindowsではVisual Studioが主流です.Linux使っている人はvimを推してくることがあります.
コンパイラ
- Visual C++
- Intel C++ Compiler
- gcc
Visual Studioを使うと自動的にVisual C++を使うことになります.Intelに課金するともっと速くて省メモリなプロセッサに最適化されたプログラムをコンパイルできるようになります.Linux使っている人はgccを使うことになります.
最初のプログラム
最初のプログラムと言えば「Hello, World」なのですが,そもそも画面に文字を表示するというのは様々な説明をすっ飛ばしています.あまりよくはありません.ここで長々とprintf
について説明するよりも早く筆を置きたいので,最も簡単な何もしないC言語のコードを示します.
int main() {
return 0;
}
このプログラムを実行すると,Program finished with exit code 0
とコンソールに表示されます.「プログラムは終了コード0を伴って終了しました」という意味です.
このプログラムにはreturn
文しかありません.return
文では関数が終了したことを呼び出し元に通知します.main
関数の呼び出し元はOSです.なので,OSにmain
関数が終了したことを通知しています.
return
文の文末にセミコロン;
がありますが,これはプログラムの実行単位ごとにつけることになっています.最初はどこでつければいいのかわからないと思うので,基本的に1つの実行単位ごとにつける,ということを覚えてください.
main関数
main関数とは,プログラムの開始地点を表す関数です.
int main() {
この行ではmain関数が始まることを宣言しています.中括弧{
,}
はC言語を使うと頻繁に見ることとなります.だいたい,ここからここまで,という意味です.一つのくくりを表しています.
int
というのは終了コードが整数型になることを示しています.main
の隣に()
がありますが,この括弧は関数の引数です.
$$ f(x) = y$$
みたいな数学的な関数がありますが,$x$のことを引数(ひきすう)と呼びます.この場合では()
となっていて引数が存在しないので,「main
関数は引数を取らず,終了コードを整数で返す」と解釈できます.
終了コード
main
関数は整数型の終了コードを返すと翻訳しましたが,終了コードとは何でしょう?
終了コードというのは,プログラムがOSに対してどのように終了したのか通知するためのコードです.一般的に0
が正常終了ですが,必ずしも0
が正常終了とは限りません.プログラムをどう作るかによって何が正常で何が正常ではないか決めることができます.
せっかくなので,以下のプログラムを入力してください.
int main() {
return 5 + 15;
}
終了コードを電卓代わりに使っていますが,$5 + 15 = 20$ ですよね? 実際に実行すると,Program finished with exit code 20
とコンソールに表示されます.
ところが,Paizaのオンライン・コンパイラでこのコードを実行するとエラーが発生します.Paizaでは終了コード0
を返したプログラムは正常終了と解釈しているので,0
以外の数値をmain
関数で返すとエラーが発生します.
OSとプログラムの終了
OSはプログラムの終了をmain
関数でreturn
された数値をもとに判断しています.逆に言えば,プログラムの終了をOSに通知するには,main
関数で数値をreturn
すればいい,ということがわかります.例題はほぼ何もしないプログラムということですね.
おわりに
これで何もしないC言語のプログラムを書けるようになりました.return
される数字を弄れば電卓の代わりになります.return
文の数字を弄って好きな計算をさせてみましょう.足し算+
,引き算-
,掛け算*
,割り算/
などの演算子が使えます.
int main() {
return 5 * 5 + 10;
}