迴圈乍聽之下感覺好像只是一個簡化重複動作的小技巧, 但是您可能不會相信, 從畫面的更新到讀取資料, 都是迴圈大顯身手之處.
迴圈三部曲, 當然就是介紹三種不同的迴圈: For迴圈, While迴圈與Do-While迴圈.
三種迴圈功能上其實並沒有差太多, 其實是個人習慣上的問題.
先來介紹一下迴圈的基本概念, 不管是什麼迴圈, 都有一組條件式 (和if/then有點類似), 只要條件式為"真" (True) 迴圈就會繼續運轉, 反之, 條件式若為"偽" (false), 迴圈就會終止.
For迴圈 (For Loop), For迴圈的特色是對於固定次數 (fixed iterations) 的計算較方便使用.
While迴圈 (While Loop)的特色則是架構開放, 對於不固定次數的計算較方便使用.
For與While迴圈, 都是先檢查條件式再運行, 因此如果條件式本身就不成立的話, 那迴圈就完全不會運行.
而Do-While迴圈 (Do-While Loop)比較特別的就是該迴圈會至少運行一次, 再進行條件式檢查, 當然在這裡聽起來好像沒有什麼特別之處, 但是在某些特定的情況下Do-While迴圈就可以發揮作用.
先介紹For迴圈的寫法:
#include <iostream> using namespace std; int main() { int number=0; for(int x=0; x<5; x++) { number++; cout << number << endl; } } |
for迴圈的結構: for(迴圈變數, 迴圈條件, 迴圈更新動作)
迴圈變數是一個簡單的宣告, 如此範例的int x=0, 是宣告了一個x的整數作為迴圈次數計算用的變數.
迴圈條件就是和if/then是一樣的作用, 在這個範例中: 只要在x小於5的情況下迴圈就會自動運行.
迴圈更新動作代表的是: 當迴圈條件成立時, 迴圈執行完畢後的更新動作, 在這個範例中的x++ (其實是x=x+1的另外一種寫法) 的意思是如果迴圈執行完就將x增加1
而for()的下面的{}就是迴圈的內容了, 在這個範例中每當迴圈執行一次, number變數的數值就會增加1.
這個範例迴圈會總共會執行5次 (第一次是0, 第二次是1, 第三次是2, 第四次是3, 第五次是4, 第六次是5, 而5不小於5因此迴圈終止)
number變數的初始數值是0, 第一次迴圈執行數值增加到1, 第二次增加到2, 依次類推一直到5.
編譯並且執行這隻程式, 您應該會在螢幕上一個1, 2, 3, 4, 5 的數列. 如果您看到了那代表這個迴圈正常執行了.
可以試試看: 將條件設定為x<0 , 會發現螢幕上沒有輸出, 因為條件一開始就不成立, 迴圈並沒有執行
接著要介紹的是while迴圈:
#include <iostream> using namespace std; int main() { int x=0; int number=0; while(x<5) { number++; cout << number << endl; x++; } } |
While迴圈的結構就開放多了:
int number=0;
while(x<5) - 括弧中的是迴圈條件
{
number++;
cout << number << endl;
x++; - 這個是迴圈更新動作
}
從這邊應該不難看出, 比起for迴圈, while迴圈架構很方便, 這些變數高興放在哪裡就放在哪裡.
最後要介紹的是Do-While Loop, 這個迴圈就比較特別了:
#include <iostream> using namespace std; int main() { int x=0; int number=0; do { number++; cout << number << endl; x++; }while(x<5); } |
搞什麼, 跟While Loop沒有什麼兩樣啊...
現在請將後面的while(x<5)改成while(x<0), 也就是讓條件不成立, 然後再執行一次.
你會發現, 雖然條件不成立, 但是迴圈還是執行了一次, 在螢幕上留下了一個小小的1, 這就是這個迴圈的奧妙之處了.
下面這隻程式可以參考一下:
#include <iostream> using namespace std; int main() { int keyin=0; do { cout << "請輸入一個5:"; cin >> keyin; }while(keyin!=5); cout << "輸入正確" << endl; } |
來看一下程式邏輯:
這個迴圈的條件是使用者輸入(存於變數keyin)必須是一個正整數"5". 不管先前的變數數值為何, 迴圈都會先執行一次, 如果使用者輸入的數值不是5, 迴圈就會繼續執行, 直到使用者正確的輸入.
講完了迴圈的基本架構, 阿得在這邊順便介紹一下所謂的無限迴圈 (infinite loop), 這是許多人使用迴圈時常常犯的錯誤
看看下面這段程式 (但是不要編譯執行喔, 不然您的電腦可能會當機):
#include <iostream> using namespace std; int main() { int x=0; int number=0; while(x<5) { number++; cout << number << endl; } } |
看出了什麼了嗎?
這隻程式的while迴圈缺少了迴圈更新動作, 由於迴圈變數初始值是0, 而執行過後仍然是0, 因此此變數恆小於5, 換句話說就是這個迴圈永遠不會終結! 大家在使用迴圈的時候一定要特別小心這種錯誤.
留言列表