循环在forth中很简单:
定循环 do ... loop ;
do先判断栈中前两位数值,作为循环的上限和初始值,如从0循环至9,用forth实现就是:
10 0 do i . loop
双重循环一样这现:10 0 do 10 0 do i . j . loop
i 是外循环值,j是内循环的值。
用forth实现的九九乘法表:
: 99tables \ 九九乘法表
cr 10 1 do
cr 10 1 do
i J * 4 U.R
loop
loop ;
程序运行后显示:
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
如剔除多余重复部分:
: 99tables \ 九九乘法表
cr 10 1 do
cr 4 i * spaces
10 i do
i J * 4 U.R
loop
loop ;
程序运行后显示:
1 2 3 4 5 6 7 8 9
4 6 8 10 12 14 16 18
9 12 15 18 21 24 27
16 20 24 28 32 36
25 30 35 40 45
36 42 48 54
49 56 63
64 72
81
Done.