C言語入門 はじめに




2014年10月より個人の方を対象に、Study C無料提供を開始しました。
C言語を勉強中の方は、学習・教育に最適なC言語インタープリタのStudy Cを使ってみてください(個人の方は無料です)。
大学・高専・高校などの教育機関での採用実績も多数あるロングセラー商品Study Cが、個人向けに無料提供を始めました。
インタープリタの手軽さに加え、ゲームや3Dタートルグラフィックで楽しく勉強したりと、C言語の学習を強力にサポートします。
ブロック崩しゲーム 3Dツリー クリスマスツリー
また、このようなボタンの用意されているページでは、掲載しているプログラムをStudy Cに直接ロードし実行したりすることができます。
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する
Study C無料利用についての詳細は、このページを参照してください。



0.C言語とは

 C言語とは1972年にベル研究所のデニス・リッチーらによって考案されたプログラミング言語です。 UNIXというOSを開発するために作られた言語です。 その後、数十年の時を経た今でも言語仕様は強化され多くのプログラマに使われ続けています。 C言語の本はたくさんありますが、購入するのであれば下記の1冊をおすすめします。 C言語の生みの親であるデニス・リッチーの著書であり、C言語原点となる本です。 Study Cを開発しようとしたきっかけもこの本との出会いからでした。 また、この本の最後(付録)には詳細なC言語の定義が記載されており、Study Cの開発には大いに役立ちました。 下記のリンクは、カーニハンの著書のように見えますが、クリックしてリンク先を見てみればわかるようにカーニハンとリッチーの共著です。 この二人の頭文字をとってよくK&Rと略されます。C言語の話題の中でK&Rという言葉が出てきたらこの本のことと思ってください。

↑C言語の原点となる一冊です。この本を読まずしてC言語は語れません。


1.学習環境

 これから、プログラミング言語を学習しようと思ったとき候補になりそうな言語はC、C++、C#、VisualBasic、Perl、Java、PHP、Objective-C、Rubyなどが考えられます。 現在(2014年加筆時)、Java、Perl、PHP、RubyはWEB上のサービスを構築するために使用することがほとんどのようです(JavaはAndroidアプリの作成にも使われています)。 また、Perlは他のプログラミング言語と比べると癖のある文法なので、初めて勉強する言語としては不向きではないかと思います。。 VisualBasic(VB)、C#はマイクロソフト社独自の言語です。 VBは、いろいろな所で使われている印象を受けますが、新しく出たC#はVBの用途をそのまま継承するような製品のため、VBが将来どうなるのか不安が残ります。 C#は、まだ出たばかりで将来どうなるのか、今のところ未知数です。 残るC言語とC++は、どちらもよく使われている言語です。 C++は、C言語の文法すべて含みさらに機能が拡張されている言語です。 そのため基本的にC言語を理解できないと、C++の理解することはできません。 また、Java、C#もC言語の流れをくむ言語です。C言語やC++で基礎を固めておけば、簡単に理解することができます。

最近、Webアプリの開発で人気のあるPHPですが、C言語の影響を色濃く反映しています。 特に関数名が同じだったりするので、C言語習得者はすぐにでも使えそうな言語です。

2013-2014年加筆:iPod、iPhone、iPadの開発言語であるObjective-Cの利用が拡大しています。また、Andriodアプリの開発は、主にJavaが使われています。 C#はマイクロソフト系では主力の開発言語となっています。
スマートフォン/タブレットの流行でC言語の重要度が非常に増しております。 Objective-Cは、プリプロセッサによるC言語の拡張であるため100% C言語を理解することが好ましいと思います。 また、AndroidのNDKでの開発は主にC/C++を使用します(負荷の大きなゲームはNDKで開発されることが多いようです)。 iPhone、android用2Dゲームの共通プラットフォームであるCocos2d-xの利用も拡大しているようです。 これもC++なのでC言語の重要性が増してきています。

フリーランス、フリーエンジニアの為のIT求人【エンジニアナビ】

このリンク先を開いて「言語から探す」の「C C++」にチェックを入れて検索してみてください。 C言語(C++も含む)の案件なら地方で月50万円、首都圏で70万円といった収入になる感じです。 Objective-CもきわめてC言語に近いですから少し勉強すればその案件も対応できるようになると思います。

↑などのWebページで開発案件情報を検索するとC、C++、C#、VisualBasic、Perl、Java以外に、VC++(Visual C++)、UNIX C、JavaScript、SQLなどの記載があると思います。 以下にそれぞれについて簡単に説明します。
・VC++(Visual C++)
Visual C++マイクロソフト社のC++製品の昔の名称で、Windowsアプリケーションを作成するためのMFCというクラスライブラリが同製品に含まれていました。 このためVC++(Visual C++)とは、多くの場合C++でMFCを使用しWindowsアプリケーションを作成することを意味します。
・UNIX C
UNIX(LinuxやSolarisなどのUNIX系OS)で動作するアプリケーションをCで作成することを意味します。 ソケットライブラリを使用してTCP/IPの通信プログラムを作成するようなパターンが多いようです。
・JavaScript
HTMLファイルに埋め込まれブラウザ上で動作する簡単なプログラム言語です。CやJavaを知っていれば簡単に習得できます。
・SQL
データベースをアクセスするために使用します。これを勉強するのは一般的なプログラミング言語を習得してからだと思います。
・PHP
これもWEB上のサービスを構築するために使用される言語です。

