文字と記号と変数と

 もうちょっと初歩の部分に付き合ってくださいね。

どんな文字が使えるの?
 プログラミングでは、基本的にアルファベットと数字と記号を使います。ひらがな、カタカナ(半角含む)、漢字、特殊記号(!とか)は「表示するとき」以外御法度ということを憶えておいてください(場合によっては「表示するときもダメ」の場合もあります)。これらのいわゆる「全角文字(2バイト文字)」は、プログラミングの生まれたアメリカでは使われていないということです。注意しましょう(ただ、一応使えることは使えるらしいのですが、でも使わない方がいいです)。
 あ、でも確か「日本語を使うプログラミング言語」っていうのがどっかにあったと思います。どうしてもって人は探してみましょう。

単語と記号
 プログラミングでは、様々な単語を使用します。単語には初めから決まっているものと自分で決めるものとのふたつがあります。どちらも記号は使えません。ってゆーか、記号があれば単語の終わりと考える方がいいかもしれません。また、スペースも同じく単語の区切りと考える方がいいでしょう。
 大文字と小文字は、区別する言語としない言語があります。C、C++系は区別します。他は区別しないものが多いようです。ちなみに区別しない言語でも、必ず統一しましょう。
 単語には数字も使うことができますが、先頭に数字が来ている場合はダメです。もちろん数字だけの単語もダメ。数字も、ちょっと違う存在なのです。
 なぜなのでしょう?

コンピューターはでっかい計算機
 ずっと昔、コンピューターは計算をするのが目的でした。ボールを斜めに投げたらどのくらい飛ぶか。等速度直線運動と重力による等加速度運動を使った数式で簡単に出ます。なら、もっと遠く高く飛ばすときにはどうするか。空気の抵抗、重力、高低差。間にある山を越えるにはどうすればいいか、相手よりも速く飛ばすにはどうすればいいか、相手の届かないところから届かせるにはどうすればいいか。そういう計算を高速にする必要があったのです。
 もちろん、今も。
 コンピューターの主目的が計算なのは今も昔も変わりません。例えば画像にアンシャープマスクを掛ける時には各ピクセルのRGBから結果となるピクセルのRGBを計算して出力します。文字列の検索、ウィンドウの位置決め、波長の重ね合わせ、そこかしこに計算があります。

 で、そういういわゆる「計算機」なコンピューターなので、「数字」はとても重要な存在です。というわけで、数字は判りやすく、というわけです。

初めから決まっている単語、予約語
 プログラムの中ではいろんな事をしたくなります。例えば他の部分に移動したくなったり、画面に文字を表示したくなったり、アプリケーションを終了したくなったり、です。そういうことをしたい「命令」、それが予約語です。
 初めから決められているこれらの単語を使うことで、アプリケーションに様々な機能を付加させることができます。これらの予約語は必ず本などに書かれているので、解らないものがあったら調べてみましょう。なかったら、作られた単語だという事です。ただし、すでに作られた単語は予約語のようなものということも覚えておきましょう。まぁ、頭の片隅に入れておいてください。

 予約語には、まずifとかforといったほとんどすべての言語が持っているものがあります。そして、それ以外のものは言語ごとにまったく違うと言っても過言ではないでしょう。
 例えば「文字を画面に書きたい!!」、ただこれだけのことなんですけど……もうすべての言語でまったく違います。鬼のように違います。似てるとかそんな次元じゃない場合もあります。
 これはとても重要なことです。つまり、ここで教えるのは前者であり、後者は皆さんが自分で調べる必要があるということです。そういう部分を期待しているのであれば、この講座は必要ないでしょう。また、こういった「何かをする機能」を行う単語は無数に存在して、しかも増え続けています。それを調べて使うのが、プログラマーの仕事だと言っても過言ではないでしょう。

