VB课件第4章循环结构.ppt

上传人:桔**** 文档编号:577011232 上传时间:2024-08-21 格式:PPT 页数:59 大小:467.10KB
返回 下载 相关 举报
VB课件第4章循环结构.ppt_第1页
第1页 / 共59页
VB课件第4章循环结构.ppt_第2页
第2页 / 共59页
VB课件第4章循环结构.ppt_第3页
第3页 / 共59页
VB课件第4章循环结构.ppt_第4页
第4页 / 共59页
VB课件第4章循环结构.ppt_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《VB课件第4章循环结构.ppt》由会员分享,可在线阅读,更多相关《VB课件第4章循环结构.ppt(59页珍藏版)》请在金锄头文库上搜索。

1、 采采用用循循环环程程序序可可以以解解决决一一些些按按一一定定规规则则重重复复执执行行的的问问题题。例例如如,统统计计一一个个班班几几十十名名学学生生,甚甚至至全全校校几几千千名名学学生生的的学学期期成绩,如求平均分、不及格人数等。成绩,如求平均分、不及格人数等。 本章主要内容 循环语句循环语句 For.Next / Do.Loop / While.Wend 循环出口语句循环出口语句(Exit) 多重循环多重循环 程序举例程序举例 4.3 4.3 循环结构设计循环结构设计 循环循环是指在指定的条件下多次重复执行一组是指在指定的条件下多次重复执行一组语句。被重复执行的一组语句称为语句。被重复执行

2、的一组语句称为循环体循环体。 VB提供的循环语句有提供的循环语句有: For.Next Do.Loop While/Until Do While/Until . Loop While.Wend 最常用的是最常用的是For.Next和和Do.Loop语句语句 按指定次数执行循环体按指定次数执行循环体 4.3.1 For.Next4.3.1 For.Next循环循环循环变量超过终值?循环变量超过终值?FT循环变量增加步长循环变量增加步长循环体循环体循环变量获得初值循环变量获得初值 格式:格式: For 循环变量初值循环变量初值 To 终值终值 Step 步长值步长值 循环体循环体 Next 循环变

3、量循环变量功能:功能:当循环变量的值在初值到终值范围内时,执行当循环变量的值在初值到终值范围内时,执行一次循环体的语句代码,并使初值增加一个步长。当一次循环体的语句代码,并使初值增加一个步长。当循环变量的值不在初值到终值范围内时,就退出循环,循环变量的值不在初值到终值范围内时,就退出循环,执行执行Next后面的语句。后面的语句。 说明:说明:循环变量是一个数值变量,初值、终值和步长循环变量是一个数值变量,初值、终值和步长值都是数值表达式,步长值可以是正数值都是数值表达式,步长值可以是正数(称为递增循环称为递增循环),也可以是负数,也可以是负数(称为递减循环称为递减循环);若步长值为;若步长值为

4、1,则,则Step 1可以省略。可以省略。说明说明:G循环次数的一般计算公式:循环次数的一般计算公式: Int(终值-初值)/步长)+1G事先已知事先已知循环次数,则可使用,则可使用For-Next循循环结构语句环结构语句计数循环 Private Sub Form_Load() ShowDim sum As Integer计算计算1 1至至100100的和,存放在的和,存放在sum中中显示结果显示结果 Print sum=; sum End Subsum = sum + 1 sum = sum + 1 sum = sum + 2 sum = sum + 2 sum = sum + 100sum

5、 = sum + 100sum = sum + ii = 1 100i = 1 100采用采用Print直接在窗体上输出结果直接在窗体上输出结果 Private Sub Form_Load() Show Dim sum As Integer Dim i As Integer For i = 1 To 100 sum = sum + i Next i Print sum=; sum End SubYesNosum = sum + ii = 1i = 100i = i + 1执行过程执行过程: :For i = 1 To 100 sum = sum + i Next i示例示例2 2: 求求T =

