VB 6.0 講義  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

補充講義: 迴圈

迴圈指令:
for 變數1 = 開始數字(變數) to 結束數字(變數) [ step 數字]

next

例1:
for I = 1 to 10

next
例2: 1+2+… + 10
sum =0
for I = 1 to 10
sum = sum + I
next I
print sum
例3: 1*2*… * 10
sum =1
for I = 1 to 10
sum = sum * I
next I
print sum
例4: 2+4+6+… + 10
sum =0
for I = 2 to 10 step 2
sum = sum + I
next I
print sum
例5: 印 1 , 2 , 3 , 4
sum =0
for I = 1 to 4
print I
next I
例6: 印 4 , 3, 2 , 1
sum =0
for I = 4 to 1 step -1
print I
next I
例7: 印出 5 , 8 , 11 , 14 , 17
sum =0
for I = 5 to 17 step 3
print I
next I
例8: 請做出一個程式, 會問使用者 累加的 開始數字,結束數字,差異數字,
然後算出累加的結果
a = InputBox("累加的開始數字", "累加程式")
b = InputBox("累加的結束數字", "累加程式")
c = InputBox("累加的差異數字", "累加程式")
Sum = 0
For I = a To b Step c
Sum = Sum + I
Next I
Print Sum
a = val(text1.text)
b = val(text2.text)
c = val(text3.text)
Sum = 0
For I = a To b Step c
Sum = Sum + I
Next I
Print Sum


迴圈和判斷可以組合應用

例9:請設計一個程式印出 1到 100 間, 有 2 或 3 因數的數字 (例: 2,3,6,8,9,…)

For I = 1 to 100
If I mod 2 = 0 or I mod 3 = 0 then
Print I
End if
Next I

例10:請用電腦求出以下1元2次方程式的兩個 x 的根
X2 + X - 6 = 0

For x = -100 to 100
If x^2 + x - 6 = 0 then
Print x
End if
Next x

例10:請用電腦求出以下1元2次方程式的兩個 x 的根
複雜的算式
For x = -10000 to 10000 step 0.0001
If複雜的算式 < 0.0001 then
Print x
End if
Next x

例10:某數 除以 13 餘 5 , 除以 17 餘 7 , 請問最小的某數 ?
For I = 1 to 1000
If I mod 13 = 5 and I mod 17 = 7 then
Print I
End if
Next I
發生無窮迴圈時, 可以按 ctrl + break 中斷

例11: 印出4個 @ 符號
for I = 1 to 4
print "@"
next

例12: 印出4個 @ 符號 [分號代表後續未印完, 還要再接
for I = 1 to 4
print "@" ;
next

例13: 印出以下的結果
@@@@
@@@@
@@@@
@@@@
( 第4,8,12,16 個@ 後, 不要接分號 )
for I = 1 to 16
if I mod 4 = 0 then
print "@"
else
print "@" ;
end if
next

例12: 印出4個 @ 符號 [分號代表後續未印完, 還要再接
for j = 1 to 4
for I = 1 to 4
print "@" ;
next
print " "
next

雙重迴圈

for 變數1 ….

for 變數2 ….

Next 變數2

Next 變數1

例:

for I =1 to 3
print "a"
for j = 1 to 2
print "b"
next j
print "c"
next i


例14: 印出以下的結果
@@@@
@@@@
@@@@
@@@@

for j = 1 to 4
for I = 1 to 4
print "@" ;
next
print " "
next

例15: 印出以下的結果
@
@@
@@@
@@@@

for j = 1 to 4
for I = 1 to j
print "@" ;
next
print " "
next

例16: 印出以下的結果
@@@@
@@@
@@
@

例17: 印出以下的結果
@@@@
@@@
@@
@

迴圈指令:
do while ( 條件判斷式 )

loop

例1:
a = 5
do while ( a>5 )
print "hello"
loop
' 不會印出 hello
例2:
a = 5
do while ( a>4 )
print "hello"
loop
' 印出 無窮多個hello
例3: 用do … loop 的寫法印出 10 個 Hello
a = 1
do while ( a<=10)
print "hello"
a = a +1
loop
'印出 10 個 Hello
例4: 求1+2+3+…+ x > 100, 問最小的 x 是 ?
sum = 0 ' sum 是用來存放累加值的
i = 0 ' I 是每次累加的值
do while ( sum<=100)
i = i + 1
sum = sum + i
print "sum=";sum;" i="; i
loop
print i
若問 1+2+3+…+x <=100, 最大的 x 是 ? 最後一行才是 print i-1

例5: 使用者要計算不固定個數的幾個數字的平均數
(假設使用者輸入0代表不再輸入了, 要把平均算出來)
b = 1
sum = 0
I = 0
do while(b<>0)
I = I + 1
a = inputbox("請輸入數字")
b = val( a )
sum = sum + b
Print "第"; i; "次 使用者輸入"; b
loop
print sum, I-1 , sum / (I-1)

迴圈for… next 和 迴圈 do … loop 的比較
1. 迴圈for… next 適合寫作 巳知次數 的迴圈
2. 迴圈do… loop 適合寫作 條件符合就執行的的迴圈 (次數不固定)
3. 迴圈for… next 較明確易讀
4. 迴圈do… loop 要小心控制, 避免產生無窮迴圈的產生