最初のプログラムとその実行まで


 ● C言語

 1972年頃にAT&T社の研究機関、ベル研究所でD.Ritchieによって開発された。最初の開発動機は、UNIXを異なる機種に移植しやすくするためであった。
 その言語仕様は非常にコンパクトであり、アセンブラ(機械語を構築するための言語)のような使い方から、ハードウェアを意識しない移植性の高い使い方まで幅広い使い方ができる。また、構造化プログラミングが可能で、すべての処理を関数の集まりとして記述する。各種ライブラリ(例えば、数学ライブラリ)があらかじめ用意されているが、他の主に計算に利用される言語(FORTRANやpascalなど)と異なり、正弦(Sin)関数でさえ、ライブラリを組み込まないと実行できない仕様となっているので初学者は注意を要する。
 工学分野では、実験装置の制御や実験データのリアルタイム処理に関するプログラムに利用されてきた。しかし、その自由度の高さから、FORTRANやpascalなどの言語に比べ、コンパイル時にエラーが出にくいため、製作者が意図しない結果を生じることがある。このことから、以前は浮動小数点演算を伴う数値計算には積極的に利用されてこなかった。最近では、開発環境(統合開発環境[IDE]、デバッガなど)が整備されたため、不用意なエラーが出る機会も少なくなり、数値計算を含むあらゆる分野に使用されてきている。また、現在では,オブジェクト指向に拡張したC++言語が登場し、多くの分野で利用されている。最近のソフトウエアの多く(パソコン用アプリケーション、ゲームソフト等)はこのC++言語を用いて開発されたものである。

 ※ ”C#(シーシャープ)”と呼ばれる言語も登場してきた。今後の動向(普及具合など)に注意してみよう。


  C言語を学ぶ上での注意点(重要)

(0) 本講義では、(従来はFORTRANやBASICで学習してきた)数値計算系のプログラムをC言語であつかえるようになることを目的とする。したがって、C言語の一つの特徴であるポインタやメモリ操作については詳しく述べない。また、同じような理由でC言語のシステマチックな部分には積極的に触れないので注意してほしい。

(1) 本質的に重要でない専門用語は、その都度簡単に説明を行うのみとするので、興味のあるものは各自で調べること。

(2) プログラムは自由度が極めて高い。すなわち、同じ結果を得るプログラムは無数に存在するので、自分で考えた方法を記述してかまわない。ただし、初学者にとって市販の本などを参考にすることは、よいプログラムを書く上で重要であろう。

(3) C言語は、前述のように市販のソフトウエアも記述できる言語である。本授業では、初学者のみを対象としたプログラムの記述法・実行法のみを取り扱う。したがって、市販の解説書などに書かれている正しいプログラムの作り方(テクニック)とは異なる点もでてくることと思う。その点を考慮して授業をうけてほしい。


 C言語を学ぶ上で必要なもの[コンピュータ・OS以外で]

(1) テキスト・エディタ(文書を入力・編集できるソフト)
   プログラムを記述するのに用いる。必須である。

(2) Cコンパイラ
   C言語で記述したプログラム(コード、ソースとも呼ぶ)を翻訳し、コンピュータが理解できる機械語に変換する。
   ここでは、便宜上、リンカも含むものとする。もちろん、必須。

 コラム:パソコン上で動くCコンパイラ(C++コンパイラ)は多数存在する。その中には統合開発環境[IDE]をもっているものもある。この場合はテキスト・エディタ(プログラム・エディタ)も含まれており、他に必要なものはない。なお、最近のパソコンにおけるプログラム作成は、従来のように計算を行う部分や文字・数字の入出力部分だけではなく、視覚的に優れたユーザーインターフェイスを設計する部分にも力点がおかれている。


 ● プログラムを組む前に

(1) プログラム作成および実行はUNIX上で行う。まず、ホームディレクトリに cprog (英小文字) というフォルダ(ディレクトリ)を作り、その中にC言語のプログラムを入れることにする。

    
$ mkdir cprog [Enter]として”cprog”フォルダを新規に作成できる。

(2) 端末エミュレータ の起動およびコマンドラインのコマンド入力方法を確認しておく。

   $ ls  [Enter] 
   とすれば、そのフォルダにあるファイル名が表示される。また、

   $ pwd [Enter] 
   とすれば、現在のフォルダが位置がわかる。


 ● プログラム実行までの全流れ(ファイル名が hello.c の場合の例を含む)

(1) 机上の考察
   プログラムを記述する前に、そのプログラムで何をどのように実行したらよいのかを考えよう。
   実際にはこの部分が大切であり、大変なのである。
   現在、自分の思い描いたプログラムを何の苦労もなしに作成できる夢のツールはない。

(2) フォルダ(ディレクトリ)への移動とその確認

       $ cd cprog  [Enter] としてcprogフォルダへ移動
       $ pwd   [Enter] として現在のフォルダを位置確認

(3) プログラム・コードの記述
   プログラムを
テキスト・エディタ
で記述する。打ち込みミスにも注意を払う。

   フォルダを正しく指定して、ファイル名を hello.c として保存する。

   $ ls  [Enter]  としてファイルの存在(hello.c)の確認

   $ cat hello.c  [Enter] として記述内容の確認

(4) Cコンパイラでコンパイル(翻訳)を行う。

       $ cc hello.c  [Enter]

   コンパイルが成功すると何のメッセージも表示されない(次の行に % がでてくる)
   ここで、エラーメッセージが出たら、コンパイルエラー(大抵が文法ミス)であるので(3)にもどる。
   また、ここでエラーがでないこととプログラムが正しく動くことは異なるので注意する。

(5) 実行ファイルを実行する

       $ ./a.out  [Enter] 

   ここで、エラーメッセージが出たら、実行時(ランタイム)エラーであるので(3)にもどる。
   また、正しい値が得られなければ(得られていないようであれば)、(3)にもどる。

(6) プログラムが正常動作する可能性がなければ、(1)から考えなおす。
   

 


  最初のプログラムとその実行

   下のテキスト(プログラム・コード)をテキストエディタに貼り付け、
   hello.c のような名前を付けて保存する(拡張子は必ず ".c")。
   端末エミュレータを起動し、コマンドラインから
     $ cc hello.c  [Enter] 
     $ ./a.out    [Enter] 
   とすることで画面上に Hello World! と表示される。

   ※ "hello, world"の由来についてはこちらを参照のこと。


 ● 最初のプログラム("Hello World!" の表示)
001:
002:
003:
004:
005:
006:
007:
#include <stdio.h>
 
int main(void)
{
   printf("Hello World!\n");
   return 0;
}
001:
002:
003:
004:
005:
006:
007:
 
 
 
 
"Hello World!"を表示
 
 
 
 

 戻る