2017-10-13 63 views
1

我試圖直接在嵌入式系統中學習Forth,並使用由Leo Brodie作爲文本的Starting Forth。我正在使用的Forth版本是328eForth(從eforth到ATmega328的一個端口),我已經閃入Arduino Uno。爲什麼在328eForth缺少'DO LOOP'?

看起來DO LOOP的單詞並沒有在328eForth中實現 - 這讓我在與Brodie學習時感到糾結。但是使用「文字」來查看字典表明存在一系列循環詞,例如,開始直到下一次退出再次退出等等。

我的問題如下:

Q1爲什麼DO LOOP從328eForth省略?

Q2 DO LOOP可以用其他現有詞語實現嗎?如果是這樣,如何,如果不是爲什麼? (我想必須有一個非常很好的理由遺漏的DO LOOP ...)

問題3你可以給一些328eForth循環詞的評論示例?

+0

請讓每一個崗位的問題。 – meagar

回答

6

Q1:選擇了不同的循環結構。

Q2:這句話FORNEXT執行類似的功能,只是倒數至0 運行完全指定的次數,包括零。
(n2 n1 --) DO ... LOOP總是運行至少一次,這需要額外的(精神)簿記。據我所知,人們一直在抱怨 。

問題3:382eforth documentation ForthArduino_1.pdf包含一些示例。


編輯:增加了一些暴露在Q2

+2

DO循環的主要問題發生在循環步驟爲負時。或者至少這是一些人的想法。 iForth的第一個版本只有FOR NEXT,但經過兩年的掙扎之後,我斷定這個想法會適得其反。 DO LOOP比FOR NEXT更靈活。 –