C言語編 第0章 はじめに

この章の概要

この章の概要です。

イントロダクション

C言語を学ぼうとするのには、それぞれの理由があることでしょう。 あなたがもし、Windows などの環境で、画像を表示したり、音を鳴らしたり、 あるいはそれらを組み合わせてゲームを作ったりすることを考えているのなら、 「C言語の学習だけでは不可能」だということを知っておきましょう。 ただし、C言語の学習がスタート地点であることは、ほぼ間違いありません(「ほぼ」と言うのは、C言語だけが選択肢ではないという意味です)。

具体的なことを書いておきます。 純粋にC言語だけでできることは、(画像ではなく)文字を表示したり、キーボードから入力を受け取ったり、 ファイルの読み書きを行ったり・・・とその程度です。

実用アプリにせよ、ゲームにせよ、C言語で作れると聞いたことがある人もいるでしょう。 もちろんC言語で作れますが、それはC言語を使って、画像を表示したり、 音を鳴らしたりする機能(これらの機能は、例えば Windows自身が持っているものです)を呼び出しているだけであり、 C言語そのものには、そんな機能はありません。 そして、そういった機能に関する話題は、C言語の入門書を見ても恐らく登場しません(当サイトのC言語編でも同様です)。 それでも、確実に先へ進んでいると考えて間違いありません。

画像も表示できないようなC言語の学習は面白みも少ないでしょうが、 逆に、この部分の学習を疎かにして、いきなりゲーム制作などを始めてみたところで、まったくといっていいほど理解できないと思います。 前述したような「(Windows などが提供している)画像を表示したり、音を鳴らしたりする機能」を呼び出すためには、 C言語の文法・ルールの理解が必要ですから、 一見無意味なようにも思えるC言語の学習は必須事項です。

準備

C言語の学習を始めるに当たり、コンパイラを準備する必要があります。 当サイトでは現在、

  1. Microsoft VisualStudio Community 2017
  2. Microsoft VisualStudio Community 2015
  3. Microsoft VisualStudio Express 2013 for Windows Desktop
  4. clang 3.7

以上のコンパイラに対応しています。
なお、当サイトでは、VisualStudioシリーズを指して「VisualC++ XXXX」(XXXX は西暦年)という名称で統一しています。

1〜3の VisualStudio は、いずれも Microsoft社製の開発環境です。 Windows使用者は、これを選択すればいいでしょう
「Community」や「Express」と付いているタイプは無料で入手できます。 「Community」については、条件に合っていれば無料で使用でき、「Express」よりも高機能なものになっています。 個人開発者であれば、条件に合致していると思われるので、こちらを検討すると良いでしょう(Express の方がコンパクトですけど)。 詳細は、Microsoft のサポートページでご確認下さい
当サイトでは、2015 からは Community版を使用して動作確認を行っていますが、 タイプの違いによって、プログラムの書き方が変わったり、使えない機能があったりということはありません(バージョンによる違いはあり得ます)。

4の clang も無料で入手できます。 OS X 使用者は、Xcode をインストールすれば使用できるようになります。 Windows 使用者でも、MinGW や Cygwin の利用によって使用できますが、ある程度知識が必要になるので、 基本的に VisualStudio の方をお勧めします
なお、当サイトでは Xcode 7.3 のデフォルトコンパイラに合わせて、clang 3.7 で動作確認をしていますが、 基本的に、使用可能な最新版を使えば良いです。

また、これら以外の手段として、オンラインコンパイラを使う方法もあります。 これは、Webブラウザを通して、サービス提供者のサーバにあるコンパイラを使う方法で、 手元の PC に開発環境を構築しなくても、(ある程度の)プログラミングを行うことができます。 ただし、多少、出来ないことがあるかも知れませんから、その点はご了承下さい。
開発ツールの情報」のページに、 paiza.IO という Webサイトの情報を載せていますので、そちらを参照してみて下さい。
paiza.IO を使う場合、実際に動作しているコンパイラは clang 3.8 です(2017年6月5日現在)。


なお、C言語には世界的に標準化された規格が存在します。 2017年3月現在、C89、C95、C99、C11 という4つの規格(数値はそれぞれ正暦年の下2桁の意味)があります。 当サイトでは、最も普及している C95 を前提とし、関連する新機能や変更点が C99/11 に存在すれば適宜取り上げます。 ただし、規格にこだわるよりも、上記のコンパイラで動作することを重視しています。