6、 8! = 1238 采用采用Print直接在窗体上输出结果,程序代码:直接在窗体上输出结果,程序代码: Private Sub Form_Load() Show t = 1 For c = 1 To 8 t = t * c Next c Print T=; t End Sub 程序运行结果是:程序运行结果是: T40320 语句语句t=t*c也称累乘器。先将也称累乘器。先将t置置1(不能置不能置0)。 在循环程序中,常用累加器和累乘器来完成各种计算任务。在循环程序中,常用累加器和累乘器来完成各种计算任务。如如果果要要求求N!呢呢?思考:思考: x=5 For i=1 To 20 Step 5

7、 x = x + i5 Next i思考:思考: s=5 For i=2.6 To 4.9 Step 0.6 s=s+1 Next i思考:思考: Private Sub Form_Click() x=5 : k=5 For k=1 To 10 Step -2 x=x+k Next k Print k; x End Sub思考:思考: Private Sub Form_Click() Dim sum As Double, x As Double sum=0 n=0 For i=1 To 5 x = n / i n = n + 1 sum = sum + x Next i End Sub 下面采

8、用下面采用“穷举法穷举法”来解此题。来解此题。 其做法是:从所有可能解中,逐个进行试验,若其做法是:从所有可能解中,逐个进行试验,若满足条件,就得到一个解,否则不是。直到条件满满足条件,就得到一个解,否则不是。直到条件满足或判别出无解为止。足或判别出无解为止。 令母鸡为令母鸡为x只,小鸡为只,小鸡为y只,根据题意可知只,根据题意可知 y = 100 x 开始先让开始先让x初值为初值为1,以后逐次加,以后逐次加1,求,求x为何值时,为何值时,条件条件3x+y/3=100成立。如果当成立。如果当x达到达到33时还不能使条时还不能使条件成立,则可以断定此题无解。件成立,则可以断定此题无解。 示例示例

9、3 3:100 100 元买元买100 100 只鸡,母鸡只鸡,母鸡3 3元元1 1只,小鸡只,小鸡1 1元元3 3只,问各应买多少只只,问各应买多少只? ? 采用采用Print直接在窗体上输出结果,程序代码:直接在窗体上输出结果,程序代码: Private Sub Form_Load() Dim x As Integer, y As Integer Show For x = 1 To 33 y = 100 - x If 3 * x + y / 3 = 100 Then Print 母鸡只数为母鸡只数为:; x, Print 小鸡只数为小鸡只数为:; y End If Next x End S

10、ub 运行结果:运行结果: 母鸡只数为:母鸡只数为:25 小鸡只数为:小鸡只数为:75 For.Next循循环环主主要要是是用用在在知知道道循循环环次次数数的的情情况况下,若事先不知道循环次数,可以使用下,若事先不知道循环次数,可以使用Do.Loop 循环。循环。 Do.Loop两两种种格格式式:前前测测型型循循环环结结构构和和后后测测型型循循环结构环结构。两者区别在于判断条件的先后次序不同。两者区别在于判断条件的先后次序不同。 4.3.2 Do.Loop4.3.2 Do.Loop循环语句循环语句循环体循环体F条件条件T先先判判断断循循环环条条件件,再再执行循环体语句。执行循环体语句。1. 1

11、. 前测型前测型Do.LoopDo.Loop循环循环 格式:格式: Do While | Until 条件条件 循环体循环体 Loop Do While.Loop语句的功能:语句的功能:当条件成立当条件成立(为真为真)时,执行循环体;当条件不成立时,执行循环体;当条件不成立(为假时为假时),终止循,终止循环。环。 Do Until.Loop语句的功能:语句的功能: 当条件不成立当条件不成立(为假为假)时,执行循环体,直到条件时,执行循环体,直到条件成立成立(为真为真)时,终止循环。时,终止循环。1. 1. 前测型前测型Do.LoopDo.Loop循环循环Private Sub Form_Loa

12、d() Dim sum As Integer, i As Integer Show i = 1 Do While i = 30 Print Number ;sEnd SubA) 0 1 B) 30 30 C) 4 30 D) 3 182运行下列程序,单击窗体,则执行结果是()Private Sub Form_Click() b=1 a=2 Do While b 10 b=2*a+b Loop Print bEnd SubA) 13 B) 17 C) 21 D) 33 运行下列程序,单击窗体,则执行结果是() Private Sub Form_Click( ) E = 1 : F = 1 For

