Zaurus 944BASIC

944BASICを使ってて色々使えそうなルーチン、使い方をちょろっと書いてみます。
バージョンが上がってからの動作の保証は出来ませんのでご注意を。

ランダムシード
乱数を発生させるRND命令ですが、実は本当のランダムではなく、ある値が一定の順番で出てきてしまいます。
そこでなるべく乱数を不規則に出現するようにちょっとしたサブルーチンを組んでみます。

*RNDSEED
  SS=TIME%100
  FOR I=0 TO SS*10
    RR=RND%10
  NEXT
RETURN
このサブルーチンの中で時間を元にして不定(?)の回数だけRND命令をコールします。実行した時間(秒)でコール数が 変わるため、RNDの値の不規則性効果を上げる事が出来ます。

FORループからの抜け出し
現在のバージョンではFORループからGOTOで抜け出すとスタックの整合性が取れなくなりリセット要求が出てしまうようです。 ラベルを貼ってIFでループを作る手もありますが、ラベルが乱発するのはデバグの簡易性とソースの美しさを損なう恐れが あるので次のような姑息な手段を使ってみます。

FOR I=0 TO 20
  PRINT I
  IF I=10 THEN I=20
NEXT
ループで使ってるIの値を条件整合時に無理やりFORループの終了の値まで増やしてしまいます。実際スタックあふれの検証を したわけではないですが、多分大丈夫だと思います^^;
問題なのはネスト構造の一番外など、多段ループの外に出れない事ですね。一段外に抜ける事しか出来ないです。


戻る