Web:Bit 重複

在程式領域裡,重複 ( 迴圈 ) 是常常使用的基本功能,重複顧名思義就是重複執行的過程,也可以將需要重複執行的程式碼放在迴圈內,就能指定次數、延遲時間,或是無窮盡的執行。

重複積木清單

重複的積木分別有一個「等待」的積木,五種不同重複模式的積木和一個「停止重複」的積木。

Web:Bit 重複

等待

「等待」積木可以讓我們讓程式暫停一段指定的時間,當程式積木裡遇到等待積木,就會等待指定的時間之後才會進行接續的動作。

Web:Bit 重複

以下方的例子來說,如果不加上等待,四隻小怪獸會同時說出 hello,如果加上等待 1 秒,四隻小怪獸就會以每隔一秒的時間依序說出 hello。

注意,上述所謂的「同時」,是針對人類肉眼來說的意思,對於程式而言仍然是按照順序進行,只是間隔時間非常短,短到人類的肉眼分辨不出來

沒有加上等待積木

Web:Bit 重複

有加上等待積木

Web:Bit 重複

重複執行幾次

「重複執行幾次」積木,可以指定迴圈內的積木程式重複的次數,預設次數為 10 次。

Web:Bit 重複

透過重複十次,可以讓小怪獸旋轉 100 度。

Web:Bit 重複

延續前面介紹過的等待,如果在重複裡頭不加入等待,就會看見怪獸瞬間旋轉了 100 度,如果我們在加上等待 0.5 秒的積木,就會看到怪獸每隔 0.5 秒旋轉 10 度,旋轉十次。

Web:Bit 重複

計數

「計數」積木有點類似「重複執行幾次」積木的進階版,差別在於計數積木使用了一個變數,透過改變這個變數的數值,來決定重複幾次、如何重複以及重複的間隔。

因為內含一個變數,所以當編輯畫面裡有計數的積木,在變數的目錄下也會出現一個對應的變數。

Web:Bit 重複

使用「計數積木搭配等待」,可以讓綠色小怪獸每隔 0.5 秒講出變數 i 的數值,這個變數 i 會根據我們指定的起始數值、最終數值和間隔作數值進行遞增或遞減,以下圖的例子而言,變數 i 會每隔 1 進行加總,直到變成 10 為止 ( 也就會依序念出 1234...10 )。

注意,如果要「依序」唸出數字,一定要加上等待的積木,不然就會呈現最後的數字。

Web:Bit 重複

重複無限次

「重複無限次」積木會無止盡的一直執行迴圈內容,除非使用「停止重複」,重複的事件才會停止。

Web:Bit 重複

延續前面介紹過的等待,在重複無限次的積木內加入「等待」,搭配小怪獸的旋轉,就可以讓小怪獸不斷地旋轉。

Web:Bit 重複

判斷為真,就重複無限次

「判斷為真,就重複無限次」積木等同於「重複無限次」積木加上「邏輯」判斷,只要空格內的邏輯判斷為「真」( true ),就會開始進行無限重複

Web:Bit 重複

舉例來說,我們可以先設定一個變數 a 為 2 到 9 之間的數字,透過判斷如果 a 是偶數,就讓小怪獸開始旋轉,否則就不旋轉。

Web:Bit 重複

上面的例子也可以使用「邏輯」搭配「重複無限次」來實現同樣的效果。

Web:Bit 重複

取出陣列元素並執行

有別於上述的重複方式,「取出陣列元素並執行」積木是以陣列長度作為重複次數的依據,因此空格內必須放入陣列積木,網頁執行後就會依序取出陣列內容並執行對應動作。

Web:Bit 重複

我們可以設定變數 a 為一個陣列,裡頭放入五種水果名稱,接著設定一個變數 i,依序讓變數 i 等於水果名稱,再讓小怪獸講出水果名稱並進行旋轉的動作。

Web:Bit 重複

背景執行

「背景執行」是所有重複積木裡頭的功能選項,由於程式碼的執行順序緣故,「前一段程式尚未完成前,無法執行下一段程式」,也因此大多數的情況在畫面上只能同時執行一個重複迴圈,然而背景執行可以讓重複的動作進入背景執行,就能同時使用多個重複迴圈

Web:Bit 重複

舉例來說,如果我們使用兩個「重複十次」的積木,都不勾選背景執行,第一個放入小怪獸旋轉,第二個放入小怪獸移動,網頁執行後,就會看到小怪獸先旋轉再移動

Web:Bit 重複

如果我們把上面的例子中的重複,都勾選背景執行,網頁執行後就會發現小怪獸一邊移動一邊旋轉

Web:Bit 重複

是否有背景執行,在「重複無限次」的情況下會更容易發現差異,如果畫面中有兩個重複無限次的迴圈,如果沒有勾選背景執行,因為行為還停留在前一個重複無限次,在後面的重複無限次就不會執行

Web:Bit 重複

停止重複

上述所有的重複行為,都可以透過「停止重複」積木來停止,停止重複又分成「停止畫面上所有重複」,或「放在重複迴圈內,停止所在位置的重複」。

Web:Bit 重複

例如在「重複無限次」積木裡加入「小怪獸旋轉角度大於 90 度就停止這個重複」的判斷,就會在小怪獸角度大於 90 度時停止重複,繼續執行下方的講話程式。

Web:Bit 重複

如果有多個重複,也可以使用「停止所有重複」來停止,例如下方的程式,當小怪獸旋轉角度大於 90 度,就會停止所有重複。( 此處勾選了背景執行,請參閱「背景執行」章節 )

Web:Bit 重複