13、 j = 1 To 3 E=E + F : F = F+ E Next j print E;F End Sub A) 6 6 B) 5 8 C) 13 21 D) 34 55l分析:本题可用分析:本题可用“累加累加”的方法来完成,设累加的和为的方法来完成,设累加的和为变量变量s,累加项为累加项为i2,则累加的语句可写为:则累加的语句可写为:s=s+i2l采用采用Do WhileLoop语句:语句: Private Sub Form_Click() Dim i As Integer, s As Long i = 1 s = 0 Do while i = 10 s = s + i 2 i = i

14、+ 1 Loop Print “s=”; s End Sub 示例示例5 5:用用DoloopDoloop语句求语句求s=1s=12 2+2+22 2+10+102 2 “辗转相除法辗转相除法”算法:算法:求出求出m/n余数余数p,若,若p0,n即为即为最大公约数;若最大公约数;若p非非0,则把原来的分母,则把原来的分母n作为新的分子作为新的分子m,把,把余数余数p作为新的分母作为新的分母n继续求解。继续求解。 设计步骤如下:设计步骤如下: (1) 创建应用程序的用户界面和设置对象属性创建应用程序的用户界面和设置对象属性示例示例6 6:输入两个正整数,求它们的最大公约数输入两个正整数,求它们的

15、最大公约数 编写的编写的“计算计算”按钮按钮Click事件过程代码如下:事件过程代码如下: Private Sub Command1_Click() Dim m As Integer, n As Integer, p As Integer m = Val(Text1.Text) : n = Val(Text2.Text) If m = 0 Or n = 0 Then MsgBox 数据错误数据错误! End End If Do p = m Mod n m = n n = p Loop While p 0 Text3.Text = m End Sub 若输入的若输入的m和和n的值为的值为85和和

16、68,则运行结果如上图,则运行结果如上图 用于提前退出循环用于提前退出循环 格式:格式: Exit For | Do 功能:功能:直接从直接从For循环或循环或Do循环中退出。循环中退出。 当当程程序序运运行行时时遇遇到到Exit语语句句时时,就就不不再再执执行行循循环环体体中中的的任任何何语语句句而而直直接接退退出出,转转到到循循环环语语句句(Next、Loop)的下面继续执行。的下面继续执行。 4.3.3 4.3.3 循环出口语句循环出口语句 示例示例5的循环语句可改为的循环语句可改为: Do p = m Mod n If p=0 Then Exit Do End If m = n n =

17、 p Loop While p 0 Text3.Text = m n 格式格式: While 条件条件 循环体循环体 Wend功能:功能:当条件成立当条件成立(为真为真)时,执行循环体;当条时,执行循环体;当条件不成立件不成立(为假为假)时,终止循环。时,终止循环。 本语句与上述本语句与上述Do While.Loop循环语句相似循环语句相似4.3.4 While.Wend4.3.4 While.Wend循环语句循环语句用下面的公式求用下面的公式求的近似值的近似值(直到最后一项的绝对值小于直到最后一项的绝对值小于1010-6-6为止为止):):分析分析l先计算等式右边的和先计算等式右边的和l累加

18、求和:累加求和: pi = pi = pipi + t + tl当当| t |= 0.000001 pi = pi + t n = n+2 s = - s 交替改变加、减号交替改变加、减号 t = s / n Loop Print =; pi * 4 End Sub 程序运行结果是:程序运行结果是: 3.141575 示例示例7 7:求求的近似值的近似值思考:思考: Private Sub Form_Click() For I=7 to 90 step 5 print I next I End Sub上述程序共执行执行循环体的次数是() A) 14 B) 15 C) 16 D) 17运行下列程

