Visual Basic程序设计 第2版 普通高等教育十一五 国家级规划教材 教学课件 ppt 作者 吴昌平 第5章

上传人:w****i 文档编号:94771835 上传时间:2019-08-11 格式:PPT 页数:89 大小:493.50KB
返回 下载 相关 举报
Visual Basic程序设计 第2版 普通高等教育十一五 国家级规划教材 教学课件 ppt 作者 吴昌平 第5章_第1页
第1页 / 共89页
Visual Basic程序设计 第2版 普通高等教育十一五 国家级规划教材 教学课件 ppt 作者 吴昌平 第5章_第2页
第2页 / 共89页
Visual Basic程序设计 第2版 普通高等教育十一五 国家级规划教材 教学课件 ppt 作者 吴昌平 第5章_第3页
第3页 / 共89页
Visual Basic程序设计 第2版 普通高等教育十一五 国家级规划教材 教学课件 ppt 作者 吴昌平 第5章_第4页
第4页 / 共89页
Visual Basic程序设计 第2版 普通高等教育十一五 国家级规划教材 教学课件 ppt 作者 吴昌平 第5章_第5页
第5页 / 共89页
点击查看更多>>
资源描述

《Visual Basic程序设计 第2版 普通高等教育十一五 国家级规划教材 教学课件 ppt 作者 吴昌平 第5章》由会员分享,可在线阅读,更多相关《Visual Basic程序设计 第2版 普通高等教育十一五 国家级规划教材 教学课件 ppt 作者 吴昌平 第5章(89页珍藏版)》请在金锄头文库上搜索。

1、,第 5 章 循 环 结 构,在本章中,我们将要介绍结构化程序三种基本结构的最后一种循环结构。,5.1 循环概述,所谓循环就是重复地执行一组语句。 在实际工作中,常遇到一些操作过程不复杂但需要反复进行相同处理的问题,这些问题如果单纯用顺序结构来处理,将得到一个非常乏味且冗长的程序。,例如,计算1100所有奇数的平方和,如果用顺序结构来解决这个问题,我们就会给出下面的程序:,Private Sub 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

2、 x的值累加到99 s = s + x 2 Print “1100之间所有奇数的平方和=“; s End Sub,我们用循环语句解决上面的问题,程序非常简短: Private Sub Form_Click() Dim s s End Sub,VB提供了三种不同风格的循环语句,它们分别是: (1)ForNext语句; (2)WhileWend语句; (3)DoLoop语句。 我们将对这三种循环语句逐一介绍。,5.2 For循环,For循环的一般格式如下: For 循环变量=初值 To 终值 Step 步长 循环体 Next 循环变量,说明: 1格式中各项的说明 (1)循环变量: 亦称为循环控制变

3、量,必须为数值型变量。 (2)初值、终值: 都是数值型,可以是数值表达式。,(3)步长: 循环变量的增量,是一个数值表达式。一般来说,其值为正,初值应小于终值;若为负,初值应大于终值。但步长不能是0。如果步长是1, Step 1可略去不写。,(4)循环体: 在For语句和Next语句之间的语句序列。 (5)Next后面的循环变量与For语句中的循环变量必须相同。,2执行过程 For循环语句的执行过程如下: (1)系统将初值赋给循环变量,并自动记下终值和步长。,(2)检查循环变量的值是否超过终值。如果超过就结束循环,执行Next后面的语句;否则,执行一次循环体。,(3)执行Next语句,将循环变

4、量增加一个步长值再赋给循环变量,转到(2)继续执行。 以上执行过程用流程图描述,如图5-1所示。,图5-1 For循环语句执行流程,这里所说的“超过”有两种含义,即大于或小于。当步长为正值时,循环变量大于终值为“超过”;当步长为负值时,循环变量小于终值为“超过”。 我们通过分析下面的程序来进一步理解For语句的执行过程。,For n=1 To 10 Step 3 Print n, Next n,具体执行情况如下:,上面程序的执行结果为: 1 4 7 10,3其它说明 (1)循环次数计算公式为: 循环次数=Int(终值-初值)/步长)+1,(2)循环控制变量通常用整型数,也可以用单精度数或双精度

5、数。值得注意的是,无论初值、终值和步长值是什么数值类型,最后都要转换成循环控制变量的类型。,【例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(“输入一个自然数:“, “输入提示“, “10“),f = 1 For I = 1 To n f = f * I Next I Print n; “!=“; f End Sub,【例5.2】判断用

