N88−BASIC入門

このエントリーをはてなブックマークに追加
603ナイコンさん:2014/12/18(木) 20:10:17.04
だから、Kが毎回変化しないようにしろよw
604ナイコンさん:2014/12/18(木) 20:11:19.25
1 K=-(K=0)*INT(RND(1)*11):INPUT"アテナサイ";N:?MID$("オオキスギチイサスギアタリデス",1+(1+(N>K))+(1+(N<K))*5+(1+(N=K))*10),5):IF N<>K THEN 1 ELSE K=0:IF N THEN 1

あれ?真偽値って幾つだったっけ?
605ナイコンさん:2014/12/18(木) 20:42:53.01
0 か -1
606ナイコンさん:2014/12/18(木) 20:43:55.87
0か0でないか
607ナイコンさん:2014/12/18(木) 20:45:44.23
true ⇔ false
608ナイコンさん:2014/12/18(木) 20:54:32.33
うるせーなー。そんなに1行で書きたきゃ、ほれ。

1 DIM A$(2):FOR I=0 TO 2:READ A$(I):NEXT:K=INT(RND(1)*11):N=99:WHILE K<>N:INPUT"アテナサイ";N:PRINT A$( SGN(N-K) +1):WEND:DATA チイサスギ,アタリデス,オオキスギ

・わかりずらい条件式は使わない
・それなので、あたりハズレのメッセージの長さによって条件式を書き換える必要はない
・Kは当たるまで変化しない
・配列はきっちりDIM宣言をする

条件式を使うと、なんとなくリストがわかりづらくなる
「こんなにわかりづらいけどオレにはわかる。これ書いたオレ、カコイー!!」
くだらん。やめろ。

わかりづらい条件式がカコイイように感違いする輩が増えたのはベーマガとDr.Dのせいだ
609ナイコンさん:2014/12/18(木) 21:13:40.29
ベーマガは大抵ゲームだから難読化上等でしょう。
見ただけで攻略法が分かっちゃうと興醒めの場合もある。
610ナイコンさん:2014/12/18(木) 21:33:47.52
K=K-(0=K)*INT(RND(1)*11)
611ナイコンさん:2014/12/18(木) 21:51:33.56
>>606
それは判定条件で値じゃないよ
612ナイコンさん:2014/12/18(木) 23:08:34.02
>>609
数当てゲームだから難読化OKってことかw
613ナイコンさん:2014/12/18(木) 23:18:42.05
内容が分かってたら絶対買わないが、使ってみると意外と重宝する福袋の中身みたいな。
614ナイコンさん:2014/12/18(木) 23:21:11.35
MID$の最後の引数の1+(N=K)ってとこ
多分、NとKが等しければ2、そうでないなら1を期待してるんだろうけど、
こういう式でN=Kは代入文じゃなくて、比較文として処理されるん?
615ナイコンさん:2014/12/18(木) 23:29:04.97
あまり気が進まないんだけど、1行君のやっていたMID$を使う方法で書いてみた。
確かに短くはなるな。
メッセージの長さが3通りとも全部同じ長さって前提なら、結構いい方法かな。

1 K=INT(RND(1)*11):N=99:WHILE K<>N:INPUT"アテナサイ";N:PRINT MID$("チイサスギアタリデスオオキスギ",1+(SGN(N-K)+1)*6,6):WEND

これが短くする限界かね。
こんな事に挑戦するよりもわかりやすく書く事を心がけようぜ、1行君。

>>こういう式でN=Kは代入文じゃなくて、比較文として処理されるん?
そそ。0か-1になるんだよ。
こんなの使うとわかりづらくなるだけなんだけど、
当時のベーマガではDr.Dがプログラムを短くするテクニックだとほめていたんだよ。
616ナイコンさん:2014/12/18(木) 23:54:13.33
1行で書くとか短く書くってのは今の時代では完全に趣味の領域だね。

昔は記憶領域が小さくて短くせざるをえない時代もあったから、その時代ではアリだったのだろう。
今の時代は小さくすることよりもメンテナンス性やモジュールの再利用性が重視されるようになった。
まぁ、昔と今じゃ価値観が変わったってことだな。
617ナイコンさん:2014/12/19(金) 00:00:00.08
当時は、著しく処理速度が遅かった。
4MHzのZ80でBASICインタプリタだから。
メモリも少なかったし
だから、色々なテクニックがあった。

でも、今の時代は、 ドキュメントになるコードが良いコードだよ。
618ナイコンさん:2014/12/19(金) 02:47:38.56
そりゃ打ち込む時代とコピペの時代じゃ違うけど、
そっちはこの板でやる意味ないのよね。
619ナイコンさん:2014/12/19(金) 04:39:35.14
>>615さん
>>460で実行してみました
1gyoでセーブしてあります
620ナイコンさん:2014/12/19(金) 08:25:00.24
>>614
> 比較文として処理されるん?

そう、比較文と言うか比較演算子として扱われる
ちなみに C/C++ の = は、代入文じゃなくて演算子
621ナイコンさん:2014/12/20(土) 18:19:14.26
>>こういう式でN=Kは代入文じゃなくて、比較文として処理されるん?