19、序,单击窗体,则执行结果是() Private Sub Form_Click( ) For j = 1 To 15 a = a + j Mod 3 Next j Print a End Sub A) 1 B) 15 C) 90 D) 120运行下列程序,单击窗体,则执行结果是() Private Sub Form_Click( ) For j = 1 To 3 Print Tab(3 * j);(2 * j - 1) * (2 * j - 1) Next j Print End Sub A) 1 B) 1 6 10 C) 1 9 25 D)1 6 9 10 25运行下列程序,单击窗体,则执行结

20、果是Private Sub Form_Click() s = 0 i = 1 Do While i =100 If (i 5) * 5 = i Then s = s + 1 i = i + 1 End If Loop Print sEnd Sub运行下列程序,单击窗体,则执行结果是Private Sub Form_Click() s = 0 i = 1 Do While i =100 If (i 5) * 5 = i Then s = s + 1 i = i + 1 else i = i + 1End if Loop Print sEnd Sub 在窗体上放置一个命令按钮,然后编写如下事件过程

21、: Private Sub Command1_Click() x=5 For i = 1 to 20 Step 2 x = x + i 5 next i Print x End Sub程序运行后,单击命令按钮,输出结果为()A) 21 B)22 C)23 D)24运行下列程序,单击窗体,则执行结果是() Private Sub Form_Click( ) For j = 1 To 10 a = a + j 3 + j Mod 3 Next j Print a End Sub A) 20 B) 25 C) 30 D) 35习题:依次输入5、4、3、2、1、-1Private Sub Comman

22、d_Click()X=0Do Until x=-1 a=InputBox(“请输入A的值”) a=Val(a) b=InputBox(“请输入B的值”) b=Val(b) x=InputBox(“请输入X的值”) x=Val(x) a=a+b+x print aLoopEnd Sub输出两个结果,分别是输出两个结果,分别是输出两个结果,分别是输出两个结果,分别是12121212和和和和2 2 2 2习题:依次输入5、4、3、2、1、-1Private Sub Command_Click()X=0Do Until x=-1 a=InputBox(“请输入A的值”) a=Val(a) b=Inpu

23、tBox(“请输入B的值”) b=Val(b) x=InputBox(“请输入X的值”) x=Val(x) a=a+b+xLoop print aEnd Sub输出结果只有一个,是输出结果只有一个,是输出结果只有一个,是输出结果只有一个,是2 2 2 2给定VB程序的功能是计算并输出100以内的所有能被3整除且个位数是6的所有整数,请将程序补充完整。 Private Sub Form_Click( ) Dim i , j As Integer For i = 0 To _ j = i * 10 + 6 If _ Then Print j End If Next i End Sub9j Mod

24、3 = 0 设计一个设计一个“加法器加法器”程序程序, 把每次输入的数累加,直到输把每次输入的数累加,直到输入非数值数据为止。入非数值数据为止。 Private Sub Form_Click() Dim Sum As Double, x As String, y As Double Sum = 0 Do While True 条件为真,循环无终止进行下去条件为真,循环无终止进行下去 x = InputBox(请输入要加入的数请输入要加入的数, 输入数据输入数据) If IsNumeric(x) = False Then Exit Do End If y = Val(x) Sum = Sum +

25、 y Text1.Text = Sum Loop MsgBox 累加运算结束累加运算结束” End Sub 示例示例8 8:设计一个设计一个“加法器加法器”程序程序 当一个循环里面包含有另一个完整的循环时,称为循环当一个循环里面包含有另一个完整的循环时,称为循环的嵌套。循环的嵌套对的嵌套。循环的嵌套对For循环和循环和DoLoop循环均适用。循环均适用。 多重循环程序示例多重循环程序示例 程序运行结果程序运行结果 Private Sub Form_Load() 1 5 Show 1 6 For i = 1 To 3 外循环外循环 1 7 For j = 5 To 7 内循环内循环 2 5 Pr

26、int i, j 2 6 Next j 2 7 Next i 3 5 End Sub 3 6 3 7 4.3.5 4.3.5 循环的嵌套循环的嵌套- -多重循环结构多重循环结构嵌套循环应注意的问题嵌套循环应注意的问题Do ForDo Loop NextLoop二重二重循环循环三重循环三重循环For和和Do循环可以混合嵌套,循环可以混合嵌套,但是各循环间但是各循环间不得交叉不得交叉。下。下例是非法的循环嵌套。例是非法的循环嵌套。For IFor JNext INext J就就和和我我们们一一层层层层的的包包裹裹东东西西是一样的!是一样的!错错!这些都对了!这些都对了!思考:运行下列程序,单击窗体

