在第三章裏我們曾經講過,程序是由許多指令組成的。現在同學們已經掌握了海龜作圖的一些指令,就可以開始學習編寫程序了。
大家知道,要畫一個圖形,就要從鍵盤輸入一組命令,海龜便在這些命令的指揮下,畫出相應的圖形。每輸入一條命令,計算機就完成一個動作,這種人機對話的方式,我們稱之為命令狀態。這對初學者來說無疑是很方便的。但很快我們就會發現,在這種狀態下每畫一種圖形,就要輸入一組命令,即便是前麵剛畫過的圖形,但由於沒有被存儲起來,也要重新輸入那組命令。這樣太麻煩了。LOGO語言為我們提供了一種方便,就是可以給經常要用的一些命令的組合取一個名字,以後要使用這些命令的組合時,不必再重複輸入那些指令,而隻要輸入代表這些指令的名字,就可以讓計算機執行這組指令了。例如:讓海龜畫一個邊長為50的正方形所用的命令是。我們可以給這個指令起一個名字,以後再想畫邊長為50的正方形時,隻要按ZFX就可以了。這相當於給LOGO語言增加了新命令ZFX。
第一節定義過程
所謂新命令,就是用來表示一組LOGO基本命令,並由字母打頭的字符串。在使用新命令,需要先告訴計算機這個新命令表示的是哪些基本命令的組合,既要教會計算機如何執行這個新命令。在LOGO語言裏,教會計算機執行新命令所規定的操作,叫做定義過程。定義一個過程需要有一定的格式。這個格式可以分成三部分過程的首部、過程體和過程的結束語。
一、過程的首部
定義過程時,先要按一個TO命令,它的作用是讓計算機進入定義過程模式(編輯狀態)在TO的後麵要有一個空格。空格後麵要寫上新命令的名字,即過程名。過程名可以由任意的字母和數字來組成,習慣上以英文大寫字母打頭,同時也可以插入一些運算符號和空格以外的其它符號。在一般情況下,我們總是給過程起一個有意義的名字。
在輸入過程名後,按下鍵。這時,計算機會把屏幕上顯示的字符清除幹淨,進入定義模式(編輯狀態)屏幕顯示若在輸入TO命令後,你沒有按空格及過程名,計算機雖進入定義模式,但屏幕顯示中,第一行隻有光標。此時,你若要定義過程,請重新輸入過程的首部,即TO過程名。
二、過程
在輸入過程首部,進入定義模式後,就可以輸入過程體了。過程體是新命令所代表的基本命令的有序組合。例如,新命令代表邊長為50的正方形,那麼輸入:
在此重複命令後,按下鍵,我們發現,計算機並沒有執行該命令。這是什麼原因呢?原來,在定義模式下輸入命令時,計算機並不執行,而隻是把它們暫時保存起來,以備使用。
三、過程的結束語
當新命令所代表的有序命令組合過程體被輸入完畢後,請你按50命令。是一個英文單詞,表示某件事情已經完成或結束。這裏表示過程編製完畢。如果你在過程尾部忘記了輸入END結束命令,那麼可能會出現兩種情況。第一種,如果你隻定義了一個過程,或者你雖然定義了兩個以上的過程,但你忘記輸入的結束命令隻是最後一個過程的,那麼計算機將自動幫助你把END命令加在最後一個過程上。第二種情況,如果你定義了兩個以上的過程,而忘記鍵入結束命令的並不是最後一個過程,那麼計算機會認為你忘記鍵入END命令的過程和後麵一個過程是一體的。這樣,以後會出現麻煩,因此提醒大家不要忘記輸入END結束命令。說明已被定義,在此之後,LOGO提示符重新出現在屏幕上,計算機又回到了命令狀態。過程被定義,意味著該過程的過程體被放在內存中保存起來,並且計算機記下了該過程的名字。我們可以把過程的名字,看作是內存中用於存放該過程體的單元地址,例如,輸入計算就到叫做END的內存單元中,去尋找那裏的命令序列,並按順序把它們執行一遍。因此,每定義一個過程,就好像LOGO語言又被增加了一個新的命令。
在過程編寫完畢後,如果你按下的不是鍵,那麼過程體將不被保存,計算機退出定義過程模式,你剛才編寫的過程被廢棄。
至此,我們知道了,應如何定義一個過程,那麼,什麼過程呢?過程就是經過定義的,按照一定次序排列的,能夠完成某種操作的一組命令。
定義過程時,一行命令若超過40個字符,LOGO係統會在這行命令的最右端顯示一個“!”,而光標轉入下行的最左端繼續顯示一個命令行最長不得超過255個字符。
當教會計算機一個新命令,即定義了一個過程後,過程的名字一新命令可以多次使用,但切斷主機電源後,內存中的過程將全部被清除。
第二節過程的編輯
在定義過程時,可能會出現錯誤或要修改的地方,這時,我們可以用前麵學過的一些鍵進行修改。但是,如果按下鍵,定義了過程後,才發現已定義的過程有問題怎麼辦呢?其實,隻要重新進入定義過程模式,也稱編輯狀態,並使要被修改的過程顯示在屏幕上,就可以實現對該過程的修改或加工了。過程的編輯也就是對過程的修改或加工。
如何重新進入編輯狀態,使所需編輯的過程顯示出來呢?
一、編輯某一指定過程
該命令使計算機進入編輯模式,並在屏幕上顯示指定的某過程。我們也可以用“TO過程名”代替該命令,其效果與之相同。
例如,我們要對已定義的過程進行編輯,並假設要把該正方形的邊長增加至80步,那麼輸入:按回車鍵後,屏幕進入編輯模式。
在我們按下鍵後,被修改和加工了的新過程代替了原來的舊過程,但請注意,經過修改的過程的名字並沒有改變。一般來講,過程的名字不能修改,否則就等於又定義了一個新過程,內存中將同時存在新、舊兩個過程。
二、編輯所有的過程
ALL是英文“全部”、“所有”的意思。該命令用於編輯所有的過程。
也許我們使用的新命令不僅有一條,也就是說,已定義的過程可能有若幹個。假如我們要編輯所有的過程,就要把所有的過程顯示在屏幕上,並進入編輯狀態。
按下回車鍵後,計算機進入編輯模式,並顯示所有過程。
如果定義的過程很多,或者一個過程就很長,屏幕一時顯示不下,你可以使用?鍵,屏幕就向下翻一頁。你也可以在必要時,向上翻一頁。
三、兩個在編輯狀態下使用的鍵
目前,我們已經學習了一些功能鍵的用法,在這些功能鍵之中,有一些在命令狀態與編輯狀態下的用法有所不同。
第三節過程的調用及嵌套
定義了一個過程,就教會了計算機一種新命令。新命令可以LOGO基本命令一樣使用。新命令的使用,就是過程的調用。過程的調用有兩種方法:直接調用和間接調用。
一、直接調
在命令狀態下,按下已經定義好的過程名,並回車,計算機就會執行這個過程中的一係列命令。例如,前麵我們已經定義了一個過程,以後按並回車,海龜就會在屏幕上畫出一個半徑為30的圓。這種在命令狀態下,以直接輸入過程名來使用新命令的方法,過程的直接調用。
二、間接調用
除了可以直接輸入過程名,讓計算機執行新命令接調用外,還可以在定義其它過程時,把新命令作為基本命令來使用。這種使用新命令的方法過程的間接調用。