# morilib Mio BASIC

- 基本
- 式
- 文
- 関数
- 戻る

## 基本

morilib Mio BASICは行番号付きのBASICです。
プログラムは行番号から始まり、その後に文を記述します。
関数または文として予約されている字句以外は変数として使用できます。
変数名として使用出来るのは英文字で始まり、英数字及びドットが続く字句です。
morilib Mio BASICには数値型しかありません。
数値には正確な数と不正確な数があります。
正確な数には

- 有理数(Mio BASICでは除算の結果は分数で表されます)
- ラジアン(有理数×π)
- 有理数×√2, 有理数×√3

が使用できます。
πはPIと記述することで表現できます。 (逆に言えば、PIという変数を使用することはできません。)
演算の結果、正確な数で表すことができない数については不正確な数として扱われます。
不正確な数は、IEEE形式の浮動小数点数です。
数の値が0でないときその値は真であるといい、0のとき偽であるといいます。

## 式

morilib BASICでは以下の式が使用可能です。 表の上にあるほど優先順位は高いです。

演算子 | 結合 | 説明
--- | --- | ---
単項- | 左から右 | 符号を反転します
^ | 右から左 | べき乗を計算します
* / | 左から右 | 乗算、除算を計算します
+ - | 左から右 | 加算、減算を計算します
= | 左から右 | 値が等しいときに真(1)、そうでないときに偽(0)
<> | 左から右 | 値が等しくないときに真(1)、そうでないときに偽(0)
< | 左から右 | 左の値が小さいときに真(1)、そうでないときに偽(0)
> | 左から右 | 左の値が大きいときに真(1)、そうでないときに偽(0)
<= | 左から右 | 左の値が小さいまたは等しいときに真(1)、そうでないときに偽(0)
>= | 左から右 | 左の値が大きいまたは等しいときに真(1)、そうでないときに偽(0)
NOT | 左から右 | 論理否定を取ります
AND | 左から右 | 論理積: 2つの値が真のときに真(1)、そうでないときに偽(0)
OR | 左から右 | 論理和: 2つの値が偽のときに偽(0)、そうでないときに真(1)

## 文

LET 変数名=式
  変数に式の値を代入します。
PRINT 式|"文字列" [;式|"文字列 ... [;]]
  式または文字列をテキスト画面に表示します。
  セミコロン(;)で続けることで式の直後に結果を表示します。
  行の最後をセミコロンにすることで改行の表示を抑制します。
IF 式 THEN 文1 [ELSE 文2]
  式が真のとき文1を、そうでないとき文2を実行します。
IF 式1 THEN
文1
...
[ELSEIF 式2 THEN
文2
...]
[ELSE
文n
...]
END IF
  式1が真のとき文1を、 そうでなく、式2が真のとき文2を、 そうでないときは文nを実行します。
  ELSEIF句はいくつあっても構いません。 ELSE句は省略可能です。
GOTO 行番号
  行番号へ無条件分岐します。
END
  プログラムの終わりを指定します。途中に記述することはできません。
FOR 変数名=式1 TO 式2 [STEP 数] / NEXT 変数名
  変数名を式1を代入し、NEXT文が現れたらFOR文に戻り、 変数を数(省略時は1)増やします。
  変数の値が式2を超えたらループを抜けます。
  NEXT文にはFOR文と釣り合いのとれた変数名を1つ指定します。 FOR文とNEXT文の釣り合いがとれていないときはエラーとなります。
INPUT [PROMPT "文字列" :][変数,...]
  変数をテキストから入力して変数に代入します。
  PROMPT句が指定されたときは入力時にその文字列が表示されます。
  複数の変数を入力するときはコロンで区切ります。
  入力された変数の数と文で指定された変数の数が一致しないとき、 変数の型が一致しないときは再度入力を要求します。

## 関数

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

INT(式)
  式を超えない最大の整数を返します。
FIX(式)
  式の小数部を切り捨てます。
SIN(式) / COS(式) / TAN(式) / ATN(式)
  式の正弦、余弦、正接を返します。
  結果は可能な限り正確な数で返されます。 (式にπ/6等の「特殊角」が与えられたときは正確な数で返します。 例:SIN(PI/6)=1/2)
ASIN(式) / ACOS(式) / ATN(式)
  式の逆正弦、逆余弦、逆正接を返します。
  戻り値はラジアン単位です。
  結果は可能な限り正確な数で返されます。
SQR(式)
  式の平方根を返します。
  結果は可能な限り正確な数で返されます。 (例:SQRT(81)=9)
EXP(式)
  exp 式を返します。
  結果は不正確な数で返されます。
LOG(式)
  式の自然対数を返します。
  結果は不正確な数で返されます。
LOG10(式)
  式の常用対数を返します。
  結果は不正確な数で返されます。
INEXACT(式)
  式を不正確な数に変換します。
ISEXACT(式)
  式が正確な数のとき真を返します。

Yuichiro Moriguchi
yuichiro-moriguchi＠nifty.com