Hatena::ブログ(Diary)

chiguriの生態(嘘や誇張アリ)

2009-06-17

C言語超入門(?)第一回

| 00:17

今日っていう日はあと一時間しかないのだが・・・

まあしかし、微妙に楽しみにしていそうな方が一人いらっしゃるので、なんとか書く。


さて、このC言語の講座、コンセプトは『プログラムをこれを参考に書くな。本を読んで書け。』という形である。

つまりは、「C言語の内容は教えるけど、詳細は書かないし、間違ってない範囲で大雑把にするので、プログラムは書きにくいよ。」ということである。

これに同意できない方は他の人の解説を見に行くか、本を買うことをお勧めする。


では始める。

C言語・・・というかプログラミング言語が何で必要か

おいおい、そんなところからかよ、という方はとりあえず下に下に読み飛ばして、アルファベットだらけになるところまで進むこと。

プログラミング言語とは、プログラムを書くための言語である。が、これはそのまんまなので説明とは言わない。

どうしてプログラミング言語を使うかというと、なにをしなければならないか、という指示が誰にとってもはっきりしているからである。

機械が日本語や英語を理解できないから、という理由を書く人がよくいるが、それは半分正解で半分間違いである。それを言ったらC言語も機械は理解できない。

誰が見てもどうするかがはっきり決まっているからプログラミング言語を使うのだ*1

だから当然だが、プログラミング言語は魔法ではない。あなたの意思を汲み取ってはくれない。あなたの意思ははっきりしていないから。

プログラミング言語ははさみと同じ、ただの道具である。

プログラミング言語を覚えるということは、道具の使い方を覚えるようなものである。


何もしないC言語プログラム

では、この講座で最初のプログラムを提示しよう。これはC言語で書かれた、何もしないプログラムである。

int main( ) { return 0; }

以上。一行である。

さて、このプログラムを解説する前に、少し考えよう。

私はこのプログラムを、「何もしないプログラム」といった。

しかし、「何もしないことを指示する」のは少し奇妙だ。

だから、このプログラムのやっていることをもう少し正確に説明すると、「プログラムが動き始めたら、終了してくれ」というものになる。

「動け」という指示が来たら何をするか、を書くのがプログラミングである。だから、「動き始めたら」を最初に書かなければいけない。


関数というもの

C言語では、mainという名前の関数から動作が始まる。

おいおい、関数ってなに、といわれそうだ。今まじめに説明すると困るな・・・後の後に控えているし、その上今回の記述量が倍以上に膨れ上がる。

OK、じゃあ今は関数はこんな形だと思ってほしい。

関数の名前(2) { 3 }

上に書いたmain関数だと、1はint、2は空っぽ、3はreturn 0;、ということになる。

1や2についてはここでは説明しない。

これからは3について説明することにする。

C言語には、「この関数を実行しろ」という指示がある。

その指示で実行されるのが3に書かれた内容である、というわけだ。

つまり、関数の実行=3に書かれた指示の実行、ということになる。だから、3のことを関数本体と呼ぶ。

最初のmain関数の本体はreturn 0;である。


returnという指示

returnというのは、「ここで関数を終わるよ。」という指示である。

C言語プログラムでは、main関数が終わったらプログラムが終了する。

だから、main関数の中でreturnという指示が出たら、プログラムが終了する。


では残りについて。

0は0。数字のゼロ。これは別に特別でもなんでもなく、ただのゼロ。

;はセミコロンという記号で、「一つの指示の終わり」を表す。

ここでは、return 0という指示が終了したことを表している。


returnは終了をする指示、しかしなぜか0がくっついている。

関数というのは、「実行の指示」で動き始めて、実行が終わると「実行の指示」を「何か」と置き換えるものである。

その置き換える「何か」が0、というのがreturn 0という指示である。


今日のまとめ

これで一通りの説明が終わったわけだが・・・最後にまとめよう。

ただし、今までの説明で「これ以降説明しなおすからまだいいか」という内容はここでは省いている。

  1. C言語はmainという名前の関数から始まる。
  2. returnという指示で関数を終了する。
  3. main関数が終了したらプログラムは終了する。

以上。


最後に一言

書いていて思ったこと。

ダメだ、説明する内容増やさないとC言語の解説にならない気がする・・・

*1:逆に言えば、そこがはっきりしていればどんな言語であってもかまわない。もちろん、いろいろ差は出るから考えなければいけないことは多いのだが。

ひよこひよこ 2009/06/18 18:32 続き、楽しみにしてます♪

Connection: close