自分で作る単語、変数と関数
 さきほどコンピューターは計算機だと説明しました。でも、実際に自分で数字を打ち込む機会はそれほどないでしょう。では、何を計算しているのでしょうか。
 そこで必要になってくるのが変数です。計算機のM+のようなもので、変数には数字が格納され、保存されます。また、数字に名を変えた文字列とかその他諸々とか、とにかくいろんなものが入ります。この変数の名前は自分で決めます。これが、自分で作る単語のひとつです。

 もうひとつ、自分で作る単語には関数というものがあります。関数については後ほど説明しますが、簡単に言うと「自分で作る機能」といったところでしょうか。「これこれこういうことをする」という機能をパッケージ化しておいて、あとでこの単語ひとつ呼び出すだけで機能を実行させる、そういうものだと考えればいいでしょう。
 ちなみに、先ほど出てきた「予約語」、その「言語ごとに大きく違う」ののほとんどはこの「関数」だということも憶えておいてください。どっかの誰かがテキトーに作っちゃったからこんななったんですね。

型と代入
 ここからは、変数について見ていきましょう。
 変数は入れ物ですが、言語によっては何を入れるのか決める必要があります
 なぜかというと、コンピューターから見れば、どんな中身でも単純な数字にしか見えないからです。だから、あらかじめ教えてもらえると解りやすいわけです。また、変数は実際には「メモリ」というコンピューターの中の部分に書き込まれますが、その中の使う部分を最小限に抑えるという意味もあります。それに、使う変数を間違えないという意味もあります。何でも渡せてしまうと間違った計算結果が出てしまう可能性があるわけです。
 型が細かく存在するのはC言語系、Pascal系、JAVAです。これらはかなり厳しくチェックされます。
 でも、Basic系やJAVAスクリプトなど、この部分を全部自動的に行ってくれるものもあります。どっちがいいのかというのは比較的難しい問題ですが、実はどっちの機能も持っている言語もあったりするので、それほど難しく考える必要はないでしょう。

 言語によっての違いが少ないのが、これらの変数に値を入れる方法です。これを代入と呼びます。この言葉の英訳はsubstitutionと言って、「代わり」とか「代用品」とかいう意味です。変数を「数字の代わりのもの」と捉えてそれに値を入れる、そんな風に解釈して翻訳したのかもしれません。
 言語によって少し違いますが、基本的には次のようにして代入を行います。

	a = 3
	

 そう、重要なのは右の値を左の変数へということです。これで、aの中にはという値が入り、これ以降3として振る舞います。
 なんで右から左なのか、というのはおそらく数学的な部分からでしょう。y=2x+3、直線を表す方程式です。この場合、xの中身を変更することでyの値が変化していく、と解釈するでしょう。こういった慣例が、言語にも息づいているというわけです。

 文字列を入れる場合には、次のようにします。

	b = "あうあう"
	

 このようにダブルクォーテーション(時にはシングルクォーテーション)で、入れたい文字列を囲みます。これは、数字と同じように代入していると、入れたい文字列の中に数字が入っていた場合に困っちゃうからです。それに、変数から変数にも代入できるので、変数か文字列か判らなくなってしまいます。そういった弊害を防ぐために「これは文字列ですよ」っていうことを示しているわけです。
 C言語は、この文字列の操作が極端に難しかったりします。でもそれ以外の言語は簡単に扱えます。C++言語でも基本的に同じですが、「クラス」と呼ばれる特殊な変数を使うことで簡単に扱うことができます。

 今ちょっと書いたように、変数から変数へも移せます。

	c = a
	

 右から左へ、ということは忘れないようにしましょう。これを間違えるととんでもないことになりますから。
 それと、変数同士の代入時には、「型」が合っている必要があります。時には「ほとんど同じ」なのに問題が発生したりするときもあります。そういうときにはめんどくさくても型を一致させるようにしましょう。

 そして重要なこと。
 C言語系など、言語によっては出来立ての空の変数の中に何が入っているのか判らないものがあります。一見、作ったばかりの変数にはゼロとか入っていそうですが、必ずしもそうではないということを憶えておいてください。そういう意味で、変数は「箱」というイメージよりは「部屋」の方がいいかもしれません。借りたときには何が入っているか見当も付きません。で、使う時には自分で模様替えする必要がある、そんな感じです。

