正如我們前面提到的,過程應當執行單一的、明確定義的任務。但是為了執行多個任務,通常都希望在過程中調用其他過程,這在Scratch中是完全可行的。過程的嵌套提高了程序在結構化和組織上的靈活性。
我們通過畫兩個有趣的圖形為例來學習本節的內容。
首先定義一個畫正方形的過程
其次定義一個畫多個正方形的過程(調用上面的過程)
最后定義一個旋轉正方形的過程(調用上面的過程)
繪制的圖形如下
過程的嵌套是不是非常強大呢?
我們再看一個案例。這次仍從Square過程開始,最終繪制一個棋盤。
首先創建繪制一排正方形的過程Row,如下圖所示。注意,正方形的個數使用參數count指定。為了讓程序簡單,我們規定正方形的邊長為20,當然也可以將其作為過程Row的第二個參數。
上圖右展示了當過程RoW的參數為4的繪制結果,其中調用了四次 Square 20 steps。每繪制一個正方形,角色的位置會向右移動20步,從而為下一次繪制做好准備。在四個正方形全部繪制完后,最后一塊積木命令角色回到最初的位置。
若要繪制上圖所示的下一排正方形,只需要將角色向下移動20步后調用過程Row即可。因此,重復調用過程Row就能繪制任意行數,如下圖所示的過程Checkers。
過程 Checkers有兩個參數:行數和列數。當某行繪制完畢后,角色向下移動20步,為繪制下一行做好准備。本節的例子說明了程序划分為更小、更易管理的片段的重要性。對復雜的程序來說,我們可以復用已經編寫好並通過測試的過程,甚至在其基礎上繼續構建過程,而不需要過分擔心底層是如何實現的。這樣便能將自己的精力放在最需要解決的問題上。