PRINT 1=1 とか
PRINT 1=0 とかやってみれば、テストできるよ
622ナイコンさん:2014/12/21(日) 04:28:53.87
>>619
BASIC1行で出来ちゃうんだね。素晴らしいですね
http://i.imgur.com/9C8BWhL.jpg

ところで、行番号のかわりにラベル名をつけて、サブルーチンなんかに飛ばしたりというのはN88BASICでは不可能なんでしたっよね?
623ナイコンさん:2014/12/21(日) 09:35:55.80
N88BASICが、常に行番号を使い、それに加えてラベルを使う事もできる。

行番号無しで行いたければ、N88の次世代である QBASICを使いなさい。
QuickBASIC や FreeBASIC では、行番号が無くなりラベルを使う。
624ナイコンさん:2014/12/21(日) 09:41:43.70
>>621
定数同士の比較なら=は比較として容易に判別できるけど、
変数同士だと代入と比較をどうやって判別したらいいのかがよくわからない。
これがちゃんと正しく判別できないと、インタプリタ作れないよね?
625ナイコンさん:2014/12/21(日) 09:49:19.18
>>623
よく理解しました。ありがとうございます。
626ナイコンさん:2014/12/21(日) 10:04:25.33
>>624
関係演算子と代入は、構文の中の位置が異なり、
インタプリタは構文解析を行うから混同される事は無い。 

BASIC言語において、関係演算子が使われる場所が限定される。
627ナイコンさん:2014/12/21(日) 10:06:45.81
ちなみに、マイクロソフト系は、関係演算の結果を整数の数値として処理している。
628ナイコンさん:2014/12/21(日) 10:43:00.55
>>616
うん。末期のトラ技コンピュータで1行プログラム特集やってた。酔狂だわw
くだらない(←ほめ言葉)プログラムばかりで案外楽しかったな。
629ナイコンさん:2014/12/21(日) 11:02:01.15
>>624
比較を括弧でくくればおk

今思うとBasicでこんなのやるなよと思う。
なぜか当時流行ってて月刊誌やアスキーの薄い本で使われてた記憶がある。
630ナイコンさん:2014/12/21(日) 11:35:36.79
一行でリアルタイムなシューティングゲームは無理?
631ナイコンさん:2014/12/21(日) 11:36:40.03
>>630
お前ならできる
632ナイコンさん:2014/12/21(日) 11:44:25.86
一行はキツイな


下スクロールで一画面(80×25文字)プログラムなら作れたが……
若いころだったらなw
633ナイコンさん:2014/12/21(日) 12:24:09.59
今のトレンドだとTwitterに1回で投稿できる140文字かな
634ナイコンさん:2014/12/21(日) 12:25:57.63
昔、アスキーで1行コンテストあったな
635ナイコンさん:2014/12/21(日) 12:31:40.55
636ナイコンさん:2014/12/21(日) 14:46:16.66
>>624
本来命令文があるところに変数名に続き=が出てきたら代入文になる、
それだけだよ。
637ナイコンさん:2014/12/21(日) 18:01:02.81
N88-BASIC文法のBNFとかないのかな?
638ナイコンさん:2014/12/21(日) 18:20:58.13
FreeBASICが、ソースコードで公開しているから、調べてみるのも良い
639ナイコンさん:2014/12/21(日) 18:24:44.13
MBASIC86がVectorにある。 N88互換のソースコードつきだから、調べるとよろしい。
640ナイコンさん:2014/12/24(水) 22:53:55.33
>>635
peek pokeはずるいナリ
641ナイコンさん:2014/12/24(水) 23:02:14.37
動くのであれば
そのマシンでできる事なら何やってもOK、なコンテストだったんでしょう

より多くのマシンに対応できるようにすればするほど
地味な事しかできなくなってくるしね
642ナイコンさん:2014/12/27(土) 00:41:47.23
peekやpokeあるやは
>460で試せないやなあ残念ながら
643ナイコンさん:2014/12/27(土) 01:24:40.57
エントリマップどこかにない?
644ナイコンさん:2014/12/27(土) 01:32:29.71
エントリマップ ← 何それ???
645ナイコンさん:2014/12/27(土) 01:52:54.26
ROM内ルーチンのエントリポイントのアドレスリスト
646ナイコンさん:2014/12/27(土) 03:53:18.09
N88(86)
……(´・ω・`) ショボーン
647ナイコンさん:2014/12/27(土) 19:39:08.91
N-BASICならあるけど、 
8086なのかな?
何に使うの?
648ナイコンさん:2014/12/27(土) 20:29:15.66
本体(動作品)が98しかない
649ナイコンさん:2014/12/27(土) 21:03:41.51
PC9801のROM呼び出しを使って、何をしたいの?
ROM-BASICの解析をしたいのかな?
650ナイコンさん:2014/12/27(土) 22:01:30.99
98なら88のエミュレータ動くな
まあ86→z80の変換してROMを移植するのは容易じゃないだろうが。
651ナイコンさん:2014/12/29(月) 19:08:00.58
>>648
本体しかないとはモニターがなくて表示できないってこと?
それともシステムディスクとかソフトがないから何もできないってこと?
652ナイコンさん
センター試験旧数学U・旧数学Bで、まだ行番号付きのBASICがぎりぎり現役だなw
新課程では削除されてるみたいだし、今年で終わりかな?