機
器
人
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
呢?
提示:我們不知道使用者會輸入多少次才會輸入正確的密碼;換句話說,我們並不知道迴圈會重複幾次。