計算しよう!
 変数のことが解ったら、計算してみましょう。例えば、2と3を足したいときには

	a = 2 + 3
	

 こんな感じで大丈夫です。結果を変数に入れる場合には、必ず変数は左側、ということを忘れずに。これで、aにはが入りました。
 こういった計算式は普通の数学、いや算数と同じです。違う部分としては×*÷/という部分です。その他、細かい部分で違っていたりします。
 また、この辺にも言語ごとの違いがあります。例えば「わり算の余りを求めたい」という機能は言語ごとに大きく違います。C言語系、JAVA系%(パーセント)/の代わりに使うことで求められます。が、言語によっては予約語を使う必要があります。Pascal系では同じく代わりにmodという単語を使用します。これらの違いについても注意してください。

スペース、改行、コメント
 たいがいの言語は、スペースを「何の意味のない記号」として置き換えます。単語と単語の間に入っていればふたつの単語を分ける意味を持ちますし、単語と記号の間に入っていれば、単に見やすくするための意味だけになります。
 行頭に入れてあるのはタブです。これもたいがいはスペースと同じ機能を持ちます。タブは行を揃えてプログラムを見やすくします。特に、のちほど紹介する「ネスト」という部分に大きく役立ってきます。

 改行は言語によって大きく分かれます。ある言語は行うことの単位としての機能を持ち、またある言語は単に見やすくするためという機能を持ち、また両方の部分がある言語もあります。例えば、

	a = 2 + 3
	b = 4 + 5
	

 と書かれている場合、C言語系、Pascal系、JAVAだとa = 2 + 3 b = 4 + 5と書かれているのと同じ意味として捉えられてしまいます。そういう言語は区切りとなる記号が存在します。例えばC言語で

	a = 2 + 3; b = 4 + 5;
	

 と書かれていれば、上のコードと同じ意味を持ちます。この違いは結構重要なので注意してください。

 最後にコメントアウトについて。プログラムを書いていると、「この変数はこういう意味」とか書きたくなります。そういうときに必要なのはコメントアウトです。
 コメントアウトするための記号は言語によってこれまた違います。BASIC系は'(アポストロフィ)から改行まで、Pascal系は{から}まで、C言語系は/*から*/まで、C++言語やJAVA系は//から改行までとC言語系と同じものがコメントとして見なされます。
 コメントは非常に重要です。まめに書いておけば、あとできっと役に立つでしょう。

見やすく色を変えましょう
 さて、ここでちょっとまとめてみましょう。
 プログラムを構成するものには単語、数字、記号があります。これらを組み合わせて計算を行うわけですね。
 単語には最初からあるものと自分で作るものとがあります。最初からあるものには、どの言語にも共通するものと全然違うものとがあって、特に「何かをする機能」を意味する単語に違うものが多かったりします。
 自分で作るものには変数と関数があります。関数はのちほど。変数は値を入れておく領域で、右の数字を左の変数に入れると、その変数は数字の代わりになります。
 で、この変数と数字、記号を使うことで計算ができる、というわけです。計算は行ごとか、区切りを意味する記号ごとに行われます。
 で、この区切りが上から下へと実行されていくわけです。

 これらの構成要素はそのままだとちょっと見にくいでしょう。そう考える人は多いらしく、エディタの中にはそれぞれに違う色を付ける機能があるものもあります。例えば記号は青、数字は赤、コメントアウトは紫、といった感じです。
 この機能は、本当にとても見やすくなるのでぜひ使いましょう。また逆に、まだ良く理解できてない場合には、この機能を使って違いを比べてみるのもいいんじゃないでしょうか。

(C)KAB-studio 1998 ALL RIGHTS RESERVED.