Full BASICとは?


Full BASICは国際規格です

 Full BASICは,1991年に国際標準化機構(ISO)によって改定されたBASIC言語の国際規格です。
 日本では,1993年にJISになっています。
 米国規格のANSI Full BASICや,欧州規格のECMA BASICと互換性があります。


旧規格(基本BASIC)との違いは?

数値は十進小数
 数値は十進小数で表現されます。十進小数を2進小数で近似することに起因する誤差がありません。

計算結果は正確
 演算結果の正確さが厳格に規定されています。べき乗演算や組込み関数に対しても加減乗除の場合と同じ基準が適用されます。

組込み関数が増えた!
 逆正弦,逆余弦など,標準的に備えるべき組込み関数がたくさん追加されています。また,三角関数は度を単位として使うこともできます。

行列演算もできる!!
行列演算の命令が用意されています。逆行列の計算も一発でできます。

構造化プログラミング
 DO 〜 LOOPやIF 〜 END IFのような構造化された制御文が用意されているので,行番号に依存せずにプログラムの流れを記述することができます。

構造化された例外状態処理
 桁あふれや零除算など,実行時に起こるエラーを例外といいます。Full BASICには構造化された例外状態処理の機構が用意されているので,例外状態処理も分かりやすく記述できます。

再帰呼び出し可能な手続き定義
 組込み関数にない関数は,DEF文のほか,複数行での記述が可能な関数定義を用いて利用者自身が定義して用いることができます。 また,副プログラム定義を利用すれば,アルゴリズムを定義しておき,それを呼び出して利用することができます。 関数定義や副プログラム定義のなかで自分自身を利用することもできるので,再帰的なアルゴリズムも簡単に実現できます。

利用者が定義した座標系で実行されるグラフィックス命令
 Full BASICでは図形機能も規格化されています。これによって,機種ごとにグラフィックス命令が異なるというトラブルが解消されます。
 Full BASICのグラフィックス命令は利用者が定義した座標系で実行されます。ピクセル単位の座標を意識せずにコンピュータの機能を利用することが可能です。

変数名の宣言ができる
 すべての変数を宣言して使うこともできます。
 タイプミス等によるバグの低減や,変数の有効範囲の明確化に有効です。


Microsoft系BASICとの違いは?

 Full BASICは,N88-BASIC,Quick BASIC,Visual BASICなどのマイクロソフト系BASICとの互換性がありません。それらの文法で書かれたプログラムが動かないのは確かに不便ですが,マイクロソフト社の文法を取り入れなかったのには理由があります。

初心者にやさしい文法
 Full BASICでは,初心者は文法の細部を知っている必要がありません。
言語処理系とプログラムを書いた人との間で解釈の相違が生じないような文法が採用されています。
ですから,試行錯誤で言語を習得していったとしても,さほど問題が生じません。

数値に型の別がない
 数値に整数型,単精度型,倍精度型などの区別がありません。数値はすべて浮動小数点10進数です。

真偽値は数値ではない
 マイクロソフトBASICの文法では比較演算の結果は,真のとき-1,偽のとき0という数値です。
そのため,マイクロソフト系BASICでは,
IF 1<A<3 THEN PRINT "Y"
を実行するとAの値によらずいつでも“Y”が表示されます。
初心者が数学における通常の意味で上のような不等式を書いたとしたら,その誤りに気付くことは不可能に近いと思います。
Full BASICでは,文法上,真偽値は数値と互換性がありませんから,上のようなプログラムは翻訳時に文法誤りになります。

マルチステートメントがない
 マルチステートメントはマイクロソフトBASICに特有の構文ですが,初心者が気楽に使うのには問題があります。
たとえば,
100 IF A=1 THEN GOTO 200
110 IF A=2 THEN GOTO 300

をコロンで接続して
100 IF A=1 THEN GOTO 200 : IF A=2 THEN GOTO 300

としたら,意味が変わってしまいます。

予約語が少ない
 Full BASICには,予約語は18個しかありません。大部分の機能語は予約語ではないので,機能語との重複を心配せずに変数名,関数名を付けることができます。予約語の全体が規格で定められ,独自仕様で予約語を追加することが禁止されているので,ソフトをバージョンアップしたり,他社のBASICに変えたら以前作成したプログラムが予約語の関係で動かないというような問題も起こりません。
 また,DEF文で定義する関数の名前をFNで始める必要もないので,関数名としてf(x)やg(x)のような自然で分かりやすい名前が使えます。


戻る