Login
Immutable PageDiscussionInfoAttachments
alstamber/Clanguage/HelloWorld

MMA

初めてのプログラム Hello World

何このページ

とりあえずプログラムを書いてみる

プログラミングなんて右も左もわからないという人も、とりあえずプログラムをひとつ書いてみると何か感覚としてつかめるということがあるかもしれません。というわけでひとつプログラムを早速書いてみることにしましょう。なお、以下の説明はsunの計算機で行うことを前提に書いています。自分の計算機でやるつもりの人は、適宜読み替えてください。

まずプログラムを作るためには、ソースコードを作らなければなりません。ソースコードはテキストファイルです。
テキストファイルを編集するソフトといえば……エディタです。というわけでまず、エディタを立ち上げましょう。CL(コンピュータリテラシー)ではEmacsが推奨されているようですが、vimやnanoといったエディタでも問題はないでしょう。emacsでは立ち上げる時に後ろにファイル名を指定すると、そのファイル名のファイルを開いて起動することができます。今回はhelloworld.cというファイルを開いて起動することにします。

% emacs helloworld.c &

Cのソースコードには拡張子としてcをつけるのがまぁルールみたいなものなので、それに従うことにします。

次に何も考えずに次の文を打ち込んでください。

   1 #include <stdio.h>
   2 
   3 int main (void){
   4         printf("Hello World\n");
   5 
   6         return 0;
   7 }

それぞれの単語がどういう意味なのかはあとでじっくり説明するので、とりあえず意味などは考えないで書いてみましょう。

書き終わったら保存して、エディタを閉じましょう。

ソースコードが完成したら、次はコンパイラを使ってコンパイルをしなければいけません。sunではCのソースコードをコンパイルするためのコマンドが用意されています。gccというコマンドです。これを使うことにしましょう。

% gcc -o helloworld helloworld.c

頭の%はコマンドのプロンプトという意味なので無視してください。つまりgcc以降を端末に入力してEnterキーを押せばいいということです。このコマンドは「helloworld.cというソースコードを読み込んでコンパイルし、helloworldという名前の実行ファイルを作る」という意味です。
実行して何も出てこなかった人、コンパイル成功です。なにかずらずらと出てきた人、残念ながらコンパイル失敗です。ソースコードを書く際にどこか失敗していると思われます。もう一度ソースコードを開いて、正しく写せているか確認しましょう。

コンパイルできたら、早速実行してみましょう。

% ./helloworld
Hello World

実行するとHello Worldと表示されて終了してしまいました。なんてしょぼいプログラムでしょう。しかしこれでも立派に処理をして出力しているのでプログラムです。あなたは今自分の手でプログラムを作ったわけです。感動したかもしれないし、感動しなかったかもしれません。ちなみに私が初めてプログラムを動かしたときは「おー」ぐらいの反応でした。どうでもいいですね。


さっきのソースコードの解説

さてプログラムが動いたのはいいですが、さっきのソースコードの意味が有耶無耶なままです。とりあえず今説明できる範囲で説明してみることにします。

早速ですが、1行目の説明はあとに回します。ちょっとこいつはクセモノなのです。
3行目には「int main (void)」と書かれています。その後ろには「{」が付いています。この「{」は7行目の「}」と対応していて、3行目から7行目まではひとつの塊であることを表しています。さて、「int main (void)」と書かれているこのひとかたまりのことをmain関数と呼びます。Cではプログラムはmain関数から始まることになっています。だからどんなCのプログラムにも必ずひとつmain関数が存在します。今はmain関数だけを扱いますが、あとあとmain関数以外の関数を自分で作ってmain関数からそっちに処理を飛ばしたりといったこともできるようになります。まぁ今は「main関数」というのがあってそこからプログラムは実行されるんだ、ということだけ覚えておけばいいと思います。
次に書かれているのは「printf("Hello World\n");」という文です。printfというのは()の中身を標準出力に出力するものです。標準出力ってなんじゃいなと思うひとが多いと思いますが、一般的には端末の画面です。この場合には"Hello World\n"を端末の画面に出力しろと言ってるわけです。
Cでは""で囲われたものは文字列(文字の並び)として扱われます。"Hello World\n"というのは「Hello World\n」という文字の並びなわけです。最後についてる「\n」っていうのは改行を表す特殊な記号です。つまりまとめれば、「Hello World(改行)」という文字列を端末の画面に出力しろ、という意味になってるわけです。

そこから1行あけて「return 0;」と書いてあります。これはmain関数の終わりに必ず書かなければいけないものだと今は覚えておいてください。本当は厳密な意味がありますが、それはもっと後で説明することにします。

ここで1行目の#include <stdio.h>の話に戻ることにします。これはprintfを使うときに必ず一番最初に書かなければいけないものです。これを書かないとprintfが使えないのです。なんでこんなことになっているのかについて、詳しいことはやはりもう少しあとで説明することにします。

以上が今回書いたソースコードの簡単な説明です。ちゃんとした説明になってない気がしますが、今の段階からすべてを説明しようとするとおそらく頭がこんがらがるので、ある程度は後回しにすることにしました。おいおいすべての謎は解けます。

ソースコードを書くときに注意したいこと

ソースコードを書くときにいくらか気をつけておきたいことがあります。それはあとで読み返したときにちゃんと分かるように書くということです。

ソースコードというのは不思議なもので、たとえ自分が書いたものだとしても何ヶ月もあとに読み返すと何を書いているのかさっぱりだったりします。また人と共同でプログラミングをするときには、他の人にも読みやすいソースコードを書かないと思わぬトラブルのもとになります。
まずCでは単語や記号の間であればどれだけ空白や改行をいれてもいいことになっています。逆に言うと全く改行や空白を入れなくても問題はありません。例えば

   1 #include <stdio.h>
   2 int main (void){printf("Hello World\n");return 0;}

こんなふうに書いても動きます。でもこんな書き方をすれば、いずれ長いソースコードになったときにおそらく読む気がしないでしょう。そこで適度に改行や空白を入れて読みやすくしておくことが大事です。基本的に{}の中は1段下げる適度に空行をつくるなどが重要だと言えます。

alstamber/Clanguage/HelloWorld (last edited 2011-10-07 11:41:45 by alstamber)