最小単位

*この項目は少し難しいので、後回しにしても構いません。 プログラムに慣れてきたら読んでください

最小単位とはTJSが理解できる最小限の単語です。これを一般にトークンと呼びます。(特に覚え無くても構いません)

プログラムを書く時には、このトークン単位で書いていく必要があります。 逆に言えば、どんなに難しいプログラムでも、分解していけば必ずトークンにたどり着きます。 例えば、最初に示したプログラム…

System.inform("Hello! TJS2!!");

これをトークン毎に分解すると以下のようになります。

System
.
inform
(
"
Hello! TJS2!!
"
)
;
				

トークンはシステムの予約語変数名関数名などの文字、 記号(「セミコロン;」や「ドット.」など)、数字(0,1,2,3...)などに分けられます。

これを実行すると、やはり「Hello! TJS2!!」と表示されます。 つまり、TJSプログラムとして正しいものです。

このようにトークンはどのように書いても問題ありません。 途中で改行しようが、間にいくつ空白を書こうが全く問題無いのです。 ただし、半角空白に限ります。全角空白は文字であり空白ではありません!

ただし、以下のような決まりがあります。

トークンを分解してはならない

トークンは、その文字だけで意味のある最小限の単語ですから、 それ以上に分解(間に空白文字を入れる等)してはいけません。

例えば「System」を「Sys tem」と書いてはいけません。 このように書くと「Sys」と「tem」という単語になり、意味が変わります。

// (1)ダメな例。Sysとtemの間に空白がある。
Sys tem.inform("Hello! TJS2!!");

// (2)ダメな例。改行してもダメ。
Sys
tem.inform("Hello! TJS2!!");
					

トークン同士をくっ付けて書いてはならない

くどいようですが、トークンはその文字だけで意味のある最小限の単語です。ですから、トークン同士を付けて書くのもいけません。

例えば、変数の代入に使うvarは、システムの予約語なのでトークンです。 これは次のように書いてはいけません。

varname="田中";……「varname」という単語に変わるのでNG

ただし、記号に限定すれば、他のトークンとくっ付けて書いても大丈夫です。 記号というのは、平たく言えば英字では無いトークンです。(随分くだけた言い方ですが…) 上にある「 " 」「 ( 」「 ) 」「 ; 」「 . 」「 = 」が記号です。

なので、「"」や「;」をくっ付けて

var name="田中";

と書くのは良いのです。

ここで紹介している文書は基本的な事に限定しています。 詳しくはTJS2リファレンス内、トークンの項目をご覧になってください。

連接

TJSでは命令文が書かれた順番に処理を行う。 優先して処理をさせたい文は、より上に書けば良い事になります。

文1…
文2…
文3…
:
			

このプログラムは文1、文2、文3の順番に処理を行います。これを連接と呼びます。

一行に一文が基本

TJSはトークンの項目で示したとおり、 とても自由な書式で書く事が出来ますが、好き放題書いていては見づらくなります。 見やすいプログラムを書く為には一行に一文だけを書きます。 「文」とは一つの処理の単位です。例えば、最初に記したプログラム内……

System.inform("Hello! TJS2!!");

これは、文字を表示するという処理なので「文」です。 文の最後には必ず「;セミコロン」を書きます。 そして今度は「Hello! Program!」というメッセージも表示したいとします。

System.inform("Hello! TJS2!!");System.inform("Hello! Program!");

一行で書いた例です。次は二行に渡って書く場合です。

System.inform("Hello! TJS2!!");

System.inform("Hello! Program!");

どうでしょうか。複数の行に書くほうが読みやすいですよね。 こんな簡単な事でも読みやすいプログラムにグッと近づくので、見逃せない事です。

ブロック単位で字下げ

プログラミングを行う際は、出来る限り見やすく記述することが望ましいです。 読みやすい、というより美しいプログラム作りが大切になってきます。 いくら一行に一文だけを書いたとしても、ズラズラと単に書いていったのでは、 やはり見づらいプログラムになってしまいます。

では、どうすればより美しいプログラムになるのか? その答えの一つがインデント(字下げ)です。 インデントとは、文の最初の何文字分の「半角空白」または「タブ文字」を入れる事です。 プログラムの習慣として、4文字分の空白を入れる事になっています。

//インデントを行う例
function DocWrite()
{
    // ここはDocWrite()のブロック
    System.inform("インデントのテスト");
    while(1)
    {
        // ここはwhileのブロック
        System.inform("インデントのテスト。while");
        break;
    }
}
DocWrite();

//インデントを行わない例
function DocWrite()
{
System.inform("インデントを行わない。");
while(1)
{
System.inform("インデントを行わない。while");
break;
}
}
DocWrite();
				

各文の意味は改めて説明しますが、インデントを行う例も行わない例も同じ動作をします。 どちらが読みやすいでしょうか?前者のインデントを行う例のほうが読みやすくは無いですか?

{ } で囲まれた部分をブロックと呼びます。 プログラムでは「ブロック内はインデントを行う」のが習慣です。 インデントは他の言語に習って「4文字ずつ字下げ」するとよいでしょう。

この時、単純に半角で4文字分のスペースを空けてもいいですし、 お使いのエディタの設定でタブの文字数を変えられるのなら、4文字に設定してタブを使うのも良いですね。

[!注意!]

空白は「半角」で入れてください。 全角で空白を入れると、「文字」とされますのでエラーになってしまいます。

コメントの書き方

コメントはプログラム中に書く事が出来る備考です。 大規模なプログラムを書くようになると、自分で書いたプログラムでさえ、 何をしているのか?が一目で分からなくなる事もあります。(あまり多いと困りますが……)

そんな時の為に、所々でコメントを残す事で、改めてプログラムを読み解くのに役に立ちます。 //が先頭にある文、または/**/で囲まれた文は、TJSでは無視されます。

//この「//」はコメントです。実行されません。
//「//」の始まりから行末までがコメントです。
先頭に「//」が無いとエラー


/*
これはブロック単位でのコメントです。
複数の行に渡ってコメントを書くことが出来ます。
//「ブロック形式」のコメントの中に「行形式」のコメントを書けます
/*
    ブロックコメントの中にブロックのコメントも書けます。
*/
*/

				

//で始めるコメントを行形式のコメント、 /**/で囲む形式のコメントをブロック形式のコメントと呼ぶ事があります。 ブロック式のコメント内にブロック式のコメントを書く事が出来ます。

ただ、コメントも使いすぎは禁物です。 誰が見ても分かる簡単な処理に、逐一コメントを付けていたのでは無意味であり、手間になります。 更には、自然とファイルサイズも大きくなり、読み込み速度や、場合によっては実行速度も落としてしまう原因にもなりかねません。