do ループ (カウント付きループとも呼ばれます) は、ループの繰り返し回数があらかじめ計算できるときに使用します。do ループは、通常、指定した終了値に達する直前に終了します。
表 4-31にカウント付きループの実行制御用コマンドを示します。
表 4-31 do (カウント付き) ループコマンド
次の画面で、ループの使用方法をいくつか示します。
ok 10 5 do i . loop 5 6 7 8 9 a b c d e f ok ok 2000 1000 do i . i c@ . cr i c@ ff = if leave then 4 +loop 1000 23 1004 0 1008 fe 100c 0 1010 78 1014 ff ok : scan (byte -- ) ] 6000 5000 (5000 〜 6000 のメモリー領域を走査して指定のバイト値に 一致しないバイトを調べる) ] do dup i c@ <> (byte error? ) ] if i . then (byte ) ] loop ] drop (the original byte was still on the stack, discard it ) ] ; ok 55 scan 5005 5224 5f99 ok 6000 5000 do i i c! loop (メモリー領域にステップパターンを埋め込む) ok ok 500 value testloc ok : test16 (-- ) 1.0000 0 (do 0-ffff ) (指定位置に異なる 16 ビット値を書き込む) ] do i testloc w! testloc w@ i <> (error? ) (さらに位置をチェック) ] if ." Error - wrote " i . ." read " testloc w@ . cr ] leave (exit after first error found ) (この行は省略可能) ] then ] loop ] ; ok test16 ok 6000 to testloc ok test16 Error - wrote 200 read 300 ok |
ok 10 5 do i . loop 5 6 7 8 9 a b c d e f ok ok 2000 1000 do i . i c@ . cr i c@ ff = if leave then 4 +loop 1000 23 1004 0 1008 fe 100c 0 1010 78 1014 ff ok : scan (byte -- ) ] 6000 5000 (5000 〜 6000 のメモリー領域を走査して指定のバイト値に 一致しないバイトを調べる) ] do dup i c@ <> (byte error? ) ] if i . then (byte ) ] loop ] drop (the original byte was still on the stack, discard it ) ] ; ok 55 scan 5005 5224 5f99 ok 6000 5000 do i i c! loop (メモリー領域にステップパターンを埋め込む) ok ok 500 value testloc ok : test16 (-- ) 1.0000 0 (do 0-ffff ) (指定位置に異なる 16 ビット値を書き込む) ] do i testloc w! testloc w@ i <> (error? ) (さらに位置をチェック) ] if ." Error - wrote " i . ." read " testloc w@ . cr ] leave (exit after first error found ) (この行は省略可能) ] then ] loop ] ; ok test16 ok 6000 to testloc ok test16 Error - wrote 200 read 300 ok |