例題プログラムの解説 Edit

1PROCEDURE TEST;プログラムの宣言をしています。
「TEST」という名前を付けていますが、識別子
ルールに従って好きな名前を付ける事ができます。
2VARメインプログラムで変数を使うために、変数宣言をしています。
宣言した次の行から、変数と型を列記しています。
このプログラムでは全部で5つの変数を使っています。
3  index:INTEGER;最初の変数は「index」と名付けました。
この変数はVectorworksの色番号を格納するために使います。
色番号は0〜255迄の値なのでINTEGER型の変数として宣言しています。
4  red,green,blue:LONGINT;次はred,Green,blueという名前の変数をLONGINT型の変数として宣言しています。
red,Green,blueにはそれぞれ赤、緑、青の色成分が入ります。
値は0から65535までの値が入るのでLONGINT型で宣言しています。
INTEGER型では-32768〜32767迄の範囲しか扱えないからです。
5  radius:REAL;最後の変数はradiusです。
この変数は円の半径を格納するためのものです。
円の半径は実数として扱いたいのでREAL型の変数として宣言しています。
6BEGINBEGIN文により、メインプログラムが始まります。
コマンドパレット上のコマンドをダブルクリックするとまずこの行から実行されます。
7  radius:=100;変数radiusに「100」を格納します。
radiusは円の半径なので最初に描かれる円の半径を100mmにセットしています。
これをプログラミング用語で「変数を初期化する」と言います。
変数は最初にどんな値が入っているかわかりません。
「0」が必ずはいっている保証もありません。
「0」から始まるプログラムでも、初期化を忘れないで下さい。
8  FOR index:=1 TO 10 DO;FORループの始まりです。
indexの値は1から始まり10になるまで9行目〜14行目の間をループします。
一回ループするごとにindexの値は1ずつ増えます。
9  BEGINループする文が複数行ある場合はFORループ文に続く文を
BEGINとENDでくくります。
10   ColorIndexToRGB(index,red,green,blue);手続きColorIndexToRGBを呼び出しています。これが組み込み手続きです。
VectorScriptが持っているサブルーチンと考えてよいでしょう。
手続きColorIndexToRGBはカラーパレットの色番号をパラメータとして与えると
その番号が示す色の成分(赤、緑、青)を0から65535までの値を返します。
11   FillBack(red,green,blue);手続きFillBackは以降の行で描かれる図形の面の色を
パラメータで与えたRGB値で設定します。
この行では変数red,green,blueをパラメータとして与え色を設定しています。
12   Oval(-radius,radius,radius,-radius);手続きOvalはパラメータで指定した座標に円を作成します。
手続きOvalのパラメータは左上のX座標、左上のY座標、右下のX座標、右下のY座標の順番で与えます。
ここでは半径(radius)をパラメータとして与えています。
VectorScriptで扱うXY座標は下図のように原点を中心として右上が+、左下が-の値になります。
13   radius:=radius-10;変数radiusの値を10減らします。
radiusは円の半径なので次に作図する円の半径を10mm小さくしています。
14  END;FORループのBEGIN文に対するEND文です。
ループ中はカウンタ(変数index)の値が最大値(10)を超えていないかを判定し
超えていなければ9行目に戻ります。
15  DSelectAll;手続きDSelectAllは全ての図形を選択解除にします。
FORループの中で作図した円は全て選択されているので、それらを解除しています。
16END;メインプログラムのBEGINに対するENDです。
17Run(TEST);手続きRunを使ってプログラムを実行しています。
パラメータにはプログラム名を与えます。
PROCEDURE TEST;
 VAR
  index:INTEGER;
  red,green,blue:LONGINT;
  radius:REAL;
 BEGIN
  radius:=100;
  FOR index:=1 TO 10 DO;
  BEGIN
   ColorIndexToRGB(index,red,green,blue);
   FillBack(red,green,blue);
   Oval(-radius,radius,radius,-radius);
   radius:=radius-10;
  END;
  DSelectAll;
 END;
Run(TEST);

リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS