この文書は、図形科学の課題プログラムを F-BASIC に書きかえるときに問題となると思われる点について、簡単に解説したものです。 プログラム書き換えの際の主な方針を以下に示します。
この文書に書かれていない命令がある、 この文書の説明では不充分、といった状況に出会った場合は、 F-BASIC のメニュー右端にあるオンラインヘルプを参照してください。 紙のマニュアルと完全に同じものがインストールされています。
お詫び:Netscape Navigator4.0 以降では、 プログラム部分が正しく表示されないことが判明しました。 Navigator3 以前か、Internet Explorer でご覧ください。
F-BASIC自体は、大文字と小文字を区別しないので、どちらを使用しても問題ありません。しかし、付属のエディタ中で、標準の状態では次のような方針で自動変換するように設定されています。
プログラム中に行番号を打ち込む必要はありません。GOTOや GOSUB でジャンプする時は、行番号ではなく「ラベル」を使用します。 具体的な使用方法はサンプルプログラムを見てください。
旧機種で使用できたコメントは、REM
と !
でした。
新機種で使用できるのは、rem
と '
です。
旧機種のプログラムの先頭部分には、必ず次のようなコメントがあります。
!SAVE "C:E40-0401.BAS",Aこの文はもはや不要なので、削除してください。
旧機種ではいつも最初の方に以下の命令が書かれていました。
CHANGE DISP "80HC0"新機種では上記の命令は必要ありません。削除してください。
旧機種では、SCALE
命令を使って座標系の設定を
行っていました。以下に典型的な例を示します。
SCALE -40,-200,599,199,0,0,639,399新機種でこれに相当する命令は次のようになります。
window (-40,-200)-(599,199)また、旧機種ではプログラムの最後で座標系を初期化するために、 次のような命令が入っている場合があります。
SCALE OFFこれは不要なので削除してください。
さらに、画面の背景色を濃紺にするために、以下の命令を
window
命令の直後に挿入してください。
color 7,2 : cls
書いていて自分でも混乱してきたので、実例を見てください。
旧機種では、三角関数などで用いる角度の単位を切り替えるために、
DEG
と RAD
というコマンドがありました。
ところが、新機種では、そのようなコマンドは用意されていません。
新機種では、角度の単位はラジアンのみです。
旧機種で DEG
を使用している場合はプログラムを修正してください。
旧機種では、プログラム終了後も画像が表示され続けていました。 しかし新機種では、プログラムの終了と同時に画面が消えてしまうため、 ゆっくりと画像を見ている余裕がありません。 そのため、プログラムが終了する直前に一時停止させる必要があります。
最も基本的な命令は stop
命令です。
プログラムの end
命令の直前に stop
と書いておけば、
何かキーを入力するまでプログラムは停止します。
しかし、stop
命令を用いて一時停止している間、
画面左上に次のようなメッセージが表示されます。
中断しました E40-0401.BAS[25行] 任意のキーを押してくださいこれが邪魔となって、せっかくの画像が見えなくなってしまう場合があります。 学生が打ち込むプログラムは
stop
命令でいいかもしれませんが、
教官が講義中にプレゼンテーションするプログラムでは、
stop
命令の代わりに次のコマンドを用いて余計な画面表示を抑制した方がいいでしょう。
input "",A$
また、旧機種のプログラム中で、エンターキーが押されるまでプログラムを一時停止させる目的で、 次のようなコマンドが用いられている場合があります。
INPUT Aしかし、新機種では望みの動作にはならないので、やはり次のように修正してください。
input "",A$
緑色の実線を描く場合、旧機種では次のようになります。
LINE X1,Y1;X2,Y2,4,Nここで、
4
は緑色を表します。
N
は、ここでは意味を持ちません。
省略されている場合もあります。
これを新機種に変更すると以下のようになります。
line (X1,Y1)-(X2,Y2),,9ここで、
9
が緑色を表します。
色番号の対応については後述します。
LINE X1,Y1;X2,Y2,"A",6,Nここで、
"A"
は点線を、
6
は黄色を表します。
N
は、ここでは意味を持ちません。
省略されている場合もあります。
これを新機種に変更すると以下のようになります。
line (X1,Y1)-(X2,Y2),,13,,dotここで、
13
が黄色を、
dot
が点線を表します。
色番号の対応についてはこちらで、
線種についてはこちらで示します。
実線で折れ線を描く場合、旧機種では次のように座標を ;
で区切って指定します。ここでは 3 点の場合を示します。
LINE X1,Y1;X2,Y2;X3,Y3,6,N
これを新機種に変更すると、次のようになります。
connect (X1,Y1)-(X2,Y2)-(X3,Y3),13
line
命令でなく connect
命令を使う点に注意してください。しかし次節で述べるように、connect
は点線では使用できないので、
最初から connect
は使わずに全て line
で統一してしまった方が解り易いかもしれません。
点線で折れ線を描く場合、旧機種では実線の場合とほとんど同じで、 線種の指定を追加するだけです。
LINE X1,Y1;X2,Y2;X3,Y3,"A",6,Nところが、新機種では、実線以外で折れ線を描く方法が用意されていません。 面倒ですが、直線を組み合わせる必要があります。
line (X1,Y1)-(X2,Y2),,13,,dot line (X2,Y2)-(X3,Y3),,13,,dot
実線で多角形を描く場合、旧機種では折れ線を描く場合とほどんど同じです。 三点を指定して三角形を描く場合、次のようになります。
LINE X1,Y1;X2,Y2;X3,Y3,6,F最後の
F
が、始点と終点を結んで多角形を描くことを表します。
新機種の場合も、折れ線とほとんど同じで、次のようになります。
connect (X1,Y1)-(X2,Y2)-(X3,Y3),13,,f最後の
f
始点と終点を結んで多角形を描くことを表します。
しかし次節で述べるように、connect
は点線では使用できないので、
最初から connect
は使わずに全て line
で統一してしまった方が解り易いかもしれません。
LINE X1,Y1;X2,Y2;X3,Y3,"A",6,F最後の
F
が、始点と終点を結んで多角形を描くことを表します。
ところが、新機種では、実線以外で多角形を描く方法が用意されていません。
面倒ですが、直線を組み合わせる必要があります。
line (X1,Y1)-(X2,Y2),,13,,dot line (X2,Y2)-(X3,Y3),,13,,dot line (X3,Y3)-(X1,Y1),,13,,dot
旧機種の円描画命令の典型的な例を示します。
CIRCLE X,Y,3;;6,N 半径3、色番号6(黄色)で塗りつぶさない円を描く CIRCLE X,Y,2;;7,P 半径2、色番号7(白色)で塗りつぶした円を描く同じ命令を新機種で表すと次のようになります。
circle (X,Y),3,13 半径3、色番号13(黄色)で塗りつぶさない円を描く circle (X,Y),2,15,,,,f 半径2、色番号15(白色)で塗りつぶした円を描く
旧機種の文字描画命令の典型的な例を示します。
GCHR X,Y,"Hello",0,7ここで、
X,Y
は文字列の左下隅の座標を、
"Hello"
は表示したい文字列を、
0
は文字の表示角度を、
7
は文字の色番号(白色)を表します。
同じ命令を新機種で表すと次のようになります。
symbol (X,Y),"Hello",1,1,15ここで、
X,Y
は文字列の左上隅の座標を、
1,1
は文字の縦倍率と横倍率を、
15
は白色を表します。
色番号の対応については後述します。
新旧BASICで座標の基準位置が異なるため、 座標値を修正しないと表示位置が狂います。 文字の高さが 16 ドットであるので、元のプログラムのY座標から 16 を減じておけば、ほぼ正しい位置が再現されます。 次のようにすればいいでしょう。
symbol (X,Y-16),"Hello",1,1,15
色 | 黒 | 青 | 赤 | 紫 | 緑 | 水色 | 黄 | 白 |
---|---|---|---|---|---|---|---|---|
旧機種 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
新機種 | 0 | 3 | 5 | 7 | 9 | 11 | 13 | 15 |
線種 | 破線 | 一点鎖線 | 二点鎖線 | 実線 |
---|---|---|---|---|
旧機種 | "A" | "B" | "C" | 省略 |
新機種 | DOT | DASHDOT | DASHDOUBLEDOT | SOLID または省略 |