EDU mk2用NicoBASICの最新バージョン(nicobas20081024b.zip)で
センター試験の数学に出てくるプログラムをNicoBASICで動くようにしてみました
(まだ完全に対応してませんが、、、)。
100 input "a=";A 110 input "b=";B 120 input "c=";C 130 U=C 140 V=C 150 for x=0 to 9 160 y=a*X*x*b*x+c 170 if y>=u then goto 190 180 u=y 190 if y<=v then goto 210 200 v=y 210 next x 220 print "最小値=";u 230 print "最大値=";v 240 end
↑
平成14年センター試験数学1・Aの選択問題です。(引用の範囲内ということで載せさせて頂きました。試験問題にも著作権はあります。)
それにしても、GOTO使ってるのがマズすぎです。わざと分かりにくくしてるんでしょうか。
↑エディット画面です。上記のプログラムをテキスト化して読み込みました。
最新版では日本語を表示できるようにしました。半角は4x6pixelの自作フォント、全角(SJIS)は8x8のElisaフォントを表示させます。
全角を表示させるためには漢字ROM(Elisaフォントを書き込んだ外部EEPROM)が必要です。漢字ROMは電子辞書ソフトのEDU2DICで作れます。
http://d.hatena.ne.jp/nicotakuya/20080901/1220232389
↑実行仮面です。
INPUT文に対応させました。「?」と表示されている部分が入力部分です。
キーボードから打ち込んでenter。
上/下/Aキーで入力することもできます。
100 INPUT "A="; A 110 INPUT "B="; B 120 IF B<=0 THEN PRINT "B<=0です。終了します。":GOTO 240 130 X = 0 140 Y = A 150 IF A < 0 THEN GOTO 200 160 IF Y < B THEN GOTO 230 170 X = X + 1 180 Y = Y - B 190 GOTO 160 200 X = X - 1 210 Y = Y + B 220 IF Y < 0 THEN GOTO 200 230 PRINT "X は"; X; ",Y は"; Y; "です。" 240 END
↑
平成16年センター試験数学IAの問題。
これも問題なく動きました。プログラムの内容は意味不明ですけど。
ここまでは、よかったのですが、動かないものも一杯あります。
以下はNicoBASICで動かない例です。
100 INPUT PROMPT "x=":X 110 INPUT PROMPT "y=":Y 120 IF X<Y THEN 130 LET Z=X 140 LET X=Y 150 LET Y=Z 160 END IF 165 LET T=X*Y 170 IF Y=0 THEN 180 PRINT T/X 190 GOTO 270 200 END IF 210 LET R=X 220 LET R=R-Y 230 IF R>=Y THEN GOTO 220 240 LET X=Y 250 LET Y=R 260 GOTO 170 270 END
↑
平成20年センター試験数学IIBの問題。
2006年度から書式(JIS Full BASICと呼ぶらしい)が変わりました。
今度から変数の代入に「LET」を使ってます。
あと、今度からINPUT命令は
【INPUT〜"";(セミコロン)変数】
じゃなくて、
【INPUT〜 "":(コロン)変数】
なんですね。
さらに「PROMPT」っていう無駄な単語が混ざってて、すごい違和感です。当然N88-BASICでは動きません。
あと、GOTOの反省なのか、今度からIFがネストできるようになったみたいです。
でも「ENDIF」じゃなくて「END(スペース)IF」になってます。
これだと、「END」と混同しそうで見た目が悪いです。
あと、致命的なことにNicoBASICでは少数が使えません。
整数に一定のゲタをはかせて、「なんちゃって少数」だったらできるんですが、それでも処理スピードが落ちるかもしれません。
もし、「NicoBASICで動かしたい」という需要があるなら対応させたいです。
(追記)バグ修正版はこちら
http://d.hatena.ne.jp/nicotakuya/20081026/1225038289