為什麼只提供三個呢?或許長久以來Forth擅長用來開發短小精悍的應用,所以有人認為三個就夠用了,不過Jimmy's papa認為只提供這三個迴圈計數索引,可能是因為寄存在返回堆疊(Return Stack)的關係,某些書上還建議,操作堆疊的深度盡量避免超過三個
控制結構do..loop,可用的積木有..
do積木,從資料堆疊取上限值(limit)及起始值(startindex),至少會執行一次迴圈
?do積木,若上限值(limit)等於起始值(startindex),則不會執行迴圈
i積木,會將目前迴圈計數索引值從返回堆疊(Return Stack)複製到資料堆疊(Data Stack)
loop積木, 將迴圈計數索引值遞增1
+loop積木,從資料堆疊取遞增值,加總到迴圈計數索引值
Jimmy's papa先拉一拉積木作個實驗,讓程式從0開始跑10次迴圈,並將每次的索引值(loop index)推入資料堆疊,最後以.s積木列印在螢幕
寄件者 scratchlab02 |
寄件者 scratchlab02 |
: test 10 0 do i loop ; test .s
接著測試?do積木,上限值(limit)及起始值(startindex)皆為0
寄件者 scratchlab02 |
寄件者 scratchlab02 |
: test 0 0 ?do i loop ; test .s
最後測試一下+loop積木,每次迴圈索引值(loop index)遞增3
寄件者 scratchlab02 |
寄件者 scratchlab02 |
: test 99 0 do i 3 +loop ; test .s
沒有留言:
張貼留言