易符小學“小朋友”電腦
笫一課 開機
一 打開電腦
二 在桌面上選 Win32Forth
三 在“檔案” 欄中選“載入符式檔案”
四 在檔案選擇窗口中選取“小朋友.F” 檔
五 回到 Win32Forth 窗口即可開始工作
六 按“Enter” 鍵即可見到“ok” 回應
七 可以輸入以下指令
台灣 enter
中國 enter
美國 enter
字典 enter
笫二課 算術指令
以下是基本的算術指令
+ 加
= 減
* 乘
/ 除
. 印出結果
.S 列出堆疊內容
請做下面的練習
23 2 + . enter
19 4 * . enter
120 5 / . enter
99 13 - . enter
結果對不對﹖
我們可以輸入許多數字,堆積在一個“堆疊” 上給後續的指令使用
2 3 4 5 enter
.S enter (或用“堆疊” 指令)
+ .S enter
- .S enter
* .S enter
.S 是個好朋友.幫助我檢查堆積在堆疊上的數字
這些指令把電腦變成一個很好用的算術計算器,解決很多算術問題
第三課 晝線
“小朋友”電腦有很方便的畫圖指令,以下是一些畫線的指令:
移 設定直線開始的既定坐標,準備畫直線。
畫 由既定坐標,畫一直線到現定坐標。現定坐標就變成既定坐標,準備畫下一條直線。
新圖 把畫圖窗口清洗,準備畫圖。
畫圖窗口的橫坐標由左至右是0到480,縱坐標由上而下是0到650。
請輸入以下指令畫一個方框:
新圖 200 100 移 enter
300 100 畫 300 400 畫 enter
200 400 畫 200 100 畫 enter
會畫方框之後,我們應該就會畫任何可以用直線畫出的任何圖形。
請試試畫一個房子。
中文字是用直線畫出來的。你能把你的名字在畫圖窗口裡畫出來嗎﹖
第四課 顏色
我們可以用以下的指令來改變直線的顏色,使得圖畫更好看:
線色 設定以後畫出線條的顏色
紅 顏色
黃 顏色
綠 顏色
青 顏色
藍 顏色
紫 顏色
黑 顏色
白 顏色
圓 用堆疊上的坐標和半徑畫一個圓圈
這些指令的用法是:
紅 線色 enter
(畫線指令)
….
綠 線色 enter
(畫線指令)
….
240 325 100 圓 enter
有了彩色的圓和彩色的直線配合,我們就可以畫更有趣的圖了。
請試試畫一輛汽車。試試看好嗎﹖
笫五課 彩色圖形 畫卡通人像
圓和直線可以構成許多有趣的圖畫,但我們有更強的畫圖指令:
長方形 由堆疊上的坐標和顏色資料畫出彩色的長方形及正方形
橢圓 由堆疊上的坐標和顏色資料畫出彩色的橢圓形
實心圓 由堆疊上的坐標和顏色資料畫出彩色的實心圓形
弧 由堆疊上的坐標資料畫出一段弧線
深紅 顏色
深黃 顏色
深綠 顏色
深青 顏色
深藍 顏色
深紫 顏色
深黑 顏色
灰 顏色
淺灰 顏色
深灰 顏色
我們來試驗畫一個卡通人頭:
新圖
黑 線色
20 20 440 600 藍 長方形 enter
325 150 黃 實心圓 enter
260 270 380 紅 橢圓 enter
170 30 黑 實心圓 enter
170 30 黑 實心圓 enter
225 340 425 140 425 340 425 弧 enter
長方形指令在堆疊上的四個坐標值是長方形的左、上、右、下四邊的極限值。橢圓指令也是用四個坐標決定一個長方形,橢圓是在這個長方形中最大的橢圓形。
實心圓的坐標規定圓心的坐標和圓的半徑,這是和圓指令的坐標數字是相似的。
弧指令的坐標最麻煩。前四個坐標值規定一個橢圓形,後四個坐標規定橢圓形上那一段弧線是要畫出來的。這個畫弧線的方法,要用一個圖來說明。
第六課 如何寫程式
簡單的工作,我們就用上述的方法輸入指令和它們需要的數值就好了。複雜的工作,最好是把指令存在檔案中,要用的時候把檔案載入就可以了。
“小朋友”電腦可以接所有的文字檔。你可以用你最愛用的編輯程式來寫程式,唯一要注意的是當你儲存檔案時一定要選用文字檔的形式。這樣“小朋友”電腦就可以正確地執行你寫在檔案中的指令。
上一課中畫卡通人像的指令是存在“人像.F” 檔中的。請用你的編輯程式打開這個檔案,檢查指令是否正確。
然後,
在桌面上選 Win32Forth
在“檔案” 欄中選“載入符式檔案”
在檔案選擇窗口中選取“人像.F” 檔
在畫圖窗口中,你就可以看到人像。
在微軟視窗下的“記事本”, WordPad, 及Word都可以用來寫“小朋友”的程式。Win32Forth 中附有一個WinView的編輯程式,也是很好用的。你可以在“檔案” 欄中選“編輯符式檔案” 進入WinView開始編輯工作。WinView最大的好處是當“小朋友”載入檔案時,若執行發生錯誤,WinView 會自動將檔案打開並指到發生錯誤的指令。你可以很方便地改正程式,再度載入測試。
第七課 新指令 畫方框
小朋友電腦雖然有很多畫圖的指令,但要畫複雜的圖畫時,就要用許多指令集合起來才行。這樣的程式就很複雜,也不容易寫,更不容易改正其中的錯誤。
小朋友電腦最強的功能就是讓你按你的需要增加新的指令。新指令是功能更強的工具。新的指令和原有的指令配合使用,就能很方便而快速地解決實際的問題。
例如以前畫方框的一連串指令就可以定成一個新指令“方框” :
: 方框
新圖 200 100 移 enter
300 100 畫 300 400 畫 enter
200 400 畫 200 100 畫 enter
;
這例子裡有兩個重要的指令“:”和“;”
: 開始定一個新指令。新指令的名字就是緊跟的字串,以後的指令串就是新指令該做的工作,到“;”時結束。
; 結束由“:”開始的新指令。
輸入上述的方框指令後,你可以輸入
方框 enter
你就可以在畫圖窗口裡看到方框的圖形。
第八課 常數、變數和數陣
由前面畫圖指令的用法,我們看到數字的功用:提供各種圖形需要的坐標值。但我們只見到數字是由鍵盤輸入,堆積在堆疊上再讓指令適時取用。許多經常用到的數字可以用常數、變數和數陣的形式存在電腦中,在程式中可以更靈活地使用,使新定的指令發揮更大的功能。
常數 定一個新指令,它在執行時將一個常數值加上堆疊。
變數 定一個新指令,它在執行時將一個變數的地址加上堆疊。變數的數值可以用“@” 指令從地址去讀取,新的數值可以用“!” 指令存入。
數陣 定一個新指令,它在執行時將一個數陣區的開始地址加上堆疊。數陣內的數值若不必事先規定時,可用空間指令決定數陣的大小。數陣若需設定數值時則需用“,”指令輸入預定數值。
@ 將堆疊上的地址換成該地址內存的數值。
! 堆疊上有一個數值及一個地址。將此數值存入此地址,並將數值和地址從堆疊上清除。
空間 用在數陣指令後。規定數陣的大小(以字元為單位)。
, 用在數陣指令後。設定各個數值的起始值。
下面是幾個例子:
數陣 三角 120 , 260 , 33 , 110 , 207 , 110 ,
120 , 60 , 33 , 210 , 207 , 210 ,
220 , 160 , 70 , 73 , 70 , 247 ,
20 , 160 , 170 , 73 , 170 , 247 ,
數陣 星形 -100 , 0 , -40 , 30 ,
-31 , 95 , 15 , 46 ,
81 , 59 , 50 , 0 ,
81 , -59 , 15 , -46 ,
-31 , -95 , -40 , -30 ,
數陣 星圖 80 空間
變數 x
變數 y
變數 除數
變數 被除數
我們若要把變數X的值改成12345時,應該用以下的指令:
12345 X ! enter
要撿查X內的數值時則用:
X @ . enter
第九課 迴路 畫國旗
電腦一個很大的優點就是不嫌麻煩、樂意做重複的工作。迴路就是叫電腦做重複工作的方法。以下是部分的迴路指令:
定限 開始一個迴路結構。用堆疊最上的數字定作迴路的指標。
迴路 結束一個迴路結構。若指標是0就結束迴路,再繼續執行以後的指令。若指稱不是0,就將指標減1,並且回到定限指令之後,重複執行迴路結構中所有的指令。
講到這裡,我就可以解釋這三個畫國旗的程式“台灣”、“中國” 和“美國”。它們用到上一課中定的幾個變數和數陣,以及幾個改變堆疊上數值順序的指令。
重 把堆疊最上的數值複製一份,加到堆疊最上面。
複 把堆疊上第二個數值複製一份,加到堆疊最上面。
倒 把堆疊最上面兩個數值的順序倒轉。
棄 把堆疊最上面的數值丟棄。
這幾個指令把堆疊上的數值重新排列,使得後續的指令能獲得正確的數值,而能正確地完成它們該做的工作。另有兩個以前沒有用過的指令:
*/ 比例指令。堆疊最上三個數值是A, B, C,丟棄此三數值,而用Ax(B/C) 取代。 多邊形 畫多邊形的指令。它需要堆疊上三個數值:最上是顏色,第二是邊數,第三是含有所有角位座標的數陣地址。
星位 將星形數陣中五角星的筆畫資料按(被除數/除數) 的比例縮小並移到(x,y) 坐標計算,將結果存到星圖數陣中。
星 將五角星在星圖中的資料用規定的顏色畫出來。
台灣 畫出中華民國的國旗。
中國 畫出中華人民共和國的國旗。
美國 畫出美國的國旗。五十顆星是最難畫的,用迴路的辦法就簡單得多了。
: 星位 ( x y 被除數 除數 - )
除數 存
被除數 存
y 存
x 存
星形 星圖
9 定限 複 取 被除數 取 除數 取 */
x 取 + 複 存
複 4 + 取 被除數 取 除數 取 */
y 取 + 複 4 + 存
8 + 倒 8 + 倒
迴路 棄 棄
;
: 星 ( x y 被除數 除數 色 -- )
暫存 星位
星圖 10 取回 多邊形
;
: 台灣
新圖
0 0 476 646 紅 長方
0 0 240 320 藍 長方
三角 3 白 多邊形
三角 24 + 3 白 多邊形
三角 48 + 3 白 多邊形
三角 72 + 3 白 多邊形
120 160 移
藍 線色
0 0 68 圓
0 0 69 圓
0 0 70 圓
0 0 71 圓
0 0 72 圓
;
: 中國
新圖
0 0 476 646 紅 長方
125 100 50 100 黃 星
50 200 10 100 黃 星
100 230 10 100 黃 星
150 230 10 100 黃 星
200 200 10 100 黃 星
;
: 美國
新圖
0 0 476 646 紅 長方
36 0 72 646 白 長方
108 0 144 646 白 長方
180 0 216 646 白 長方
252 0 288 646 白 長方
324 0 360 646 白 長方
396 0 436 646 白 長方
0 0 252 324 藍 長方
27 27
4 for 複 複
5 for 複 複 15 100 白 星
54 +
next 棄 棄
倒 50 + 倒
next 棄 棄
52 54
3 for 複 複
4 for 複 複 15 100 白 星
54 +
next 棄 棄
倒 50 + 倒
next 棄 棄
;