計算機概論:C/C++程式設計
|
第4章. 反覆計算:迴圈 |
|
|
授課教師:陳慶瀚 WWW : http://www.miat.ee.isu.edu.tw/cpp E-mail : pierre@isu.edu.tw |
|
4.1 FOR 迴圈 for迴圈的基本結構如下: for(起始條件運算式; 繼續條件運算式; 每次迴圈循環後的遞增運算式 ) {
程式陳述; } 當程式執行到for迴圈, 會先執行起始條件運算式,這是一個迴圈開頭的位置,整個迴圈反覆執行的過程,不會再回到這個位置。因此我們通常把迴圈內部需要用到的控制變數宣告或變數初始值在此設定。至於第二個部分:繼續條件運算式,將在每一個循環結束時被執行,它的作用是判斷迴圈是否還要繼續,如果該運算式為false,則結束迴圈,如果是true,則執行遞增運算式後,繼續進行迴圈下一個循環。 如果迴圈內的陳述只有一行,則我們可以省略大括號{},也就是 for(起始條件運算式; 繼續條件運算式; 每次迴圈循環後的遞增運算式)
程式陳述; 後者的寫法雖然較為精簡,但是對於初學者,不管迴圈內的陳述式多行還是只有一行,我們仍然建議前者的寫法,因為對for迴圈加上大括號{}可以使程式更為清晰可讀,一旦程式需要異動時,也較不容易發生錯誤。 /*----------------------------------------------------*/ //
範例程式4-1 //
陳慶瀚,2001 /*----------------------------------------------------*/ #include
<iostream.h> void
main() { int
count; for(
count = 1; count <= 10; count = count + 1 ) { cout<<count<<"
"; } cout<<"\n"; }
範例 4-1輸出:
1 2 3 4 5 6 7 8 9 10 上述範例宣告一個整數型別的變數來當作計數器,變數名稱為count; 程式中for 迴圈的第一部分
count = 1; 是起始條件運算式,其目的在於將count 變數值設為1。 第二部分
count <= 10; 是繼續條件運算式,當運算式值為true時,for 迴圈將會繼續反覆迴圈中的程式,如果運算式值為false,則迴圈就會結束。 由於一開始變數count 被設為1, 上述條件判斷運算式count <= 10將得到true,因此迴圈中的程式陳述
cout<<count<<" "; 會被執行, 而在螢幕上輸出count 變數值1, 並在其後接一空白字元。至此完成迴圈的一次循環。 接下來, for 迴圈所剩下的第三部分(遞增運算式)將被執行:
count = count + 1 並使得變數count 中存放的值增加1。 流程控制(flow control)現在又會回到繼續條件運算式的判斷,
count <= 10; 判斷結果又再次為真(TRUE), 所以迴圈中的程式
cout<<count<<" "; 將再次的被執行。 變數count 中的值再次的被增加, 繼續條件判斷式再次的被測試……, 程式流程將被反覆的執行。直到變數count 中的值增加至11,情況才有所改變。 這時, for 迴圈中的繼續條件判斷式
count <= 10 將得到false的測試結果, 於是結束for 迴圈的全部循環,使得程式流程控制 (program control)將執行權轉移至迴圈外的下一行程式
cout<<"\n"; 在螢幕上輸出一空白行後,整個程式正常結束。 /*----------------------------------------------------*/ //
範例程式4-2 //
陳慶瀚,2001 /*----------------------------------------------------*/
#include <iostream.h>
void main()
{
char letter;
for( letter = 'A'; letter <= 'E'; letter = letter + 1 )
{
cout<<letter<<" ";
}
} 範例程式輸出
A B C D E /*----------------------------------------------------*/ //
範例程式4-3 //
使用for 迴圈來計算累加的範例 //
陳慶瀚,2001 /*----------------------------------------------------*/
#include <iostream.h>
void main()
{
int total=0, loop;
for(loop = 1; loop <= 10; loop = loop + 1 )
{
total = total + loop;
}
cout<<"Total = "<<total<<endl;
} 範例程式輸出
Total = 55 這個程式使用for 迴圈來計算累加1到10的累加值。第9行我們宣告變數loop,這個變數在起始條件運算式被設為1,隨後在每一次循環後依遞增運算式加1。遞增運算式也可以寫成
loop++; 因為只用到一個運算子++,所以會有更好的執行效率。 在大多數for迴圈,我們都使用控制變數(如loop)加1來控制迴圈循環的次數,但並不是非得加1不可,我們可以使用減1或者加2加3等等方式,例如
loop--;
loop=loop+2; 我們把範例程式4-3改成計算從1到10的奇數和,便使用了loop=loop+2。 /*----------------------------------------------------*/ //
範例程式4-4 //
使用for 迴圈來計算1到10的奇數和 //
陳慶瀚,2001 /*----------------------------------------------------*/
#include <iostream.h>
void main()
{
int total=0, loop;
for(loop = 1; loop <= 10; loop = loop + 2 )
{
total = total + loop;
}
cout<<"Total = "<<total<<endl;
} 課堂練習4-1: 寫一個程式,由使用者輸入一個整數N,計算sum = 。 課堂練習TD4-2: |
||
計算機概論:C/C++程式設計 義守大學電機系 陳慶瀚 |