For Next 計次執行迴圈的用法
會不會使用For Next往往是成功的關鍵
大學教授也很喜歡考你For Next的用法
他可能會叫你寫出一個1加到100的程式
如果你第一次聽到,你可能會覺得很難…….
有人會說,我只要連續從1一直寫到100相加就好了阿(1+2+3+4+5+6+7+….+100)
雖然這樣寫也可以執行的出來,可是這個答案就不是教授問這個問題的本意
那要怎麼寫呢? 別急,慢慢來……
For Next撰寫格式:
For 計次變數 = 起始值 To 終止值 (Step 步進值)
敘述區塊
Next (計次變數)
( )內的可以省略,但會影響執行結果
省略「Step 步進值」的話,將等於「Step 1」
第一次執行此迴圈時,計次變數會被設定為起始值,第一次以後執行迴圈時計次變數會再加上步進值,迴圈會判斷加上步進值後的數值有沒有超過終止值,若超過了,則會跳出迴圈
舉例來說:
For I = 1 To 10
Print I
Next I
我們喜歡把「I」當作是計次變數,但其實也可以改換成別的變數
以上的程式首先進入迴圈時 I = 1 ,接著會列印出I,也就是1
因為1+步進值1 並未超過終止值10 ,所以還會再執行一次迴圈
此時 I = 2 ,所以會列印出2,依此類推
當迴圈計次變數達到10後,迴圈會判別10加上步進值1 是否會大於終止值10
答案是肯定的,所以程式將會跳出迴圈
此時表單上就列印出1~10了!
按下「Command1」
將上面的程式做改變
For I = 1 To 10 Step 2
Print I
Next I
執行結果將會變成↓
若要從10顯示到1則要寫成:
For I = 10 To 1 Step -1
Print I
Next I
步進值也可以為負
執行結果將變成↓
.
For Next 也可以跟For Next合用,就是For Next裡面還有For Next,即為巢狀迴圈
.
利用For Next做連續加法(大學教授常考)
如果我們要寫一個1加到100的程式,要怎麼寫呢?
其實很簡單,只要將一個值為0變數,連續加迴圈的計次變數即可
示範:
For I = 1 to 100
Sum = Sum + I
Next I
Print Sum
Sum如果從來沒有置入數據的話,將預設為0
Sum = Sum + I 意思是說,現在的Sum要等於先前的Sum再加I
第一次執行迴圈時I = 1 , Sum = 0,所以Sum = 0 + 1,Sum會變成1
第二次執行迴圈時I = 2 , Sum = 1,所以Sum = 1 +2 ,Sum會變成3
第三次執行迴圈時I = 3 , Sum = 3,所以Sum = 3 +3 ,Sum會變成6
依此類推,當執行到第100次時,I = 100 , Sum = 4950,所以Sum = 4950 +100 ,Sum會變成5050
然後跳出迴圈,列印(輸出)出Sum的值「5050」
上面的程式頗為精簡,完整的寫法為
Dim I , Sum As Integer
Sum = 0
For I = 1 to 100
Sum = Sum + I
Next I
Print Sum
Dim就是宣告,Integer是整數
就是宣告I和Sum為整數的意思
然後將Sum一開始以0代入
進入迴圈做加法動作
.
平方相加或其它次方相加也很常考
如果要寫一個1平方加3平方加5平方加7平方一直加到99平方,要怎麼寫呢?
其實很簡單,以下是示範:
For I = 1 To 99 Step 2
Sum = Sum + I ^ 2
Next I
Print Sum
因為都是平方,我們無需考慮到它的指數
它的底數是很有規律的,一直加2,加到99
所以For I = 1 To 99 Step 2
然後Sum = Sum + I ^ 2
I ^ 2 就是I平方 ,依此類推
執行完迴圈後所得到的值為166650
.
再舉個例子,1+2平方+3立方+4的四次方+……+10的十次方,這要怎麼寫呢?
這個問題也很簡單,別被他的指數給唬住了
仔細一看它的底數都等於指數,所以…
For I = 1 To 10
Sum = Sum + I ^ I
Next I
Print Sum
計算結果,Sum等於10405071317
.
還有一個比較簡單的例子
1+2立方+3的五次方+4的七次方+5的九次方+….+10的19次方
注意觀察規律,指數的值等於底數的兩倍減一
所以可以寫成
For I = 1 To 10
Sum = Sum + I ^ (I * 2 – 1)
Next I
Print Sum
.
最後一個比較難的例子,需用到巢狀迴圈
1+1平方+1立方+2+2平方+2立方+3+3平方+3立方+…..+5立方
上面的式子,可以撰寫成下列程式碼
For I = 1 To 5
For A = 1 To 3
Sum = Sum + I ^ A
Next A
Next I
Print Sum
I是底數,A是指數
剛開始執行I迴圈I =1 ,然後執行A迴圈A=1
A迴圈執行到第三次後,跳出A迴圈,執行I迴圈,I = 2
然後重新執行A迴圈A = 1,依此類推
第一次執行A迴圈,I = 1 , A = 1 , Sum = 0 ,所以Sum = 0 +1的一次方 = 0 +1 ,Sum會變成1
第二次執行A迴圈,I = 1 , A = 2 , Sum = 1 ,所以Sum = 1 +1的平方= 1 +1 ,Sum會變成2
第三次執行A迴圈,I = 1 , A = 2 , Sum = 2 ,所以Sum = 2 +1的立方= 2 +1 ,Sum會變成3
第四次執行A迴圈,I = 2 , A = 1 , Sum = 3 ,所以Sum = 3 +2的一次方= 3 +2 ,Sum會變成5
第五次執行A迴圈,I = 2 , A = 2 , Sum = 5 ,所以Sum = 5 +2的平方= 5 +4 ,Sum會變成9
第六次執行A迴圈,I = 2 , A = 3 , Sum = 9 ,所以Sum = 9 +2的立方= 9 +8 ,Sum會變成17
依此類推,當最後一次執行A迴圈時,I = 5 , A = 3 , Sum = 170 ,所以Sum = 170 +5的立方= 170 +125 ,Sum會變成295
.
本篇教學到此結束,有問題可發表迴響