


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章循环结构程序设计第5章循环结构程序设计第5章循环结构程序设计循环是指在程序设计中,从某处开始有规律地反复执行某一程序块的 现象。例如:计算2n。如果这样计算:s=1s=s*2s=s*2s=s*2很显然,这不是解决问题的方法在程序设计中要解决此问题,就需 使用循环结构语句使用了循环结构编写程序,可以简化程序;避免重复的不必要的工作; 提咼编程效率。VB提供三种不同风格的循环结构,包括:当循环(While-Wend循环) Do循环(Do-Loop循环) FOR 循环(For-Next 循环)其中For循环按规定的次数执行循环体,而当循环和Do循环则是 在给定的条件满足时执行循环体。、Whil
2、eWend语句(当循环语句)1、格式:While 条件语句序列Wend上述格式中,“条件”为一布尔表达式,用以指定循环条件。2、功能:根据条件进行判断,决定是否执行循环体。3、执行过程:如果“条件”为True(非0),执行由“语句序列”组成的循环 体,当遇到Wend语句时,控制语句返回到 While语句,并对“条件” 进行测试,如果仍为True,则重复上述过程。如果“条件”为False, 则不再执行循环体内容,而转去执行 Wend后继语句,跳出循环。执行流程如图所示。4、举例例5_1_1计算2n程序:Dim n#, s#, k&n = lnputBox(input n)s = 1k = 1Wh
3、ile k = ns = s * 2k = k + 1WendPrint s=; s循环计算D条件(K5不满足循环,跳出傭环例 5_1_1a 计算x = 1 + 2 + 3 +程序:Dim n#, s#, x&n = lnputBox(input n)s = 0x = 1While x = n s = s + x x = x + 1WendPrint s=; s55 = VlV = 1 + 2 + 3 + 4+5条件(X=5)程序执行情况S值xfi初始值011=5满足条件执行掘环体语句1?2 =5满足条件,执行碱环体语句355=5满足条件执丽环体语句644 =5满足条件,执行猛环体语句1055
4、5=5,-口 r尸L b |n例5_i_ib 计算 S = ri x=n“1*2*3*XTDim n#, s#, x& n 二 In putBox(i nput n)s = 1x = 1While x = n s = s * xx = x + 1 Wend Prin t s=; s5s 二 JP 二 5!二 1*2*3*4*5条件(X=5)程序执行情况SfiX值初始值111=5满足条件,执行循环体语甸122=5满足条件,执行施环体语句255=5厲足条件,执fflS环体语句644=5满足条件,执fil环体齣24555不满足条件,跳蛹环, 执ft Wend后继语句例5_1_2从键盘上输入一串字符(
5、每次输入一个字符),以“!”结束, 并对输入字符中的字母个数和数字个数进行统计。分析:需要输入的字符个数没有指定,停止计数的条件是输入字 符为“ !”,所以用whilewend语句是合适的。程序中,变量ch接受键盘输入的字符,变量 T1, T2分别用于统 计字母,数字的个数。Private Sub command1_click()Dim ch$, T1%, T2%CisT1 = 0: T2 = 0While ch !ch = lnputBox(请输入一个字符:)If ch = a And ch = A And ch =a and Lcase(ch)v=zT1 = T1 + 1Elself ch
6、 = 0 And ch v= 9 ThenT2 = T2 + 1End IfWendPrint 字母个数:;T1Print 数字个数:,T2End Sub5、说明1. WhileWend循环语句先对“条件”进行测试,然后才决定是 否执行循环体。如果进入循环体之前,“条件”为False,则一次也不 执行循环。因此,进入循环体之前应正确设置循环条件。2. 循环体内应该有修改循环条件的语句,使得循环能正常执行和 终止。否则,会出现死循环,这是程序设计中容易出现的错误,应当尽量避免。一旦出现“死循环”现象,可按下“ Ctrl+Break ”键强行 退出。2、DoLoop语句Do循环有两种:1、先判断后
7、执行Do While|Until 条件 Loop2、先执行后判断Do Loop While|Until 条件一、先判断条件形式1. 格式:Do While| Until 条件 语句块Loop2.功能:While当条件为True时循环。Until当条件首次为 True时退出。3举例例 5_2_1 用 Do while Loop改写例 5_1_1程序:n=val(inputbox( “input n ” )s=1k=1Do while kv=ns=s*2k=k+1Loopprint s= ;s可以看出,Do WhileLoop和 WhileWend语句功能相 同。改写例5_1_1a例 5_2_3
8、计算 S=1+2+3+100程序:Private Sub Form_Activate() Dim s&, x&s = 0x = 1Do While x v= 100也可以用 Do Until x 100s = s + xx = x + 1 LoopPrint s=; s End Sub例5_2_2输入一个正整数(3),判断其是否为一素数。 分析:所谓素数是指除了 1和该数本身外,不能被任何整数整除的数。 可以依次用2X-1作除数去除X (X=3),若X不能被其中任何一个 数整除,则X为素数。程序:Private Sub Command1_Click()Dim x&Cisx = lnputBox
9、(输入一个整数 X,( X=3)flag = Truei = 2Do While i = x T理论证明判断至 X即可,即SQR(x)If x Mod i = 0 Then flag = Falsei = i + 1LoopIf flag ThenPrint x & 是一个素数。ElsePrint x & 不是一个素数。End IfEnd Sub例5_2_4求SIN(x)的级数展开的值其中:x xY=sinx二一-1! 3! 5! 7!-X2有以下关系:Pn= Pn-1 (2n-1)(2n-2)(n=2,)P i=X程序:Private Sub Form_Activate()Dim y#, x
10、#, p#, n%x0 = Val(InputBox(输入角度值 X)n = InputBox(输入 N 的值)/ 180将角度值转换为弧度值p = xy = pi = 2Do While i = np = p * (-x * x / (2 * i - 1) * (2 * i - 2)y = y + pi = i + 1LoopPrint sin( & x0 & )= & yEnd Sub例5_2_5打印图形,如下:*程序:Private Sub Form_Activate()FontSize = 30i = 1Do While i =1也可用语句 Do Until b 1Print Tab(
11、20 - 2 * b); Right(A, b)函数Left、right、mid、len把一个汉字或全角字符中非字 母和数字的字符视为一个字符位,但是函数Tab、Space仍把一个汉字作为两个字符位b = b - 1LoopEnd Sub二、后判断条件形式1 .格式:DoLoop While| Until 2. 功能:至少执行一次循环。While当条件为True时循环。Until 当条件为True时退出。3. 举例例 5_2_7 例 5_2_3 计算 S=1+2+3+100程序:Private Sub Form_Activate()Dim s&, x&s = 0x = 1Dos = s + x
12、x = x + 1Loop While x T2 寸 2+T 寸 2+P 2 +T分析:分母通项公式为:Pn= 2+Pn-1前 n 项的乘积为:Yn=2 Yn-1 /Pn( n=2,3,.)P1=0 , 丫1=2程序:(使用迭代法,且精确至|Yn Yn-1| )Private Sub Command1_Click()Dim p#, y#, s#, m%Clsm = InputBox(输入有效数字位数)p = 0: y = 2Dos = yp = Sqr(2 + p)y = 2 * y / pLoop Until Abs(y - s) 10 A -m f = String(m, #)Print
13、有效位数到& m & 位的n的近似值是:_& vbCrLf & Format(y, 0. & f)End Sub例5_2_9 求两个正整数M和N的最大公约数。(龚P91例4.12 ) 分析:采用“辗转相除法”的思想。(南宋 秦九韶)(1) 先将M,N中的较大数a,较小数b(2) 用大数a除以小数b,余数为R;(3) 若R=0,则b就是它们的最大公约数;若R工0,贝卩a b, b R,重复上(2) (3)过程,直至R=0(4) 最后得到的a就是最大公约数。程序:Private Sub Command1_Click()Dim a, b, r, m&, n&Clsm = lnputBox(M=)n
14、= InputBox(N=)If m n Then t = m: m = n: n = t 该句可省略a = m: b = nDor = a Mod ba = bb = rLoop until r = 0Print m;和;n;的最大公约数是:;aEnd Sub3 ForNext语句For循环也称计数循环。常用于循环次数已知的程序结构中。1、 格式: For 循环变量 =初值 To 终值 Step 步长循环体Next 循环变量2、说明:(1). For格式中有多个参量,这些参量的含义如下:循环变量:亦称控制变量。它是一个数值变量,但不能是下标变-初值:循环变量的初值,它是一个数值表达式。-终值
15、:循环变量的终值,它也是一个数值表达式。步长:循环变量的增量,是一个数值表达式。其值可以是正数(递增 循环)或负数(递减循环),但不能为0。如果步长为1,则可略去不写。循环体:在For语句和Next语句之间的语句序列,可以是一个或 多个语句。 Next:循环终结语句,在Next后面的循环变量与For语句中的 循环变量必须相同。(2). For循环语句的执行过程是:首先把初值赋给循环变量, 接着检查循环变量的值是否超过终值,如果超过就跳出循环,执行 Next后继语句;否则执行循环体,然后把循环变量+步长的值赋 给循环变量,重复上述过程。这里所说的超过有两种含义,即大于或小于。当步长为正值 时,检
16、查循环变量是否大于终值;当步长为负值时,判断循环变量的值 是否小于终值。3、举例例 5_3_1 例 5_2_3 计算 S=1+2+3+100例5_3_2 例5_2_5打印三角形图形例5_3_3求斐波那契数列的前40项值。即: 1,1,2, 3, 5, 8, 13,程序:Private Sub Form_Activate()Dim f&, f1&, f2&f1 = 1f2 = 1Print f1, f2,For i = 3 To 40f = f1 + f2f1 = f2f2 = fPrint f,If i Mod 5 = 0 Then PrintNext iEnd Subb例5_3_4.梯形法求
17、定积分I= Jf(x)dxaab分析:求定积分从几何概念上求f(x)下的面积,将a,b均分为n等 份,则有 n+1个分点:a=x0x1xn=b ;每两个邻点间距: h=(b-a)/n;每个点的函数值为:y0=f(a)y仁 f(a+h)yn-i =f(a+( n-1)h)yn二f(b)把每个小分段都看成小梯形,分别算出它们的面积,然后相加,就近 似求得积分I。即:(yyi)hf (a) f (b)2n -1 f (a ih)i =1试编写求半径为1的园面积。匸4 1曲-X 2 dX的程序。0程序:Private Sub Form_Activate()Dim n&, a%, b%, k&, i#,
18、 h!n = Val(I nputBox( n=)b = 1a = 0h = (b - a) / ni = (Sqr(1 - a * a) + Sqr(1 - b * b) / 2For k = 1 To n - 1x = a + k * hi = i + Sqr(1 - x * x)Next ki = 4 * i * hPrin t i=; iEnd Sub 4、多重循环与循环的退出一、多重循环在一个循环体中嵌套另一个循环结构,称为多重循环。VB没有具体规定嵌套层数。但是要注意嵌套时,不能交叉嵌套。举例例5_4计算S=見为( j )-i =1 j =1程序:Private Sub Comma
19、nd1_Click() Dim n#, m#, i#, j#, s# n = lnputBox(n=) m = InputBox(m=)s = 0For i = 1 To nForj = 1 To ms = s + i * jNext j, iPrint sEnd Sub例5_4_1 “水仙花数”是指一个3位数,其各位数的立方和等于该 数。例如:153=13+53+33,求100到999之间的所有水仙花数。程序:Private Sub Form_Activate()For i = 1 To 9Forj = 0 To 9For k = 0 To 9pl = i * 100 + j * 10 +
20、kp2 = i A 3 + j A 3 + k A 3 If p1 = p2 Then Print i; j; kNext kNext jNext iEnd Sub例5_4_2编写输出九九乘法口诀表程序。(龚P92例4.13) 程序:Private Sub Form_Activate()CisFor x = 1 To 9Print Tab(x - 1) * 10 + 2);For y = x To 9n = x & * & y & = & x * yPrint Format (n, ”!);Next yPrintNext xEnd Sub例5_4_3(例5_3_2 例5_2_5打印三角形图形)
21、3335E555B38888813 13 13 13 13 13 13 13 1321 21 21 21 21 21 21 21 21 21 21*牛131313131313例5_4_6(龚P98例4.16)百元买百鸡问题。假定公鸡每只2元,母鸡 每只3元,小鸡每只5角。现有一百元钱买一百只鸡,编程列出所有 方案。分析:设母鸡、公鸡、小鸡各为X、Y、乙根据题意,有:X+Y+Z=1003*x+2* Y+Z/2=100X=33Y=50程序:(枚举法)Private Sub Form_Activate()Dim x&, y&, z&Print 母鸡,公鸡,小鸡For x = 0 To 33For y = 0 To 50z = 100 - x - yIf 3 * x + 2 * y + z / 2 = 100 The nPrint x, y, zEnd IfNext yNext xEnd Sub二、循环的退出除了当条件满足时退出循环外,VB还提供了 “ Exit Do”和“Exit For” 两个语句,可以根据需要,在循环体中退出循环。1、 格式:Exit doExit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 义乌摊位租赁合同标准文本
- 农村砖房拆墙合同标准文本
- 代办中介合同标准文本
- 2025房屋租赁合同范本官方版个人房屋租赁合同范本
- 借用资质合同标准文本标准文本
- 公寓管家租赁合同标准文本
- 公司解除物业合同标准文本
- 供水维保合同标准文本
- 书面劳务合同标准文本
- 产品加工销售合同标准文本
- 离婚协议书完整版Word模板下载
- 产房健康宣教幻灯片
- 中医男科知识讲座
- 中国传统饮食文化-《糯米糍粑》的制作与传统意义
- 健身器材采购项目投标方案(技术方案)
- 2023年海南高中学业水平合格考信息技术试卷试题(答案详解)
- 混凝土配合比全自动计算书
- 起重设备(行车)安全检查记录
- 配电室安全巡查记录表
- 供应商评估打分表
- 康复评定量表
评论
0/150
提交评论