ゲーム開発、組み込み、制御、UNIX通信関係などで特にC言語プログラマの需要が多かったのではないかと思います。 また最近は、要求される言語スキルが多岐にわたってきている印象を受けます。 このような現状では、C++、Java、C#への移行が容易なC言語でしっかり基礎を固めておくのが良いのではないかと思います。 また、C言語でのゲームプログラミングについて解説する講座も作成しましたのでご活用ください。




 C言語の勉強を始めるにあたりいくつかのものを用意する必用があります。 少なくとも下記のものは用意する必要があります。

(1)C言語の処理系
 プログラミング言語の学習する近道は、実際にたくさんのプログラムを作り試してみることです。 本を読んだり、セミナーを聞いたりするだけでは収得は困難でしょう。 このためプログラムを入力して実行するための環境が不可欠です。 コンピュータを持っていてインターネットにつなげているような人でも、だれのアドバイスもなしに適当なC言語の処理系を入手しプログラムを作成し実行できるように環境を整備することは非常に難しでしょう。 身近にプログラムを作れる人がいて、「プログラムはこう入力して実行する」というところまで環境を用意してくれなければ処理系を用意する段階で挫折してしまいかねません。

 オーキッドでは以前よりMS-DOS用として販売してきたC言語インタープリタ(ORCHID C)をWindows 95(現在では、8.1/8/7/Vista)用に移植し、Study Cとして販売しております(ORCHID Cにくらべ機能的には大幅に強化されています)。 最近では、複数の大学等の教育機関で教材として採用されています(採用実績)。 個人の方に限りますが、このStudy Cが2014年10月より無料で利用することができるようになりました。 Study C無料利用についての詳細は、このページを参照してください。

Study Cの概要を見たい方はこちらをクリックしてください。 Studyでプログラムをステップ実行しているところ Study Cの画面イメージを見たい方はこちらをクリックしてください


Study Cサンプル版ダウンロード

(2)学習環境の構築
Study Cをダウンロードが完了したら次の手順で学習環境を構築します。
・作業用のディレクトリを作成してダウンロードしたファイルを実行(自己解凍プログラム)してファイルを展開します。
・解凍したファイルの中からsetup.exeプログラムを実行します。
・setupプログラムがインストール先のディレクトリなどを確認してくるので通常はOKボタンを押します。
・インストール先のディレクトリが無い場合は、ディレクトリを作成してよいか確認してくるのではいボタンを押します。
これで学習環境の構築は完了です。

スタートメニューからStudy Cを起動すればエディタ、Cインタープリタ、デバッガを使ってすぐに勉強を開始することができます。
Study C無料利用(個人向け)の場合は、引き続きこのページの手順に従ってください。


2.プログラミング言語とは

 プログラムとは、コンピュータにどのような作業をさせるかを命令するための指示書のようなものです。 コンピュータは指示書にかかれた命令どおりに作業をこなして行きます。 この指示が人間が普段使っている言葉で行えればよいのですが、現在のコンピュータの能力では不可能です(将来可能になるかも知れません。しかし、人間が普段使っている言葉がコンピュータへの指示に適しているかという問題もあります)。このため、コンピュータへの 指示書を書くための人工的な言語があり文法が厳密に定義されています。 この言語のことをプログラミング言語と呼びます。プログラミング言語は人工的な言語のため 今までに多くの言語が考え出され、それぞれの言語に名前が付けられています。 有名なプログラミング言語にはBASIC、COBOL、FORTRAN、C、C++などがあります。

 作成したプログラム(指示書)をコンピュータに理解させ実行させるには、C言語などのプログラミング言語からコンピュータが理解できる唯一の言葉、機械語へ変換する必用があります。 機械語は、0と1の組合せだけで構成されコンピュータには理解しやすい言葉ですが、人間にとっては理解しにくい言語です。 この言語への変換はコンパイラやインタープリタと呼ばれるプログラムが行います。


3.プログラムをつくる上で必要なこと

 C言語は人工的な文法を持った言語(プログラム言語)なので、その文法を学習する必要があります。 文法は本書のような入門書で、ある程度学習することができますが、C言語を完全に修得するには、実際にプログラムを自分で作成し、下記@〜Dの作業を何度もくりかえし学習する必要があります。

@プログラムを作成
              ↓
A作成したプログラムを実行させてみる
              ↓
B思ったとおりの実行結果になるかを確認する
              ↓
C動作がおかしければその原因を究明する
              ↓
Dプログラムを修正する

 この@〜Dの作業を行うには、コンピュータ以外に少なくとも次に示すソフトウェアを用意する必要があります。

 @エディタ
 エディタはプログラムをコンピュータに入力したり、以前に入力したプログラムを修正 するためのソフトウェアです。エディタはワープロのような機能を持っており、日本語の 文章を入力するようにプログラムを入力していきます。
