PBASIC 程式設計/子程式
外觀
我們在迴圈章節中已經看到,很多時候我們希望多次重複某些程式碼塊。迴圈依次重複這些程式碼塊,但是如果我們希望在不同的時間重複一個程式碼塊呢?
我們可以使用一個叫做子程式的特殊工具來使程式碼塊可重複。我們可以在程式中的任何地方“呼叫”我們的子程式,當子程式結束時,控制流將跳回它所在的位置。
當我們把控制流移入子程式時,我們說我們“呼叫”了子程式,或者我們“進入”了它。同樣,當子程式完成後,我們說我們“退出”了子程式,或者我們“從它返回”。
子程式以一個標籤開頭。我們不使用 GOTO 跳轉,而是使用 GOSUB 指令進入子程式。GOSUB 做兩件事
- 它跳到子程式的標籤,就像一個普通的 GOTO
- 它儲存指令指標的舊值,以便在子程式之後,控制流可以返回到它所在的位置。
第二點很重要,因為它允許我們返回到我們之前的位置。
RETURN 指令在子程式的末尾載入指令指標的儲存值。
一個基本的子程式看起來像這樣
MySubroutine: ... 'Do this in the subroutine RETURN
使用子程式的一個主要好處是,它們有助於使你的程式碼對其他人更容易閱讀。許多時候,編寫程式的人會非常理解它,但它對其他人來說可能不太明顯,比如團隊成員。例如,如果我們有一個使用 BasicStamp 的機器人,我們希望讓這個機器人以正方形的形狀走動,我們可以使用子程式來輕鬆地做到這一點
GOSUB MoveForward GOSUB TurnRight GOSUB MoveForward GOSUB TurnRight GOSUB MoveForward GOSUB TurnRight GOSUB MoveForward GOSUB TurnRight
或者,我們可以將我們的子程式與迴圈結合起來,使它更容易
FOR MyCounter = 1 TO 4 GOSUB MoveForward GOSUB TurnRight NEXT
MoveForward 或 TurnRight 的子程式可能非常複雜,但任何人都可以閱讀上面的程式碼塊,並理解機器人將做什麼。