while



一個會重複的 if 判斷式



這個章節的重點,在於帶領讀者理解物件導向的概念,而非介紹單一個程式語法。此章節的程式語法和 JavaScript 等程式語言相近,但並非任何真實程式語言。請專注於章節中的概念部分,而非語法部分。

while 迴圈,其實就只是一個一直重複運作的 if,怎麼說呢?讓我們複習一下 if 判斷式:

a = 3;
b = 2;
if(a > b){
    print("a比b大!");
}

假設 if 後面的括號 () 裡,條件成立,那麼電腦就會執行大括號 {} 裡的內容,而 while 迴圈也是如此:

a = 3;
b = 2;
while(a > b){
    print("a比b大!");
}

唯一的差別就是,電腦在執行完大括號 {} 裡的內容後,會在回到一開始,重複整個 while 迴圈除非括號 () 裡的條件不成立,電腦才會終止迴圈。讓我們換一個例子:

c = 0;
while(c < 10){
    print(c);
    c += 1;
}
print("finished!);

讓我們試著把自己想像成電腦,在腦海中跑一次迴圈。一開始,c 是 0,所以 c < 10 成立,因此會執行大括號 {} 內的程式,而因為 c += 1,因此 c 現在的值是 1。接著我們回到迴圈的開始, c 是 1,所以 c < 10 成立,因此執行大括號 {} 裡面的程式,而同時 c 也變成了 2。就這樣一直迴圈下去,到了 c = 9 時, c 依舊小於 10,因此我們執行大括號 {} 裡的程式,c 變成了 10。我們一樣回到迴圈的開始,發現此時 c == 10 ,所以條件不成立,於是我們終止迴圈,跳到下一行,並印出「finished! 」字樣。


while 和 for




它們哪裡不一樣?


for 和 while 兩者間的不同,只在於它們計算次數的概念不同。兩者皆會重複執行大括號 {} 裡的程式碼,但對於「重複幾次」,它們不同了。讓我們用一個最易懂的例子:

for(i = 0; i < 10; i++){
    do_something();
}

condition = true;
while(condition){
    if(something_happens) condition = false;
}

我們可以很明顯地看出, for 迴圈總共會執行 10 次,但我們卻不能知道 while 迴圈執行幾次。在第二段程式碼裡,迴圈會不停地執行,直到某件事發生了,讓條件式不成立,電腦才會結束迴圈。


想想看


試著想出幾個真實世界中需要用到迴圈的情境,你會使用 while 迴圈還是 for 迴圈呢?

舉例來說,如果今天我們想要製作一個密碼的檢查程式,會一直要求使用者輸入密碼,直到使用者輸入了正確的密碼才結束迴圈。那麼你會使用 while 還是 for 呢?

提示:我們不知道使用者會輸入多少次才會輸入正確的密碼;換句話說,我們並不知道迴圈會重複幾次。

上一章節
下一章節
使用者分享的影片來自 YouTube。瞭解更多
+1 
感謝內容貢獻者 此篇文章由 1 位使用者共同編輯而成,並且由學呀的編輯團隊負責維護。點此查看編輯者名單。