morilib BASIC



基本

morilib BASICは行番号付きのBASICです。
プログラムは行番号から始まり、その後に文を記述します。 文はセミコロンで区切って複数記述することができます。
関数または文として予約されている字句以外は変数として使用できます。
変数の型は変数の最後に記号をつけることで指定します。型には以下のものがあります。
%数値型
!数値型
#数値型
$文字列型
morilib BASICには数値型と文字列型しかありません。 型の違う変数は名前が同じでも区別されます。 デフォルト型はDEFINT/DEFSNG/DEFDBL/DEFSTR文で指定します。
配列は変数の後に添字を括弧付き(A(1, 2, 3)のように)で記述することで使用することができます。 配列の次元と添字の上限はDIM文で定義します。


morilib BASICでは以下の式が使用可能です。 表の上にあるほど優先順位は高いです。
演算子 結合 説明
単項- 左から右 符号を反転します
* / MOD 左から右 乗算、除算、剰余を計算します
+ - 左から右 加算、減算を計算します: 文字列型のときは+は文字列を連結します
= 左から右 値が等しいときに真(-1)、そうでないときに偽(0)
>< 左から右 値が等しくないときに真(-1)、そうでないときに偽(0)
< 左から右 左の値が小さいときに真(-1)、そうでないときに偽(0)
> 左から右 左の値が大きいときに真(-1)、そうでないときに偽(0)
<= 左から右 左の値が小さいまたは等しいときに真(-1)、そうでないときに偽(0)
>= 左から右 左の値が大きいまたは等しいときに真(-1)、そうでないときに偽(0)
NOT 左から右 論理否定を取ります
AND 左から右 論理積: 2つの値が真のときに真(-1)、そうでないときに偽(0)
OR 左から右 論理和: 2つの値が偽のときに偽(0)、そうでないときに真(1)


変数名=
変数に式の値を代入します。

PRINT
結果をテキスト画面に表示します。

IF THEN 文1 [ELSE 文2]
が真のとき文1を、そうでないとき文2を実行します。
文はセミコロンで区切り複数記述することもできます。

GOTO 行番号
行番号へ無条件分岐します。

GOSUB 行番号
行番号にあるサブルーチンへ分岐します。 RETURN文で戻ったとき次の処理を実行します。

RETURN
GOSUB文で呼び出されたサブルーチンから復帰します。

END
処理を終了します。

STOP
処理を中断します。"Continue"ボタンで復帰することができます。

FOR 変数名=式1 TO 式2 [STEP 式3] / NEXT [変数名,...]
変数名式1を代入し、NEXT文が現れたらFOR文に戻り、 変数を式3(省略時は1)増やします。
変数の値が式2を超えたらループを抜けます。
NEXT文には変数名を指定することもできます。 そのときは内側の変数名から指定します。

注意:
NEXT文の変数名を省略したときはNEXT文に最も近いFOR文に制御が移ります。 ここで、最も近いとは釣り合いを取ってくれることを意味しません。 例えば、
10 FOR I=1 TO 4
20   FOR J=1 TO 4
30     PRINT J
40     GOTO 60
50   NEXT
60 NEXT
を実行したときにはテキストには
1
2
3
4
と表示されます。 これはNEXTを実行したとき最も近い20行目のFOR文に制御が移ったためです。
期待通りの結果を得るにはNEXT文の変数名は必ず指定することを推奨します。 上記の例は、
10 FOR I=1 TO 4
20   FOR J=1 TO 4
30     PRINT J
40     GOTO 60
50   NEXT J
60 NEXT I
と記述することが望ましいです。

REM コメント / 'コメント
コメントを記述します。コメントは文の終わりにも記述できます。

DEFINT 変数指定[,変数指定]
DEFSNG 変数指定[,変数指定]
DEFDBL 変数指定[,変数指定]
DEFSTR 変数指定[,変数指定]
それぞれ型のデフォルトを%,!,#,$にします。
変数指定は変数の頭文字を指定します。 A-Cの様にして頭文字を範囲で指定することもできます。

COLOR 色コード,背景色コード
デフォルトで指定される色を指定します。色コードは以下の通りです。
0
1
2
3ピンク
4
5水色
6黄色
7

LINE (X1,Y1)-(X2,Y2)[,色コード][,B|BF]
グラフィック画面に線を記述します。
色コードを省略したときにはCOLOR文で指定した色が使用されます。
Bオプションを指定したときは長方形を記述します。 BFオプションを指定したときは長方形を記述し塗りつぶします。

PSET (X1,Y1)[,色コード]
グラフィック画面に点を記述します。
色コードを省略したときにはCOLOR文で指定した色が使用されます。

CIRCLE (X,Y),半径[,開始角度][,終了角度]
グラフィック画面に円または円弧を記述します。
色コードを省略したときにはCOLOR文で指定した色が使用されます。
開始角度、終了角度は円弧の開始・終了角度をラジアンで指定します。 右が0、上がπ/2、左がπとなります。

LOCATE [X][,Y]
テキスト画面の描画する位置を指定します。
Xが省略されたときは0、Yが省略されたときは現在のYを使用します。

INPUT ["prompt";][変数,...]
変数をテキストから入力して変数に代入します。
複数の変数を入力するときはコロンで区切ります。 入力された変数の数と文で指定された変数の数が一致しないとき、 変数の型が一致しないときは再度入力を要求します。
文字列型の変数には"..."で区切ることでコロンや空白を入力できます。


関数

組み込みの関数です。関数は式の内部で使用できます。 引数を伴わない関数は関数名だけで呼び出すことができます。
ABS()
の絶対値を返します。

SGN()
が正のとき1、負のとき-1、0のとき0を返します。

CINT()
を四捨五入した結果を返します。

INT()
を超えない最大の整数を返します。

FIX()
の小数部を切り捨てます。

RND
0以上1未満の乱数を取得します。

SIN() / COS() / TAN() / ATN()
の正弦、余弦、正接、逆正接を返します。
ATNの戻り値はラジアン単位です。

SQR()
の平方根を返します。

EXP()
exp を返します。

LOG()
の自然対数を返します。

LEN(文字列)
文字列の長さを返します。

MID$(文字列, 開始位置, 長さ)
文字列の開始位置(1から開始)から長さ分の部分文字列を返します。

LEFT$(文字列, 長さ)
文字列の左から長さ分の部分文字列を返します。

RIGHT$(文字列, 長さ)
文字列の右から長さ分の部分文字列を返します。

INSTR(文字列, 検索文字列)
文字列検索文字列があるかを調べます。
あれば位置(1から開始)、なければ0を返します。

SPACE$(長さ)
長さ分の空白からなる文字列を返します。

STRING$(反復回数, 文字列または文字コード)
反復回数分繰り返された文字列または文字コードからなる文字列を返します。

STR$(数値)
数値を文字列に変換します。

HEX$(数値)
数値を16進数の文字列に変換します。

OCT$(数値)
数値を8進数の文字列に変換します。

VAL(文字列)
文字列を数値に変換します。
先頭に&Hがついたときは16進数、&Oがついたときは8進数と見なします。

ASC(文字列)
文字列の1文字目を文字コードに変換します。

CHR$(文字コード)
文字コードを文字列に変換します。

INKEY$ / INKEY
キーボードから文字を1文字入力し、文字列または文字コードを返します。
キーボードからの入力がないときは空文字列または0を返します。


Yuichiro Moriguchi
yuichiro-moriguchi@nifty.com