“小朋友”電腦

笫一課  開機

笫二課   指令

第三課   晝線

第四課  顏

笫五課   彩色圖形

第六課   如何寫程式

第七課  新指令

第八課   數、變數和數陣

第九課   迴路

 


 

笫一課     開機

一、打開電腦

二、在桌面上選 Win32Forth

三、在“檔案”欄中選“載入符式檔案”

四、在檔案選擇窗口中選取“小朋友.F” 檔

五、回到  Win32Forth  窗口即可開始工作

六、按“Enter” 鍵即可見到“ok” 回應

七、可以輸入以下指令

      台灣 enter

      中國 enter

      美國 enter

      字典 enter          

 top

 

 

 


笫二課     算術指令

以下是基本的算術指令

 

+    加

            

   乘

    除

     印出

.  列出疊內容

 

請做下面的練習

 

1       2  +  .   enter

2      4  *  .    enter

100 5  /  .     enter

6      13  -  .   enter

 

結果對不對﹖

 

我們可以輸入許多數字,堆積在一個“堆疊” 上給後續的指令使用

 

1   2  3  4  5    enter

.S        enter  (或用“堆疊” 指令)

+  .S    enter

-  .S     enter

*  .S    enter

 

.S 是個好朋友.幫助我檢查堆積在堆疊上的數字

 

這些指令把電腦變成一個很好用的算術計算器,解決很多算術問題

 top

 

 

 

 


第三課     晝線

小朋友”電腦有很方便的畫圖指令,以下是一些畫線的指令:

 

       設定直線開始的既定坐標,準備畫直線。

       由既定坐標,畫一直線到現定坐標。現定坐標就變成既定坐標,準備畫下一條直線。

新圖    把畫圖窗口清洗,準備畫圖。

 

畫圖窗口的橫坐標由左至右是0到480,縱坐標由上而下是0到650。

 

請輸入以下指令畫一個方框:

 

      新圖  200  100  移  enter

              300  100  畫  300  400  畫  enter

              200   400  畫  200  100  畫  enter

 

會畫方框之後,我們應該就會畫任何可以用直線畫出的任何圖形。

 

請試試畫一個房子。

 

中文字是用直線畫出來的。你能把你的名字在畫圖窗口裡畫出來嗎﹖ 

 top

 

 

 


第四課     顏色

我們可以用以下的指令來改變直線的顏色,使得圖畫更好看:

 

線色     設定以後畫出線條的顏色

          顏色

黃          顏色

綠          顏色

青          顏色

          顏色

紫          顏色

黑          顏色

白          顏色

          用堆疊上的坐標和半徑畫一個圓圈

 

這些指令的用法是:

 

      紅  線色  enter

      (畫線指令)

      ….

      綠  線色  enter

      (畫線指令)

      ….

      240  325  100 圓  enter

 

有了彩色的圓和彩色的直線配合,我們就可以畫更有趣的圖了。

 

請試試畫一輛汽車。試試看好嗎﹖    

  top

 

 

 


笫五課     彩色圖形

圓和直線可以構成許多有趣的圖畫,但我們有更強的畫圖指令:

 

長方形    由堆疊上的坐標和顏色資料畫出彩色的長方形及正方形

橢圓       由堆疊上的坐標和顏色資料畫出彩色的橢圓形

實心圓    由堆疊上的坐標和顏色資料畫出彩色的實心圓形

弧          由堆疊上的坐標資料畫出一段弧線

深紅       顏色

深黃       顏色

深綠       顏色

深青       顏色

深藍       顏色

深紫       顏色

深黑       顏色

          顏色

淺灰       顏色

深灰       顏色

 

我們來試驗畫一個卡通人頭:

 

新圖 

黑  線色

  20       20    440   600       藍   長方形   enter

240    325    150                  黃   實心圓   enter

210    260    270   380       紅   橢圓      enter

170    170       30                 黑   實心圓   enter

310    170       30                 黑   實心圓   enter

140    225    340    425   140   425  340   425  弧  enter

 

長方形指令在堆疊上的四個坐標值是長方形的左、上、右、下四邊的極限值。橢圓指令也是用四個坐標決定一個長方形,橢圓是在這個長方形中最大的橢圓形。

 

實心圓的坐標規定圓心的坐標和圓的半徑,這是和圓指令的坐標數字是相似的。

 