6、户输入的数是否为素数。 分析:素数的特征是只能被1和它自身整除。假设用户输入的正整数为N,我们只需确定在大于1小于等于的正整数中是否存在能整除N的数。如果有,则N就不是素数;如果没有,则N就是素数。,程序如下: Private Sub Form_Click() Dim n%, flag%, I%, k% n = InputBox(“请输入一个正整数(3)“) k = Int(Sqr(n) flag = 0 For I = 2 To k,If n Mod I = 0 Then flag = 1 Next I If flag = 0 Then Print n; “是一个素数“ Else Print

7、 n; “不是素数“ End If End Sub,【例5.3】求值。计算公式如下:,分析:不难看出,结果由n项分式相乘得到,只要给定了n值,用For-Next语句可以非常容易地实现。注意,n值越大,结果越接近值。,程序如下: 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 E

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

9、(3)执行Wend语句,转到(1)执行。 (4)执行Wend语句下面的语句。,图5- 5 While语句执行流程,结合下面的程序段,我们做进一步的说明: x=1 While x5 Print x, x=x+1 Wend,上面的程序就是在x5的条件下,重复执行语句print x。每次执行循环之前,都要计算条件表达式的值。如果条件求值的结果为True,则执行循环体,然后再对条件进行计算判断,从而确定是否再次执行循环体;如果结果为False,则结束循环,执行Wend下面语句。,该程序段的执行结果是: 1 2 3 4,3While循环的几点说明 (1)While 循环语句本身不能修改循环条件,所以必须

10、在循环体内设置相应语句,使得整个循环趋于结束,以避免死循环。,(2)While循环语句先对条件进行判断,然后才决定是否执行循环体。如果开始条件就不成立,则循环体一次也不执行。,(3)凡是用ForNext循环编写的程序,我们都可以用WhileWend语句实现。反之,则不然。,【例5.4】找出一个最大正整数N,使N!1000。 分析:该题就是要找到一个正整数,使它的阶乘最接近1000但又不超过1000。因此,我们应该将从1开始的自然数累乘,当积第一次大于1000时结束循环,累乘的最后一个数的前一个数即为所求。,程序如下: Private Sub Form_Click() Dim I%, p%, n

11、% I = 0 p = 1,While p 1000 I = I + 1 p = p * I,p = p / I n = I - 1 Print “N=“; n, n; “!=“; p End Sub,【例5.5】假设我国现有人口12亿,若年增长率为1.5%,试计算多少年后我国人口增加到或超过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

12、 Print I; “年后,我国人口将达到“; p; “亿“ End Sub,5.4 Do循环,与前面介绍的While循环相比,Do循环具有更强的灵活性,它可以根据需要决定是条件满足时执行循环体,还是一直执行循环体直到条件满足。Do循环有两种语法形式。,格式1: Do while|until Loop 说明: 格式1是先判断,后执行。其执行过程如图5-8、5-9所示。,图5-8 Do While Loop执行流程,图5-9 Do Until Loop执行流程,格式2: Do Loop while|until 说明: 格式2是先执行,后判断。其执行过程如图5-10、5-11所示。,图5-10 D

13、o Loop While执行过程,图5-11 Do Loop Until执行过程,值得注意的是,关键字While 用于指明条件成立时执行循环体,直到条件不成立时结束循环(如图5-8、5-10所示);而Until则正好相反,条件不成立时执行循环体,直到条件满足才退出循环(如图5-9、5-11所示)。,【例5.6】求。 我们用格式1实现,程序如下: Private Sub Form_Click() Dim s%, I% I = 1 s = 0,Do While I = 100 s = s + I I = I + 1 Loop Print “s=“; s End Sub,单击窗体,输出程序的运行结果

14、为: s=5050,【例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 “ 它们的最大公约数是“; n End Sub,5.5 循环的嵌套,在一个循环体内又包含

15、了一个完整的循环,这样的结构称为多重循环或循环的嵌套。 在程序设计时,许多问题要用二重或多重循环才能解决。,我们前面学过的For循环、While循环、Do循环都可以互相嵌套。 二重循环的执行过程是外循环执行一次,内循环执行一遍,在内循环结束后,再进行下一次外循环,如此反复,直到外循环结束。,【例5.8】打印九九乘法表。 分析:打印九九乘法表,只要利用循环变量作为乘数和被乘数就可以方便的解决。,程序如下: Private Sub Form_Click() Dim i%, j%, str$ Print Tab(35); “九九乘法表“ For i = 1 To 9 For j = 1 To 9,str = i Next j Print Next i End Sub,图5-13 例5.8 程序运行结果,对于循环的嵌套,要注意以下事项: (1)在多重循环中,各层循环的循环控制变量不能同名。但并列循环的循环控制变量名可以相同,也可以不同。,(2)外循环必须完全包含内循环,不能交叉。 下面的程序段都是错误的: For I=1 To 100 For I=1 To 100 For J=1 To Fo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号