目次へ | 前の項目へ | 次の項目へ |
とりあえず作成するソースはC言語の作者である KernighanとRitchieが書いた古典「The C PROGRAMMING LANGUAGE」の 最初にでてくる例題を参考にします。これは、アメリカで通常用いられている温度単位の華氏 (Fahrenheit)により表示された温度を摂氏(Celsius)に変換するプログラムで す。
# include <stdio.h> main() { int fahr, celsius, lower, upper, step ; lower = 0; upper = 300; step = 20; fahr = lower; while (fahr <= upper) { celsius = 5 * (fahr - 32) / 9; printf("%d\t%d\n", fahr, celsius); fahr += step; } } |
これを temp.c という名前で保存したらターミナルでまずコンパイルし ます。
$ gcc temp.c
これにより、カレントディレクトリに a.out というファイルが作成され ていますので、それが実際に動くプログラムになっています。実行は、
$ ./a.out
により行われます。./ というのがファイル名の前についていますが、こ の . はシェルによりカレントディレクトリと解釈される特殊な文字です。 よって、今このディレクトリにある a.out を実行しなさいという命令に なっています。なぜ、そのようなおまじないが必要かは、パスに関係しています。
通常、ターミナルからコマンドを実行するとき、コマンドの本体はそこにはありま せん。コマンドの内容ごとにまとめてある /bin ディレクトリや /usr/X11/bin や /usr/bin などのディレクトリに置いてあります。 それらが場所を指定しなくてもうまく動いてくれるのは、パスというそれらにつな がる道筋があらかじめ登録されているためです。それは、
$ export | grep PATH
とターミナルで実行してみると分かります。しかし、今いるカレントディレクトリは そのパスの中に指定されていません。そのため、コマンド実行を行うのに、カレン トディレクトリをわざわざ明示する必要があったわけです。
さて、おまけですが、先程の温度変換プログラムをRubyで書くとどうなるでしょう か。実は、かなり似ていますが、宣言などが不要な分Rubyが楽に書けると思うのは、 身びいき過ぎますでしょうか。
lower = 0 upper = 300 step = 20 fahr = lower while fahr <= upper celsius = 5 * (fahr - 32) / 9 printf("%d\t%d\n", fahr, celsius) fahr += step end |
ページの先頭へ | 目次へ | 前の項目へ | 次の項目へ |