弧指令的坐標最麻煩。前四個坐標值規定一個橢圓形,後四個坐標規定橢圓形上那一段弧線是要畫出來的。這個畫弧線的方法,要用一個圖來說明。    

 top

 

 

 


第六課     如何寫程式

簡單的工作,我們就用上述的方法輸入指令和它們需要的數值就好了。複雜的工作,最好是把指令存在檔案中,要用的時候把檔案載入就可以了。

 

“小朋友”電腦可以接所有的文字檔。你可以用你最愛用的編輯程式來寫程式,唯一要注意的是當你儲存檔案時一定要選用文字檔的形式。這樣“小朋友”電腦就可以正確地執行你寫在檔案中的指令。

 

上一課中畫卡通人像的指令是存在“人像.F” 檔中的。請用你的編輯程式打開這個檔案,檢查指令是否正確。

 

然後,

      在桌面上選 Win32Forth

      在“檔案” 欄中選載入符式檔案”

      在檔案選擇窗口中選取“人像.F” 檔

在畫圖窗口中,你就可以看到人像。

 

在微軟視窗下的“記事本”, WordPad, 及Word都可以用來寫“小朋友”的程式。Win32Forth 中附有一個WinView 的編輯程式,也是很好用的。你可以在“檔案” 欄中選“編輯符式檔案” 進入WinView開始編輯工作。WinView最大的好處是當“小朋友”載入檔案時,若執行發生錯誤,WinView 會自動將檔案打開並指到發生錯誤的指令。你可以很方便地改正程式,再度載入測試。    

 top

 

 

 


第七課     新指令

小朋友電腦雖然有很多畫圖的指令,但要畫複雜的圖畫時,就要用許多指令集合起來才行。這樣的程式就很複雜,也不容易寫,更不容易改正其中的錯誤。

 

小朋友電腦最強的功能就是讓你按你的需要增加新的指令。新指令是功能更強的工具。新的指令和原有的指令配合使用,就能很方便而快速地解決實際的問題。

 

例如以前畫方框的一連串指令就可以定成一個新指令“方框” :

      : 方框

      新圖  200  100   移   enter

               301  100   畫  300  400  畫  enter

               201  400   畫  200  100  畫  enter

        ;

 

這例子裡有兩個重要的指令“”和“

 

:          開始定一個新指令。新指令的名字就是緊跟的字串,以後的指令串就是新指令該做的工作,到“;”時結束。

 

;          結束由“:”開始的新指令。

 

輸入上述的方框指令後,你可以輸入

 

      方框  enter

 

你就可以在畫圖窗口裡看到方框的圖形。   

   top

 

 

 

 


第八課     常數、變數和數陣

由前面畫圖指令的用法,我們看到數字的功用:提供各種圖形需要的坐標值。但我們只見到數字是由鍵盤輸入,堆積在堆疊上再讓指令適時取用。許多經常用到的數字可以用常數、變數和數陣的形式存在電腦中,在程式中可以更靈活地使用,使新定的指令發揮更大的功能。

 

常數      定一個新指令,它在執行時將一個常數值加上堆疊。

變數      定一個新指令,它在執行時將一個變數的地址加上堆疊。變數的數值可以用“@” 指令從地址去讀取,新的數值可以用“!” 指令存入。

數陣      定一個新指令,它在執行時將一個數陣區的開始地址加上堆疊。數陣內的數值若不必事先規定時,可用空間指令決定數陣的大小。數陣若需設定數值時則需用“,”指令輸入預定數值。

@          將堆疊上的地址換成該地址內存的數值。

!            堆疊上有一個數值及一個地址。將此數值存入此地址,並將數值和地址從堆疊上清除。

空間      用在數陣指令後。規定數陣的大小(以字元為單位)。

,          用在數陣指令後。設定各個數值的起始值。

 

下面是幾個例子:

 

數陣  三角     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        

 top

 

 

 

 

 


第九課     迴路

電腦一個很大的優點就是不嫌麻煩、樂意做重複的工作。迴路就是叫電腦做重複工作的方法。以下是部分的迴路指令:

 

定限      開始一個迴路用堆疊最上的數字定作迴路的指標。

迴路      結束一個迴路結構。若指標是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 4    76    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      棄  棄

        ;

 

   top