例1:
i=1
do
i=i+2
loop until i>17
这里执行了9次,当i=17时还要执行多一次使i=19,这时i才大于17结束循环
例2:
i=1
do
i=1+2
loop whilei<17
这里执行了8次,当i=15时执行循环使i=17,此时i不小于17所以不再执行循环
(e)for循环控制结构
格式:for 循环变量=初值 to 终值 [step步长]
[循环体]
next 循环变量
意思是当循环变量在[初值,终值]内时执行循环
循环次数=int(终值-初值)/步长+1
计算的时候要记得循环变量每执行完一次循环要加步长
当for循环用于多重循环时和和数组结合时比较复杂,现在举些例子吧
例1:for i=1 to 2
for j=1 to i
for k=j to 4
x=x+1
'print x '记为x1
next k
'print x '记为x2
next j
'print x '记为x3
next i
'print x '记为x4
这里我想说的是print x的位置与输出值的关系
当去掉'print x '记为x1这一行的第一个'时,执行结果是1234567891011(其实他是按竖着排列的),
当取掉'print x '记为x2这一行的第一个'时,执行结果是4 8 11(这也是竖着的)
当取掉'print x '记为x3这一行的第一个'时,执行结果是4 11(这也是竖着的)
当取掉'print x '记为x4这一行的第一个'时,执行结果是 11
为什么结果是这样呢?我们来分析下:
(I):当i=1,j=1,k=1 to 4,所以x=1,2,3,4,这里执行了四次循环
(II):
当i=2,j=1,k=1 to 4,所以x=5,6,7,8(因为上一次循环已使x=4了,所以在这基础上再继续加1),这里也执行了四次循环
当i=2,j=2,k=2 to 4,所以x=9,10,11(因为k=j to 4=2 to 4),这里执行了三次循环
好了,现在回过头取去看看语句
可以看出x1的值是每次循环得到的值,所以得出的结论是在最内一层的for语句里,所得到的值是每次循环的值
x2的值分别是j=1,j=1和2时循环的值的最后一个
x3的值分别是i=1,i=2时循环的值的最后一个
x4的值是全部循环结束后的值11
自己可以在草稿纸上画画,你会更容易理解的!
例2:Private Sub Command1_Click()
For i=1 To 4
x=4
For j =1 To 3
x=3
For k=1 To 2
x=x+6
Next k
Next j
Next i
Print x
End Sub
解释:真的有作用的是
x=3
For k=1 To 2
x=x+6
Next k
因为print x在循环外,所以是最后一次循环的值,当i=4时,x=4,但j=3时,x被重新附值为3,所以x=4无效,执行最后两次循环(k=1to2),x=3+6,x=9+6所以最后值为15
例3:这一道是循环跟数组结合的题
Dim a(3, 3) As Integer
Private Sub Command1_Click() '调用数组(不知道这样说正不正确)
aaa
For m = 0 To 2
For n = 0 To 2
Print a(n, m);
Next n
Print '使当m=0,1,2时得到的值换行
Next m
End Sub
Private Sub aaa()'定义数组
For m = 1 To 3
For n = 1 To 3
a(m - 1, n - 1) = m + n + 1
Next n
Next m
End Sub
这里要说的是用for循环给数组赋值时,第一层对应于数组的行,第二层对应于数组的列,再根据a(m - 1, n - 1) = m + n + 1求出数组aaa()里每一个的值,可以按下面的方法写出来,这样就简单明了得多了。
n=1 2 3
m= 1 3 4 5
2 4 5 6
3 5 6 7
例4:这是课本上183页上的一道题
Private Sub Command1_Click()
x=5
for i=1 to 20 step 2
x=x+i\5
next i
print x
End Sub
这里要说的是大家不要忘了next i这里,每次循环完了后i都要加步长,i=1,3,5,7,9,11,13,15,17,19,而1\5=3\5=0,5\5=7\5=9\5=1……
(f)关于传值跟传地址的问题
就是要记住:byval:形参改变时,实参不改变
byref:形参改变时,实参随之改变
这个也学得不是很好,大家学习时积累点经验吧!
二。上机部分
上机就是要做些模拟题,好象考的题里有很多都是以前考过的,在很多模拟题里有见过,而且考得如何还要靠运气,抽到容易的题过就应该没问题了,难的就惨了,所以要做多点模拟题。还有上机考试在要你读写文件时有一个小技巧的!