慶祝學呀
百萬
造訪!
尚未建立名稱
能量:0
我的帳號中心
問 學Bot 任何問題!
首頁&搜尋
最愛&收藏
所有課程
分享資源
帳號設定
關於學呀
線上募款
while迴圈
編輯章節
EDU-MD
Google 教室
加至書籤
# while ## 一個會重複的 if 判斷式 ![](https://www.webdevelopersnotes.com/wp-content/uploads/javascript-while-loop.png) ::: suggestion 這個章節的重點,在於帶領讀者理解物件導向的概念,而非介紹單一個程式語法。此章節的程式語法和 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 ![](https://i0.wp.com/www.zoltanraffai.com/blog/wp-content/uploads/2018/07/dif.jpg?fit=713%2C300&;ssl=1) ## 它們哪裡不一樣? 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` 呢? 提示:我們不知道使用者會輸入多少次才會輸入正確的密碼;換句話說,我們並不知道迴圈會重複幾次。
複製內容