27、,则运行结果是_。 Private Sub Form_Click( ) For x = 1 To 2 a = 0 For y = 1 To x + 1 a = a + 1 Next y Print a; Next x End Sub结果是结果是 2 3运行下列程序,单击窗体,则运行结果是_。Private Sub Form_Click( ) N = 0 For I = 1 To 3 For J = 5 To 1 Step -1 N = N + 1 Next J, IPrint N; J; I结果是结果是 15 0 4 本本例例可可采采用用两两重重循循环环来来实实现现。外外循循环环控控制制输输出

28、出7行行,内循环控制每行输出要求的字符数。内循环控制每行输出要求的字符数。 在在进进入入内内循循环环之之前前,使使用用Tab( )来来对对起起始始输输出出位位置置定位,退出内循环后,使用定位,退出内循环后,使用Print来控制换行。来控制换行。示例示例9 9:编一程序,输出下列所示的图形编一程序,输出下列所示的图形 采用采用Print直接在窗体上输出结果,程序代码如下:直接在窗体上输出结果,程序代码如下: Private Sub Form_Load() Show For i = 1 To 7 Print Tab(8 - i); For j = 1 To 2 * i - 1 Print CStr

29、(i); Next j Print Next i End Sub 注意:注意:内循环变量和外循环变量不能同名内循环变量和外循环变量不能同名 ForNext 前测型前测型 s=0 s=0 : k=1 For k=1 to 10 Do While k=10 s=s+k s=s+k Next k k=k+1 Print s Loop Print s s=0 : k=1 do s=s+k k=k+1 Loop While k=3)Private Sub Form_Click() Dim x As Integer, a As Integer, c As Integer Dim count As Inte

30、ger count = 0 For x = 100 To 999 a = x 100 : b = x 10 Mod 10 : c = x Mod 10 If a b And a c And b c Then count = count + 1 Print x; If count Mod 10 = 0 Then Print End If End If Next xEnd Sub示例示例11 11 统计无重复的三位数,如统计无重复的三位数,如102102、103103示例示例12 12 求最大值或最小值问题求最大值或最小值问题求班级学生某一门课成绩的最高分 这就是一个求最大值的问题。先假设第一个成

31、绩就是班级最高分,然后从第二个成绩开始依次与假设的最高分比较,若有高于它的,则更新最高分,否则继续下一个成绩的比较,直至最后一个成绩 Private Sub Form_Click() Dim score As Single, max as single score = Val(InputBox(请输入第请输入第 & 1 & 个学生的成绩个学生的成绩:) Max =score For i = 2 To 20 假设班级人数为假设班级人数为20人人 score = Val(InputBox(请输入第请输入第 & i & 个学生的成绩个学生的成绩:) If score Max Then Max = s

32、core Next i Print Print 最高分为最高分为; MaxEnd Sub Private Sub Form_Click() Dim i As Integer, j As Integer For i = 100 To 200 For j = 2 To i - 1 If i Mod j = 0 Then Exit For End If Next j If j = i Then Print i; End If Next i End Sub示例示例13 13 输出输出100-200100-200之间的所有素数之间的所有素数 示例示例1414:打印打印“九九乘法表九九乘法表”两重循环;两

33、重循环; 采用采用Print直接在窗体上输出结果直接在窗体上输出结果Private Sub Form_Load() Show FontSize = 12 Print Tab(55); 九九乘法表九九乘法表 Print Tab(55); - Print For i = 1 To 9 For j = 1 To 9 If i * j = 10 Then Print i; *; j; =; i * j; Space(1); Else Print i; *; j; =; i * j; Space(2); End If Next j Print Next iEnd Sub 示例示例1414:打印打印“九九乘法表九九乘法表”? 示例示例1414:打印打印“九九乘法表九九乘法表”

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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