Study Cでは画面右上のEDITというボタンを押せばエディタが起動されます。
StudyCのエディタでプログラムを編集しているところ
※Study Cがインストールされている方は下記のボタンで実行してみてください。
Study Cにロードし編集する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて...

 Aインタープリタ/コンパイラ
 処理系は、作成した言語(本書ではC言語)のプログラムを機械語に翻訳したり実行
するためのソフトウェアです。処理系の翻訳形式にはインタープリタ方式とコンパイラ
方式の2種類があります。STUDY Cはインタープリタ方式です。
Study Cでは画面の右上から5番目のRUNというボタンを押すとエディタで入力したプログラムが実行されます(ステップ実行は6番目のボタンです)。
Studyでプログラムをステップ実行しているところ
※Study Cがインストールされている方は下記のボタンで実行してみてください。
Study CにロードしStep実行する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて...

 BWindows
 上記のソフトウェアをコンピュータ上で動作させるために、Windows(7/8など)というソフトウェアが必要です。 Windowsとは米国のマイクロ・ソフト社が開発、販売をしているOS(Operating Systemオペレーティング・システム、基本ソフトウェア)です。 OSはハードウェア(コンピュータ機器)とアプリケーションソフト(ワープロ、表計算などの間の橋渡しをし、コンピュータ全体を管理する基本的なソフトウェアです。 OS自体は空気のような存在で、ワープロなどを使っているときはOSが存在していることすら忘れてしまいますが、コンピュータを利用する上ではなくてはならないものです。



4.インタープリタとコンパイラの違い

 C言語も日本語や英語と同じように言語の一種なので、C言語を日本語、英語を機械語と置き換えて考えてみましょう。

      日本語(C言語)
 日本人           外国人

(日本語しか知らない     (英語しか知らない
 プログラマ)        コンピュータ)

 当然、日本人のあなた(プログラマ)は日本語(C言語)で外国人(コンピュータ)に話
しかけようとします。しかし、相手は日本語を理解できないため意味が通じません。
このような状況では普通、通訳を使います。

       日本語        英語

 日本人        通訳         外国人(英語圏の)

 通訳が日本語(C言語)から英語(機械語)に翻訳を行うので、相手に理解させることができます。 インタープリタとコンパイラの違いは、通訳がどのように翻訳して相手にプログラムを伝えるかの違いに相当します。 翻訳の方法には次の2通りがあります。

 @通訳が日本語の命令書の内容を1文読んでは相手(外国人)に英語でその内容を伝えその内容に従って行動する方法(同時通訳)。

 A日本語の命令書全文を英語に翻訳し英語の命令書をつくり、相手(外国人)がその
英語の命令書に従って行動する方法(翻訳)。

 コンピュータの場合もこれと同じで、前者がインタープリタ方式、後者がコンパイラ方式と呼ばれています。 コンピュータの場合は翻訳を行う人がいるわけではないので、C言語から機械語への翻訳作業はインタープリタまたはコンパイラと呼ばれる翻訳用ソフトウェア(処理系)によって自動的に行われます。

(日本語)                          (英語)
日本人            翻訳者            外国人

(C言語)                          (機械語)
プログラマ        コンパイラまたは        コンピュータ
             インタープリタ


5.インタープリタとコンパイラの長所と短所

 インタープリタは、プログラム作成が完了すると同時に実行を開始することができますが、1行ずつ翻訳しながら実行するので、プログラムの実行時間は遅くなります。 また、コンパイラは作成したプログラムをすべて機械語に翻訳してからでないと実行できないので実行開始までに時間がかかりますが、一度機械語のプログラムが作られてしまえば完成 したプログラムを高速に実行することができます。
 初心者の言語学習方法は下記の図のようになるので、初心者にはプログラム修正後ただちに実行結果が確認できるインタープリタ形式が向いています。

インタープリタ             コンパイラ

    プログラムの作成          プログラムの作成
       ↓                 ↓
    プログラムの実行          機械語への変換
       ↓                 ↓
    プログラムの修正          プログラムの実行
                         ↓
                      プログラムの修正

 いずれの方法で学習しても、作成されるプログラムはまったく同じものです。したがって、インタープリタでプログラムを開発し、最後にコンパイラで機械語に翻訳するといった使い分けも可能です。


6.プログラムの構成

 プログラムの構成に決まった形式はありませんが、本書ではなるべく次のような簡単なプログラム構成にしぼって話を進めていきます。

@計算や判断などの処理
   ↓
 データの出力(表示)

Aデータの入力
   ↓
 計算や判断などの処理
   ↓
 データの出力(表示)



C言語入門が始まります。StudyCのダウンロードをまだ行っていない方は、Study Cダウンロードをクリックしてください。 また、Study Cの購入を希望される方はStudy C購入方法をクリックしてください。 (Study Cの概要)

個人の方に限りますが、このStudy Cが2014年10月より無料で利用することができるようになりました。 Study C無料利用についての詳細は、このページを参照してください。


[an error occurred while processing this directive]