VisualC++ 2013/2015/2017 は、C95 までの機能を使うことができ、C99 の機能の多くが使えますが、 C11 の機能はほぼ使えません。
clang 3.7 は、C99/C11 に対応しています。

C99/11 に固有な解説は、できるだけ分離したところに書くようにしています。 そこまで学習するのが大変だと感じるようなら、単にその箇所を無視して読み進めて下さい。


VisualC++ は、C言語の仕様上はまったく問題のないはずのソースコードに対して、警告やエラーを出すことがあります。 これはセキュリティ上、危険な場合への対策を促すものですが、学習には少々邪魔になるかも知れません(もちろん、本格的なプログラムでは、危険性があるということは認識すべきです)。 この辺りの詳細は、開発ツールの情報を参照して下さい。

方向性

当サイトのC言語編では、入門者を対象にした解説を行っていきます。 ただし、当サイトの内容だけで全てを理解できるとは思わないで下さい。 プログラムの学習はそんなに簡単なことではありません。 当サイト以外にも、参考になる Webページや、書籍は大量に存在します。 当サイトの内容だけで理解できなければ、他の人の説明にも目を通してみましょう。 少し違った視点から見ることで、理解が進む場合もあります。

もちろん、どうしても理解できない場合は、質問メールを送って下されば、可能な範囲でお答えします。 ky_webid@yahoo.co.jp までどうぞ。

本編の内容について

当サイトでは、基本的には、第0章から順番に読み進めていくことを前提に解説を行っています。 できるだけ、突然内容が飛躍するようなことが無いように考慮しているつもりですが、明らかにそうなっていない箇所があれば、是非ご指摘下さい。

解説のレベルとしては、初めてプログラミングを学習する人を想定していますが、各所で割と高いレベルの話にまで踏み込んでいます。 最初から必要となることは無いと思われる説明は、次のように破線で囲んでコラム的な扱いとしています。 この部分の説明については、難しければ読み飛ばしても構いません。

この部分に書かれている内容は、少し高度なものです。

本編で登場するサンプルプログラムや、その断片は、使えそうであれば、ご自分のプログラミング作業の中でそのまま使って頂いても構いません。 ただし、バグが無いことや、最良のプログラムであることを保証している訳ではありませんので、自己責任でお願いします。


参考リンク

更新履歴

'2017/6/6 C11 への対応を開始したので、それに合わせて文章を修正。

'2017/6/5 paiza.IO の紹介を追加。

'2017/3/25 VisualC++ 2017 に対応。

'2016/10/15 clang の対応バージョンを 3.7、Xcode を 7.3 に更新。

'2015/10/12 clang の対応バージョンを 3.4 に更新。

'2015/9/5 VisualC++ 2012 の対応終了。

'2015/8/18 VisualC++ 2010 の対応終了。

'2015/8/15 VisualC++ 2015 に対応。

'2014/10/18 clang 3.2 に対応。

'2014/2/8 コンパイラに関する情報を、「開発ツールの情報」のページへ分離。

'2014/2/1 VisualC++ 2013 に対応。

'2014/1/14 VisualC++ 2008 の対応終了。

'2014/1/12 clang 3.0 に対応。
VisualC++2012、2008 のリンク先を修正。
参考リンクの C11 のページを、日本語版のページに差し替え。

'2013/4/14 C99 への対応について追記。

'2012/9/17 VisualC++2012 に対応開始。

'2012/5/20 C11 について追記。

'2010/11/20 動作確認環境について追記。文章の一部を強調表示。

'2010/9/18 「本編の内容について」を追加。

'2010/7/23 参考リンクに「太田研究室 Visual C++ 2010 Express インストール メモ」を追加。
C言語の標準規格について補足。

'2010/5/1 VisualC++2010 Express Edition に対応。

'2010/4/29 VisualC++2010 Express Edition の公開を紹介。

'2009/3/1 「この章の概要」を追加。

'2008/8/29 新規作成。



次の章へ

C言語編のトップページへ

Programming Place Plus のトップページへ