ユーザ用ツール


reference:変数や配列の定義_操作に関する命令

変数や配列の定義、操作に関する命令

VAR 変数[=式][,変数[=式]…]
DIM 変数[=式][,変数[=式]…]

変数を明示的に定義する

・VARとDIMはどちらを使ってもよい。
・カンマで区切る事で複数の変数を同時に定義できる。

引数

変数名

・変数名には英数字とアンダースコア(_)が使用できる。
・先頭に数字は使用できない。

・式の結果が変数の初期値となる。
・式が省略された場合、変数名末尾の型記号(%/#/$)により%:整数型ゼロ、#:実数型ゼロ、$:空文字列が初期値としてセットされる。
・式が省略され、変数名に型記号がついていない場合はデフォルト数値型のゼロが初期値としてセットされる。

VAR A=0,B,C
DIM B$

VAR 配列変数名[[要素数[,要素数…]]]
DIM 配列変数名[[要素数[,要素数…]]]

配列を作成し、変数にセットする

・VARとDIMはどちらを使ってもよい。

引数

配列変数名

・変数名末尾に型記号(%/#/$)を付けると、それぞれ整数配列、実数配列、文字列配列を作成する。
・型記号を省略した場合はデフォルト数値型配列を作成する。

要素数

・確保する配列の要素数を[]でかこって指定する。
・要素数はカンマ(,)で区切る事で4次元配列まで作成できる。
・要素数を省略すると、要素数ゼロの1次元配列を作成する。

VAR ATR[4]
VAR DX[5],DY[5],DZ[5]
DIM POS$[10,5]
DIM IMAGE[]

VAR 配列変数名[[要素数[,要素数…]]]=[値1,値2,…]
DIM 配列変数名[[要素数[,要素数…]]]=[値1,値2,…]

配列を作成し、要素の値をあらかじめ設定した上で変数にセットする

・VARとDIMはどちらを使ってもよい。

引数

配列変数名

・変数名末尾に型記号(%/#/$)を付けると、それぞれ整数配列、実数配列、文字列配列を作成する。
・型記号を省略した場合はデフォルト数値型配列を作成する。

要素数

確保する配列の要素数を[]でかこって指定する
・要素数はカンマ(,)で区切る事で4次元配列まで作成できる。
・要素数を省略すると、要素数ゼロの1次元配列を作成する。

配列要素の初期値として設定する値のリスト
・要素数を省略した場合、値の数が要素数の1次元配列となる。

VAR ATR[4]=[1,2,3,4]
DIM POS$[10,5]=["X","Y","Z","W"]
DIM IMAGE[]=[0,1,2,3,4]

変数 = 式

変数に式の計算結果を代入する

・OPTION STRICTが定義されていない場合は未定義変数に代入しようとすると自動的に変数を定義する。
・OPTION STRICTが定義されている場合は未定義変数に代入しようとするとUndefined Variableエラーが発生する。

A=10
B=A*6
C[4]=A+B

SWAP 変数1,変数2

2つの変数に入っている値を交換する

引数

変数1,変数2

値を交換する2つの変数

SWAP A,B
SWAP A[5],B[2]

INC 変数[,式]

変数に入っている値に式の計算結果を加算する

引数

変数

操作する変数

加算する値
・省略時には1を指定した事になる。

INC X
INC X,3

DEC 変数[,式]

変数に入っている値から式の計算結果を引く

引数

変数

減算する変数

減算する値
・省略時には1を指定した事になる。

DEC X
DEC X,3

COPY(コピー元配列[,コピー元オフセット[,コピー要素数]])

配列をコピーする

引数

コピー元配列

コピー元の配列
・1次元配列のみ指定できる。

コピー元オフセット

コピー元の先頭要素番号
・省略時は0を指定した事になる。

コピー要素数

コピーする要素数
・省略時はコピー元配列の要素数からコピー元オフセットを引いた数を指定した事になる。

返値

コピー結果の配列
・文字列配列の場合、各要素の文字列もコピーされる。

COPY(コピー元文字列[,コピー元オフセット[,コピー文字数]])

文字列をコピーする

引数

コピー元文字列

コピー元の文字列

コピー元オフセット

コピー元の先頭位置
・省略時は0を指定した事になる。

コピー文字数

コピーする文字数
・省略時はコピー元文字列の文字数からコピー元オフセットを引いた数を指定した事になる。

返値

コピー結果の文字列

COPY コピー先配列[,コピー先オフセット],コピー元配列[[,コピー元オフセット],コピー要素数]

配列の内容を他の配列にコピーする

・1次元配列に限り、コピー先配列がコピー元配列より要素数が足りない場合自動拡張する。
・コピー元、コピー先とも配列の次元は無視される。

引数

コピー先配列

コピー先の配列

コピー先オフセット

コピー先の先頭要素番号
・省略時は0を指定した事になる。

コピー元配列

コピー元の配列

コピー元オフセット

コピー元の先頭要素番号
・省略時は0を指定した事になる。

コピー要素数

コピーする要素数
・省略時はコピー元配列の要素数からコピー元オフセットを引いた数を指定した事になる。

DIM SRC[10],DST[10]
COPY DST,SRC

COPY コピー先配列[,コピー先オフセット],ラベル文字列[,コピーデータ数]

DATA列を配列に読み込む

・DATA文で定義されたデータを配列に読み込む。
・配列要素数がコピーデータ数より少ない場合、1次元配列に限り、コピー先配列の要素数が足りない場合自動拡張する。

引数

コピー先配列

コピー先の配列

コピー先オフセット

コピー先の先頭要素番号
・省略時は0を指定した事になる。

ラベル文字列

読み込みたいDATA文を示すラベル名文字列
・ラベル名の後に最初に現れたDATA文から読み出しを開始する。

コピーデータ数

読み込むデータ数
・読み込めるデータ数がここで指定した値より少ない場合エラー。
・省略時はコピー先配列の要素数が指定される。

DIM DST[5]
COPY DST,"@SRC" 
@SRC
DATA 5,1,1,2,4

COPY コピー先文字列変数[,コピー先オフセット],コピー元文字列[[,コピー元オフセット],コピー文字数]

文字列の一部または全部を他の文字列変数にコピーする

引数

コピー先文字列変数

コピー先の文字列変数

コピー先オフセット

コピー先の先頭位置
・省略時は0を指定した事になる。

コピー元文字列

コピー元の文字列

コピー元オフセット

コピー元の先頭位置
・省略時は0を指定した事になる。

コピー文字数

コピーする文字数
・省略時はコピー元文字列の文字数からコピー元オフセットを引いた数を指定した事になる。

COPY A$,"12345" 

RINGCOPY コピー先配列,コピー先オフセット,コピー元配列[[,コピー元オフセット],コピー要素数]
RINGCOPY コピー先配列,コピー先オフセット,コピー元配列[[,コピー元オフセット],コピー要素数] OUT 変数

配列をリングバッファと見て、そこにデータをコピーする

・COPY命令と同じく配列間の値をコピーするが、コピー先よりもコピー元のコピー要素数が多い場合でも要素数を拡張せず、配列の先頭に折り返してデータをコピーする。
・コピー先、コピー元共に2次元配列まで指定できる。2次元配列を指定した場合、マルチチャンネルのリングバッファ(もしくはデータ)として扱う。
・コピー先、コピー元両方に2次元配列を指定した場合、双方のチャンネル数(第1次元の要素数)は同じにする必要がある。
・コピー先が2次元、コピー元が1次元配列の場合、コピー元のデータがコピー先の全チャンネルに同じようにコピーされる。
・コピー先、コピー元が同じ配列だった場合の動作は保証しない。

引数

コピー先配列

コピー先のリングバッファとして扱われる配列

コピー先オフセット

コピー先でのコピー開始位置

コピー元配列

コピー元の配列

コピー元オフセット

コピー元でのコピー開始位置
・省略時は0。

コピー要素数

コピーする要素の数
・省略時はコピー元配列の要素数。

返値

コピーしたデータの末尾位置
・リングバッファとして扱う場合、帰ってきた値が次回のコピー先オフセットとなる。

SORT [開始位置,要素数,]配列1[,配列2,…]

配列を昇順で並び替える

引数

開始位置

配列1内の並び替えを開始する位置
・省略時は0。

要素数

並び替える要素数
・省略時は配列1の要素数。

配列1

並び替える数値の入った配列

配列2

配列1の並び替え結果に連動して並び替える配列
・配列2~8は省略できる。
・配列2~8は文字列配列でも可。

DIM WORK[10]
SORT 0,10,WORK

RSORT [開始位置,要素数,]配列1[,配列2,…]

配列を降順で並び替える

引数

開始位置

配列1内の並び替え開始位置
・省略時は0。

要素数

並び替える要素数
・省略時は配列1の要素数。

配列1

並び替える数値の入った配列

配列2

配列1の並び替え結果に連動して並び替える配列
・配列2~8は省略できる。
・配列2~8は文字列配列でも可。

DIM WORK[10]
RSORT 0,10,WORK

PUSH 配列,式

配列の末尾に要素を追加する

・要素数が1つ増える。

引数

配列

要素を追加される配列

追加する要素の値

DIM WORK[10]
PUSH WORK,123

POP(配列)

配列の末尾から要素を取り出す

・要素数が1つ減る。

引数

配列

要素を取り出される配列

戻り

取り出した要素の値

DIM WORK[10]
PUSH WORK,123
A=POP(WORK)

UNSHIFT 配列,式

配列の先頭に要素を追加する

・要素数が1つ増える。

引数

配列

要素を追加される配列

追加する要素の値

DIM WORK[10]
UNSHIFT WORK,123

SHIFT(配列)

配列の先頭から要素を取り出す

・要素数が1つ減る。

引数

配列

要素を取り出される配列

DIM WORK[10]
UNSHIFT WORK,123
A=SHIFT(WORK)

FILL 配列,値[,オフセット[,要素数]]

配列内容をすべて指定値に設定する

・配列の型は、整数、実数、文字列いずれでも構わない。
・オフセットと要素数を指定すると部分的な変更も可能。

引数

配列

値を上書きする配列

数値や文字列

オフセット

値を書き込み始める位置

要素数

書き込む数

DIM WORK[10]
FILL WORK,0

TYPEOF(値)

値の型を調べる

引数

型を調べたい値

返値

値の型に応じて、次のいずれかの数値が返る。

0 デフォルト型 #T_DEFAULT
1 整数型 #T_INT
2 実数型 #T_REAL
3 文字列型 #T_STR
5 整数配列 #T_INTARRAY
6 実数配列 #T_REALARRAY
7 文字列配列 #T_STRARRAY

・デフォルト型は関数・命令コールで引数を省略した場合に設定される特殊な型。

ARRAY%(要素数[,要素数…])
ARRAY#(要素数[,要素数…])
ARRAY$(要素数[,要素数…])

配列を作成する

・VARによる変数定義時以外に配列を作成したい場合に使用する。
・ARRAY%は整数配列、ARRAY#は実数配列、ARRAY$は文字列配列を作成する。

引数

要素数 [,要素数…]

作成する配列の次元と要素数

返値

作成した配列

DIM(配列)
DIM(配列,次元)

配列の次元数や、各次元の要素数を調べる

引数

配列

調査する配列

次元

要素数を調べたい次元:0~3
・省略時は配列の次元数が返る。

返値

・次元を指定した場合は指定した次元の要素数が返る。
・次元を省略した場合は配列の次元数が返る。

DIM WORK[10,20]
? DIM(WORK)
? DIM(WORK,0)
? DIM(WORK,1)

RESIZE 配列,要素数[,要素数…]

配列のサイズを変更する

・拡張部分の要素には数値の0もしくは空文字列が入る。

引数

配列

サイズを変更する配列

要素数

サイズ変更後の要素数
・変更できるのは、配列定義の時に一番最初に書く要素数のみ。
・次元の変更はできない。

INSERT 配列,挿入位置[,要素数[,初期値]]

一次元配列に要素を挿入する

引数

配列

要素を増やす配列

挿入位置

要素を挿入する位置:0~配列要素数

要素数

挿入する要素数:正の数
・省略時は1。

初期値

挿入要素の値
・省略時は、数値配列では0、文字列配列では空文字列。

REMOVE 配列,削除位置[,要素数]

一次元配列の要素を削除する

引数

配列

要素を削除する配列

削除位置

要素を削除する位置:0~配列要素数-1

要素数

削除する要素数:正の数
・省略時は1。

FIND(配列,値)

指定した値を配列から検索して、見つかった位置を返す

引数

配列

検索対象の配列
・多次元配列も指定可能。

検索する値

返値

見つかった位置
・値が見つからなかった場合は-1が返る。

DIM A[]=[1,2,3,4,5]
?FIND(A,3)

FIND 配列,値 OUT 添字1[,添字2…]

指定した値を配列から検索して、見つかった位置を返す

引数

配列

検索対象の配列
・多次元配列も指定可能。

検索する値

返値

見つかった位置の添字
・返値の数は検索対象配列の次元数と同じでなければならない。
・値が見つからなかった場合は全ての返値に-1が返る。

DIM A$[3,3]=["1","2","3","4","5","6","7","8","9"]
FIND A$, "4" OUT Y,X
?A$[Y,X]

INSPECT 値

値の詳細情報を表示する

・型、値、配列の場合要素数と全要素の値を表示する。
・文字列・文字列変数では、文字列の長さも表示する。
・文字列の内容が長すぎる場合、後ろは省略される。
・INSPECTのかわりに??と省略可能。

INSPECT A
?? "12345"*10

reference/変数や配列の定義_操作に関する命令.txt · 最終更新: 2023/12/07 15:51 (外部編集)

ページ用ツール