资源描述
For... Next循环语句
For…next循环简称为For循环。它是一种指定循环次数(事先知道循环次数)的循环程序结构。在这种结构中,使用了一个称为循环变量的特殊变量作为计数器,指定它的初始数值,然后每重复执行一次循环,循环变量就会自动增加或减少一个指定的数值(称为步长值),直到循环变量的改变达到最终的指定值,循环才停止执行。
1.For …Next语句的语法格式
For <循环变量>=<初值> To <终值> [Step步长]
[语句块]
[Exit For]
Next [循环变量]
功能:用来控制重复执行一组语句。指定循环变量以步长为增量,从初值到终值依次取值,并且对于循环变量的每一个值,把语句块执行一次。
说明:
(1)关键字For和Next成对出现,For是循环语句的开始,Next是循环语句的终端,必须出现在For语句的后面。在关键字For和Next之间的语句块叫循环体,它们将被重复执行指定的次数,执行的次数由初值、终值、步长值决定。
(2)初值、终值和步长值都是数值表达式,步长值可以是正数,也可以为负数。如果步长值为1,可以省略不写,即系统默认步长值为1。
(3)<循环变量>为必要参数,是用作循环计数器的数值变量,这个变量不能是数组元素。在循环体内,一般不提倡再给循环变量另外赋值。循环变量从初值开始,逐次按照步长值增加或减少而改变,直到超过终值,这时循环停止执行。这里所说的“超过”有两种含义:即大于或者小于。
(4)<初值>和<终值>也都是必要参数。当初值小于终值时,<步长值>必须是正数;反过来,如果初值大于终值,则步长值必须为负数。
(5)如果循环体中安排了Exit For 语句,当程序执行到该语句时直接跳出循环结构,不再执行循环体中Exit For的后续语句(如果有),而是转到Next后面的其他指令继续执行。
(6)Next语句中的[<循环变量>]可以省略。
2. For... Next语句的执行过程:
进入For...Next循环后,程序按照以下步骤执行:
(1)若初值、终值和步长值为表达式,求出它们的值,并保存起来:
(2)将初值赋给循环变量;
(3)判断循环变量值是否超过终值(初值小于终值,且步长值为正时,指大于终值;初值大于终值且步长值为负时,指小于终值);超过终值时立即跳出循环,执行Next之后的语句。否则继续执行循环体。
(4)遇到Next语句时,把循环变量的当前值加上步长值后再赋给循环变量。
(5)转到(3)。
执行的流程如图6-1所示。
3. For... Next循环的循环次数
从图6-1可以看出,For循环是先检测,后执行的循环形式。因此在下列2种情况下,循环体不会被执行:
(1)初值小于终值,步长值为负数
(2)初值大于终值,步长值为正数
(3)如果初值=终值,不论步长值是正数还是负数,均执行一次循环体后跳出循环。
循环的次数可以用以下公式表示:
循环次数 n = INT((终值 - 初值)/步长值 + 1)
例如,初值等于1,终值等于10,步长值等于2,则循环次数n为:
n = INT ((10 – 1)/2 + 1) = 5
例6-1:课前思考解答方法:用For... Next语句实现
分析:求从1到100共100个数的累加和,共需相加100次。每次数字变化(增值)为1,我们可以用变量S来保存累加和,并赋初值为0;变量k作为循环变量并作为加数(加到s中的数),设置其初值为1,终值为100,步长值为1(可以省略)。
设计步骤
(1)创建一个新工程,在窗体上添加如图6-2所示控件并设置控件属性,各控件属性如表6-1所示。
表6-1 各控件属性设置值
控件名
属性
属性值
Label1
Caption
“1+2+3+…+100 =”
Text1
Text
“”(空白)
Command1
Caption
“计算”
图6-2 程序界面
(2)编写程序代码。双击界面上的命令按钮,打开代码设计窗口给命令控件Command1编写如下代码:
Private Sub Command1_Click()
s = 0
For k = 1 To 100
s = s + k
Next k
Text1.Text = s
End Sub
(3)运行程序
运行程序后,单击命令按钮“计算”,文本框Text1中显示出计算的结果5050,如图6-3所示。
6-3 计算结果
例6-2:设计程序,计算级数13 + 23 + 33 + 43 +...,直到累加和超过200为止。
分析:本题也是一个求累加和的计算,但关键问题是不知道循环的次数到底是多少,无法设定循环变量的终值。我们可以事先将循环变量的终值设定为一个比较大的数,在循环体中用一个分支语句来检测累加的结果,只要累加和大于200时,就可以跳出循环,显示计算结果。
(1)建立应用程序用户界面并设置各控件对象初始属性,如图6-4所示。
图6-4 程序用户界面
(2)对命令按钮Command1编写Click事件代码:
Private Sub Command1_Click()
s = 0
For k = 1 To 100
s = s + k ^ 3
If s > 200 Then
Label2.Caption = "最后的项数是:" & k
Exit For
End if
Next k
Text1.Text = s
End Sub
(3)运行程序,结果如图6-5所示。
图6-5 程序运行结果
例6-3:设计程序,求100——999之间所有的“水仙花”数。所谓“水仙花”数就是指一个三位数,其各位数字的立方等于该数本身。例如,153 = 13 + 53 + 33,故153就是“水仙花”数。
分析:求解该题的的关键是如何从一个三位数中分离出百位数、十位数和个位数来。可以用以下方法进行分离:
设该三位数为I,由a、b、c三个数字组成,则:
(1)百位数a = INT(I/100),例如 INT(353/100) = 3
(2)十位数b = INT((I-100*a)/10),例如 INT((353-100*3)/10) = 5
(3)个位数c = I-INT(I/10)*10,例如 353-INT(353/10)*10 = 353-35*10=3
(1)设计用户界面,如图6-6所示。
图6-6 程序界面
(2)编写命令按钮Command1的Click事件代码如下:
Private Sub Command1_Click()
For i = 100 To 999 Step 1
a = Int(i / 100)
b = Int((i - 100 * a) / 10)
c = i - Int(i / 10) * 10
If i = a ^ 3 + b ^ 3 + c ^ 3 Then
Print
Print " ";
Print i
End If
Next i
End Sub
(3)运行程序,结果如图6-7所示。
4. For...Next语句的嵌套
单层循环可以解决一些简单的问题,但实际应用中有许多问题需要两层甚至更多层循环才能完成计算或处理。在一个循环结构中还包含另一个循环结构称为循环的嵌套。用For...Next语句构造循环嵌套结构,就是在For...Next语句中的循
环体部分再安排另一层For ...Next语句。嵌套的层数没有限制,但应满足以下规则:
(1)每层循环必须有一个唯一的变量名作为循环变量名;
(2)内层存循环必须完全放在外层循环的里面(外循环体内),内、外层循环不得相互交叉,如图6-8所示。
正确的循环嵌套 错误的循环嵌套(内外层相互交叉)
图6-8循环嵌套结构
例6-4:设计一个程序,打印乘法九九表。即打印1×1 = 1, 1×2=2,……9×9=81。
分析:先考虑怎样实现打印1×1 = 1, 1×2 = 2,……1×9 = 9。这只要一个简单的For循环结构就可以实现:
n=1
for j=1 to 9
s = n * j
Print s;
Next j
因为n被事先赋值为1,所以当循环变量j从1变到9时,打印的结果就是1×1 = 1, 1×2 = 2,……1×9 = 9。要打印2×1 = 2, 2×2 = 4,……2×9=18,就要将程序一开头的 n赋值为2。当需要打印整个九九表时,n的赋值就应从1开始,直到9为止依次改变。对应每个不同的n 的数值,执行一次j从1到9改变的For 循环。即n每次改变一个数值,j就从1变化到9,打印出n和j的乘积。这就提示我们要用到双层结构的For 循环程序结构来解决这个问题:
For n = 1 to 9
For j = 1 to 9
S = n * j
Print s;
Next j
Next n
这个双层循环的执行过程是这样的:
(1)把初值1赋给外层循环变量n (这个值一直保持到遇到外层循环的Next n后才改变)。然后开始执行外循环的循环体,即外循环For 和Next之间的其他语句。
这时因为外循环的循环体正好又是一个For... Next语句构成的循环结构,称为内循环,于是在n=1时,j就要从1变化到9,反复执行9次,打印出1×1 = 1到1×9 = 9。
(2)当内层循环被执行完毕后(j>9),程序才能够执行(遇到)Next n语句,于是n增值为2。现在n< 9,外循环的循环体还要被执行,这样就再次进入到内循环。因为n=2,于是这次内循环计算和打印的就是2×1 = 2到2×9=18。
(3)内存循环执行完毕后,再次遇到Next n语句,n增值为3,因为这时n依然小于9,所以还要继续重复上述过程。n的值由1依次变到9,最后一次打印出9×1 = 9到9×9 = 81。当n再次增值时,就超过终值9(n > 9)了,于是外层循环结束,整个程序执行完毕。
这里应注意到,每次n改变时,内存循环变量j都被重新赋初值1。
设计过程。
(1)新建一个工程,在窗体上添加一个命令按钮控件Command1,并将其Caption属性设置为“开始计算”,如图6-9所示。
图6-9 程序界面设计
(2)对命令按钮Command1编写Click 事件代码如下:
Private Sub Command1_Click()
Print
Print " *";
For i = 1 To 9
Print Tab(i * 6); i;
Next i
Print
For n = 1 To 9
Print n; " ";
For j = 1 To 9
s = n * j
Print Tab(j * 6); s;
Next j
Print
Next n
End Sub
(3)运行程序,结果如图6-10所示。
图6-10 程序运行结果
思考一下:程序中用到了表格函数Tab(j * 6),它的作用是什么?
展开阅读全文