易符學苑首頁

易符小學“小朋友”電腦

笫一課 開機

一 打開電腦

二 在桌面上選 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 棄 棄

;