VB教程(第五章).ppt_第1页
VB教程(第五章).ppt_第2页
VB教程(第五章).ppt_第3页
VB教程(第五章).ppt_第4页
VB教程(第五章).ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第5章 循环结构,在前面,我们学习了顺序结构和分支结构,本章我们将要介绍结构化程序3种基本结构的最后一种循环结构。,退出,5.1 循环概述 5.2 For循环 5.3 While循环 5.4 Do循环 5.5 循环的嵌套 5.6 循环的退出,5.1 循环概述,在实际工作中,常遇到一些操作过程不太复杂,但又需要反复进行相同处理的问题,比如,统计本单位所有人员的工资,求全班同学各科的平均成绩等等。这些问题的解决逻辑上并不复杂,但如果单纯用顺序结构来处理,那将得到一个非常乏味且冗长的程序。例如,计算1100所有奇数的平方和,如果用顺序结构来解决这个问题,我们就会给出下面的程序:,Private Su

2、b Form_Click() Dim s&,x% s = 0 x = 1 s = s + x 2 x = x + 2 s = s + x 2 x = x + 2 s = s + x 2 x = x +2 x的值累加到99 s = s + x 2 Print 1100之间所有奇数的平方和=;s End Sub,由上面的例子不难看出,程序的绝大部分是在反复执行两条语句x=x+2和s=s+x2,不同的是x的值在变化。程序当然非常简单易懂,但缺乏最基本的编程技巧。要想方便地解决这类问题,最好的办法就是用循环语句。 所谓循环就是重复地执行一组语句。 我们用循环语句解决上面的问题,程序非常简短:,Priv

3、ate Sub Form_Click() Dim s&,x% s = 0 For x = 1 To 99 Step 2 s = s + x 2 Next x Print 1100所有奇数的平方和=;s End Sub,在此程序中,第4、5、6条语句构成了一个循环,在循环过程中第5句被反复执行了50次,从而计算出了1100所有奇数的平方和。 通过上面的对比可知,循环结构非常适合于解决处理的过程相同、处理的数据相关,但处理的具体值不同的问题。我们把能够处理这类问题的语句称为循环语句。 VB提供了三种不同风格的循环语句,它们分别是: (1)ForNext语句; (2)WhileWend语句; (3)

4、DoLoop语句。 我们将对这3种循环语句逐一介绍。,5.2 For循环,For循环的一般格式如下: For 循环变量=初值 To 终值 Step 步长 循环体 Next 循环变量 说明:,1格式中各项的说明 循环变量:亦称为循环控制变量,必须为数值型。 初值、终值:都是数值型,可以是数值表达式。 步长:循环变量的增量,是一个数值表达式。一般来说,其值为正,初值应小于终值;若为负,初值应大于终值。但步长不能是0。如果步长是1,Step 1可略去不写。 循环体:在For语句和Next语句之间的语句序列。 Next后面的循环变量与For语句中的循环变量必须相同。,2执行过程 For循环语句的执行过

5、程如下: (1)系统将初值赋给循环变量,并自动记下终值和步长。 (2)检查循环变量的值是否超过终值。如果超过就结束循环,执行Next后面的语句;否则,执行一次循环体。 (3)执行Next语句,将循环变量增加一个步长值再赋给循环变量,转到(2)继续执行。 以上执行过程用流程图描述,如图5-1所示。,这里所说的“超过”有两种含义,即大于或小于。当步长为正值时,循环变量大于终值为“超过”;当步长为负值时,循环变量小于终值为“超过”。 我们通过分析下面的程序来进一步理解For语句的执行过程。 For n=1 To 10 Step 3 Print n, Next n,具体执行情况如下: 第几次循环n与终

6、值比较执行循环体否 1110停止执行 上面程序的执行结果为: 1 4 7 10,3注意事项 For语句和Next语句必须成对出现,缺一不可,且For语句必须在Next语句之前。 循环次数由初值、终值和步长确定,计算公式为: 循环次数=Int(终值初值)/步长)+1,【例5.1】求N!(N为自然数)。 分析:由阶乘的定义,我们可以得出N!=1*2*(N-2)*(N-1)*N=(N-1)!*N,也就是说,一个自然数的阶乘,等于该自然数与前一个自然数阶乘的乘积。,程序如下: Private Sub Form_Click() Dim I%,f&,n% n= InputBox(输入一个自然数:,输入提示

7、,10) f = 1 For I = 1 To n f = f * I Next I Print n;!=;f End Sub 程序的执行过程如图5-2所示。,程序如下: Private Sub Form_Click() Dim I%,n%,p# n = InputBox(请输入n的值(1-32767) p = 1 For I = 1 To n p = p *(4 * I * I)/(2 * I - 1)*(2 * I + 1) Next I p = 2 * p Print n=;n;时,=;p End Sub,5.3 While循环,前面我们介绍了ForNext循环,它适合于解决循环次数事先

