while(條件式){ 陳述句1; 陳述句2; }
(k ゚∀゚)<當條件式成立時,這時就會執行下一句陳述句,之後吉里吉里再次檢查條件式是否成立,直到條件式不成立時才會離開迴圈。
有沒有一些例子?>( ゚ω゚ s)
(k ゚∀゚)<先想想以下的情況,現在我想顯示1至10的整數,如果不用迴圈的話,你會怎樣做?
唔……是不是寫成以下的模樣?>( ゚ω゚ s)
var message="1 2 3 4 5 6 7 8 9 10"; System.inform(message);
(k ゚∀゚)<正確,之後如果我想顯示到100,你會怎樣做?
未免太強人所難,這會花很多時間……>( ゚ω゚ s)
(k ゚∀゚)<這時可以使用迴圈來減少我們要寫的程式碼,看看以下的範例。
var count=1; var message=""; while(count<=10){ message+=count+" "; count++; } System.inform(message);
(k ゚∀゚)<在上述的範例裡,count的值一開始是1,而message是空字串,當到達while迴圈部分,吉里吉里會先檢查條件式是否成立,由於count的值是1,即是count<=10是成立的,吉里吉里就會執行while迴圈本體的部分,先執行message+=count+" ",所以message的字串的最後會加以count的值,之後count就會增加1,做完之後就再次檢查條件式是否成立,如此類推。
怎麼這個迴圈在什麼時候會停止?>( ゚ω゚ s)
(k ゚∀゚)<當條件式不成立時就會停止,若果count的值是10,count<=10是成立,那就執行while迴圈本體部分,之後count變成了11,這時條件式便會不成立,並且跳出迴圈。
(k ゚∀゚)<再看看以下的範例。
var count=10; var message=""; while(count>=1){ message+=count+" "; count--; } System.inform(message);
哦!今次的數值變成遞減。>( ゚ω゚ s)
(k ゚∀゚)<在上述的範例裡,count的值一開始是10,當到達while迴圈部分,由於count的值是10,即是count>=1是成立的,所以吉里吉里會執行while迴圈本體的部分,之後count就會減少1,再次檢查條件式是否成立,如此類推。
(k ゚∀゚)<當count的值是1,count>=1是成立,那就執行while迴圈本體部分,之後count變成了0,這時條件式便會不成立,並且跳出迴圈。
(k ゚∀゚)<再看看以下的範例。
var message=System.inputString("","請輸入名字",""); while(message === void || message == ""){ message=System.inputString("","請輸入名字",""); } System.inform("您的名字是"+message);
這是在做什麼?>( ゚ω゚ s)
(k ゚∀゚)<這是一個很常見的例子,我們利用迴圈來確保使用者已經輸入了資料,如果檢查到傳回來的是空字串(沒有輸入任何東西)或沒有傳回任何值(按了取消),就再次要使用者輸入,直到輸入了為止。
(k ゚∀゚)<不過要留意一下,若果一開始條件式就不成立,while迴圈本體就從來不會被執行。
(k ゚∀゚)<相反若果條件式永遠都成立的話,這個迴圈就無法停止,我們叫這種為無窮迴圈,以下是範例(請按住Ctrl + Alt + F12數秒,吉里吉里會強制終止)。
while(1){ System.inform("這就是無窮迴圈"); }
(k ゚∀゚)<由於條件式是1,即是true,這個迴圈是不會停止的。
既然不能停止,那麼無窮迴圈是不是不應該使用的?>( ゚ω゚ s)
(k ゚∀゚)<不是的,無窮迴圈經常應用到不同的地方,例如用在遊戲上,我們需要不斷地重複檢查玩家的輸入,從而決定程式要執行什麼。
(k ゚∀゚)<我們可以在while迴圈裡宣告變數,看看以下的範例。
var count=1; var message=""; while(count<=10){ var result=count*2; message+=result+" "; count++; } System.inform(message);
(k ゚∀゚)<但留意while迴圈裡宣告的變數只能迴圈裡使用,當一離開了迴圈,這變數就不存在,這意味著迴圈裡宣告的變數無法在迴圈外面使用,所以迴圈裡宣告的變數只用來進行迴圈裡的運算,例如在上述的範例裡,我們在while迴圈裡宣告了result這變數,那麼result只能用在while迴圈裡,若果在while迴圈以外的地方使用,就會發生錯誤。
(k ゚∀゚)<今次先介紹到這裡,下次再見。
沒有留言:
發佈留言