2012年2月24日星期五

TJS教學---while loop,while 迴圈

(k ゚∀゚)<今次開始介紹一下迴圈,迴圈是指一段在程式中只出現一次,但可能會連續執行多次的程式碼,今次我們先介紹一下while迴圈,while迴圈可以說是最簡單的迴圈,先看看以下的用法。

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 ゚∀゚)<今次先介紹到這裡,下次再見。

沒有留言:

發佈留言