型を指定した変数名を準備する構文は、GBASICでは二段階で宣言します。まず、変数名の英字の頭文字を何の型にするか、をDEF***文で定義します(第2章の表2.1を見て下さい)。コマンドのDEFの部分はdefinitionの意味であって、インタプリタ側で決めた定義をユーザが変更できます。単純な変数は、この定義文以降、変数が最初に使われたときに、頭文字を判別して、宣言文無しにその型の変数としてメモリに登録されます。配列の場合には配列の寸法をDIM文で宣言します(ちなみに、大きな寸法の配列を削除して、メモリ領域を別の変数領域用に解放するに目的に、ERASEコマンドが用意してあります)。点のデータをはじめ、図形要素のデータ型は複数の実数の組で約束しますので、その中身は、型に固有する個数分の実数配列と同じです。変数は代入文の右辺値にも使います。変数が宣言された直後であっても、データ構造に矛盾のない初期値が入っていなければなりません。一般的なプログラミング言語では、変数の宣言は、その変数を保存するメモリ領域を予約するだけのことがあり、中身には以前使ったデータがゴミとして残っていることがあります。整数型・実数型の変数を、初期値0に設定してくれるプログラミング言語もあります。幾何の図形要素の場合、データ成分をすべて0とすることができるのは点の型の場合だけですので、GBASICのインタプリタ側で初期値を矛盾の無いように設定します(表3.1)。なお、代入文の左辺値が計算される場合も、個別のデータ数値の間で、標準のデータ構造に矛盾がないように調整を行います。
表3.1 図形要素の変数型の初期値
型番号 |
型 の 名 前 |
寸 法 |
初期値とその内容、条件 |
1 |
整数 |
1 |
0 |
2 |
実数 |
1 |
0 |
4 |
文字列 |
2 |
何もありません、空白文字(スペース)もありません。 |
11 |
二次元の点 |
2 |
(0, 0)、原点 |
12 |
二次元の直線 |
3 |
(0, 1, 0)、x軸を表します。(a^2 + b^2 =1 の条件) |
13 |
二次元の円 |
3 |
(0, 0, 1)、原点(0, 0)を中心とする半径 1の円 |
14 |
二次元の矩形 |
4 |
(0, 0, 1, 1)、原点(0, 0)を中心とする 2×2 の正方形 |
15 |
二次元の線分 |
4 |
(0, 0, 1, 0)、x軸上にある単位長さの線分 |
16 |
二次元の変換行列 |
6 |
(1, 0, 0, 1, 0, 0)、ワールド座標系 |
21 |
三次元の点 |
3 |
(0, 0, 0)、原点 |
22 |
三次元の直線 |
6 |
(0, 0 ,0, 1, 0, 0)、x軸、(u^2 + v^2 + w^2 =1) |
23 |
三次元の平面 |
4 |
(0, 0, 1, 0)、xy座標面、(a^2 + b^2 + c^2 =1) |
24 |
三次元の球 |
4 |
(0, 0, 0, 1)、原点を中心とする半径1の球 |
25 |
三次元の直方体 |
6 |
(0, 0, 0, 1, 1, 1)、原点を中心とする 2×2×2の立方体 |
26 |
三次元の線分 |
6 |
(0, 0, 0, 1,0, 0)、 x軸上の単位長さの線分 |
27 |
三次元の変換行列 |
12 |
(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)、ワールド座標系 |
2008.3 橋梁&都市PROJECT
|