8、能够确定的问题。对于只知道控制条件,但不能预先确定需要执行多少次循环体的情况,我们可以使用While循环。 While语句格式如下: While 条件 循环体 Wend,1While语句说明 “条件”可以是关系表达式或逻辑表达式。While循环就是当给定的“条件”为True时,执行循环体,为False时不执行循环体。因此While循环也叫当型循环。 2执行过程 While循环的执行过程(如图5-5所示): (1)执行While语句,判断条件是否成立。 (2)如果条件成立,就执行循环体;否则,转到(4)执行。 (3)执行Wend语句,转到(1)执行。 (4)执行Wend语句下面的语句。,结合下面

9、的程序段,我们做进一步的说明: x=1 While x5 Print x, x=x+1 Wend 该程序段的执行结果是: 1 2 3 4,3While循环的几点说明 (1)While 循环语句本身不能修改循环条件,所以必须在WhileWend语句的循环体内设置相应语句,使得整个循环趋于结束,以避免死循环。 (2)While循环语句先对条件进行判断,然后才决定是否执行循环体。如果开始条件就不成立,则循环体一次也不执行。 (3)凡是用ForNext循环编写的程序,我们都可以用WhileWend语句实现。反之,则不然。,【例5.5】假设我国现有人口12亿,若年增长率为1.5%,试计算多少年后我国人口

10、增加到或超过20亿。 人口计算公式为:p=y(1+r)n y为人口初值,r为年增长率,n为年数。 程序如下: Private Sub Form_Click() Dim p!,r!,I% p = 12 r = 0.015 I = 0,While p 20 p = p *(1 + r) I = I + 1 Wend Print I;年后,我国人口将达到;p;亿 End Sub 单击窗体,程序运行结果如图5-7所示。,5.4 Do循环,与前面介绍的While循环相比,Do循环具有更强的灵活性,它可以根据需要决定是条件满足时执行循环体,还是一直执行循环体直到条件满足。Do循环有两种语句格式。 格式1:

11、 Do while|until Loop,格式2: Do Loop while|until ,【例5.7】求两自然数m,n的最大公约数。 设计思想:(1)m除以n得到余数r; (2)若r=0,则n为要求的最大公约数,算法结束;否则执行(3); (3)nm,rn,再转到(1)执行。 程序如下: Private Sub command1_Click() Dim m%,n%,r% m = Val(Text1.Text),n = Val(Text2.Text) r = m Mod n Do Until r = 0 m = n n = r r = m Mod n Loop Print 它们的最大公约数是

12、;n End Sub 程序运行结果如图5-12所示。,5.5 循环的嵌套,在一个循环体内又包含了一个完整的循环,这样的结构称为多重循环或循环的嵌套。在程序设计时,许多问题要用二重或多重循环才能解决。我们前面学过的For循环、While循环、Do循环都可以互相嵌套,如在ForNext的循环体中可以使用While循环,而在WhileWend的循环体中也可以出现For循环等。 二重循环的执行过程是外循环执行一次,内循环执行一遍,在内循环结束后,再进行下一次外循环,如此反复,直到外循环结束。,【例5.8】打印九九乘法表。 分析:打印九九乘法表,只要利用循环变量作为乘数和被乘数就可以方便的解决。 程序如

13、下: Private Sub Form_Click() Dim i%,j%,str$ Print Tab(35);九九乘法表 For i = 1 To 9 For j = 1 To 9 str = i & & j & = & i * j,Print Tab(j - 1)* 9 + 1);str; Next j Print Next i End Sub 程序运行结果如图5-13所示。,对于循环的嵌套,要注意以下事项: (1)在多重循环中,各层循环的循环控制变量不能同名。但并列循环的循环控制变量名可以相同,也可以不同。 (2)外循环必须完全包含内循环,不能交叉。,【例5.10】求 分析:观察多项式

14、就会发现,奇数项为正,偶数项为负,各项分子的指数与分母的阶乘数相同,各相邻项指数相差为2。因此,可以设计一个二重循环,内层循环实现每项的计算,外层循环完成对各项的求和。,程序如下: Private Sub command1_Click() Dim x#,n&,s#,i%,j%,k#,p#,f% x = Val(Text1.Text) n = Val(Text2.Text) s = 0:f = -1 For i = 1 To n p = 1:k = 1,For j = 1 To 2 * i - 1 p = p * j k = k * x Next j f = f *(-1) s = s + f * k / p Next i Print sin(;x;)=;s End Sub 运行结果如图5-16所示。,5.6 循环的退出,前面讲述的循环,都是在执行结束时正常的退出。但在某些情况下,为了减少循环次数或便

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论