资源描述
在Visual Basic程序的三种结构中,循环结构是一种重要结构。循环的本质循环的本质:不断地重复某种动作。对计算机程序而言,循环必须具备两个重要因素:对计算机程序而言,循环必须具备两个重要因素:1.在一定的条件下,重复执行一组语句2.必然出现不满足条件的情况,使循环终止思考题编写程序实现计算:0+1+2+3+4+n的值前后两项之差都为1,是一个等差数列Sum=0Sum=sum+1Sum=sum+2Sum=sum+3Sum=sum+nSum=sum+ii=i+1i是从1到n递增1的数列重复执行n次一、循环程序设计结构 VB中提供了两种类型的循环语句:一种是计数循环语句;另一种是条件循环语句。Visual Basic 支持的循环结构有:For.Next结构 DoLoop 结构 WhileWend goto重点掌握:DoLoop、For.Next、WhileWend等前三种循环循环体Exit For循环体循环变量增加步长循环变量获得初值FT循环变量在终值内For循环的执行过程语法格式:For 循环变量=初值 To 终值 Step 步长 Exit For Next 循环变量记住了编程计算:S=1+2+3+100Dim S%,i%S=0 For i=1 to 100 S=S+iNext iPrint i,S 思考思考:求100以内的奇数和、偶数和怎样改程序?求10!怎样改程序?注意执行过程!注意执行过程!循环结束后循环变量循环结束后循环变量i的值为多少的值为多少说明说明 格式中的参数说明:l 循环的循环的初值、终值初值、终值和和步长步长都是数值表达式,其值不一定是都是数值表达式,其值不一定是 整数,可以是实数。整数,可以是实数。l 增量参数可正可负。如果增量为正,则初值必须小于等于增量参数可正可负。如果增量为正,则初值必须小于等于 终值,否则不能执行循环体内的语句;如果增量为负,则终值,否则不能执行循环体内的语句;如果增量为负,则 初值必须大于等于终值。如果没有设置初值必须大于等于终值。如果没有设置stepstep,则增量默认,则增量默认 为为1 1。l 当初值等于终值时,不管步长是正数还是负数,都执行一次循环体。当初值等于终值时,不管步长是正数还是负数,都执行一次循环体。循环次数由初值、终值和步长决定,计算公式为:循环次数由初值、终值和步长决定,计算公式为:循环次数循环次数=INT(终值(终值 初值)初值)/步长步长+1)For语句和语句和Next语句必须成对出现,不能单独使用。语句必须成对出现,不能单独使用。Next是循环终端语句,在是循环终端语句,在Next后面的循环变量与后面的循环变量与For中的循中的循 环变量必须相同。当循环是单层循环时,环变量必须相同。当循环是单层循环时,Next后面的循环变量后面的循环变量 可以不写。可以不写。如果要在循环变量到达终值前退出循环,可用如果要在循环变量到达终值前退出循环,可用Exit ForExit For语句来实现。语句来实现。该语句可以在该语句可以在ForFor循环中出现多次,且位置不限。循环中出现多次,且位置不限。如:前例中加入条件如:前例中加入条件“当当sum超过超过400时跳出循环时跳出循环”。For i=1 to 500 step 100 S=S+I If s400 then Exit forNext iPrint i,S DoLoop循环用于事先不知道循环次数的循环结构。此种语句四种语法格式:.Do While Loop 语句 先判断条件值,如果为真,执行循环体,否则退出先判断条件值,如果为真,执行循环体,否则退出 .Do Until Loop 语句 先判断条件值,如果为假,执行循环体,直到为真时退出先判断条件值,如果为假,执行循环体,直到为真时退出 .Do Loop While 语句 先执行循环体,后判断条件值,为真继续循环,否则退出先执行循环体,后判断条件值,为真继续循环,否则退出 .Do Loop Until 语句 先执行循环体,后判断条件值,为假继续,直到为真退出先执行循环体,后判断条件值,为假继续,直到为真退出 .Do While Loop语句Dim S%,i%S=0For i=1 to 100 S=S+I If s400 then Exit forNext iPrint S=,S Dim S%,i%S=0i=1Do while s400 S=S+i i=i+1LoopPrint S=,S 说明:条件表达式可以是一个逻辑表达式,也可以是一个关系表达式,其值应是逻辑型。Do While/Until和Loop应成对出现。循环体中要有控制循环的语句,以避免出现死循环。由于该循环的特点是先判断条件,然后再决定是否要执行循环体里的语句。所以,这种循环可以一次也不执行循环体。Exit Do 表示当遇到该语句时,强制退出循环,执行Loop后的下一条语句注意:注意:至少要执行循环体一次。与Do While循环的区别:Do While循环先测试条件是否成立,只有循环先测试条件是否成立,只有成立才执行循环;而该循环先执行循环体,成立才执行循环;而该循环先执行循环体,后测试条件是否成立。后测试条件是否成立。(3)Do Loop While语句语句.Do Loop Until语句语句 语法格式:语法格式:Do 循环体 Exit Do 循环体 Loop Until条件表达式语法格式:语法格式:Do 循环体循环体 Exit Do 循环体循环体 Loop While条件表达式条件表达式例:例:输入有效位数,按下述公式计算圆周率输入有效位数,按下述公式计算圆周率的有效值。的有效值。m=val(text1.text)pai=2:p=0Do t=s:p=spr(2+p):pai=t*2/pLoop Until abs(t-s)0.1m功能:功能:当While的条件表达式的值是True时执行循环体内的代码,直到While后的条件表达式的值为False。说明:说明:它与Do Loop语句的差别是:While Wend语句中不能使用Exit语句跳出循环。语法格式:语法格式:While 条件表达式)等价于 do While(条件表达式)循环体 循环体Wend LOOP3、WhileWend循环结构循环结构几种循环语句比较几种循环语句比较 For.toNextDo while/until.Loopdo.Loop While/until.循环类型当型循环当型循环直到循环循环控制条件循环变量大于/小于 终值条件成立/不成立条件成立/不成立循环变量初值在 FOR 语句中在 DO 之前在 DO 之前使循环结束For 语句中无需专门语句必须用专门语句必须使用专门语句使用场合循环次数容易确定条件件易给出条件件易给出练习:练习:1、求、求100200之间不能被之间不能被3整除的数。整除的数。2、判断一个数是否为质数。、判断一个数是否为质数。解2:Value=Val(Text1.Text)Counter=2Do Until Value Mod Counter=0 Or Counter=Value Counter=Counter+1LoopIf Counter=Value Then Print 质数 解1:value=val(Text1.text)For counter=2 To value-1 If value Mod counter=0 Then Exit For Next If counter=value Then Print 质数4、验证哥德巴赫猜想:任意一个大于等于6的偶数都可以分解为两个质数之和。基本思想:n为大于等于6的任一偶数,可分解为n1和n2两个数,分别检查n1和n2是否为素数,如都是,则为一组解。如n1不是素数,就不必再检查n2是否素数。先从n1=3开始,检验n1和n2(n2=N-n1)是否素数。然后使n1+2再检验n1、n2是否素数,直到n1=n/2为止。3、输入两个正整数,求它们的最大公约数。、输入两个正整数,求它们的最大公约数。输入两个自然数输入两个自然数m,nr=m mod n若若r=0,则,则n为为m的最大公约数的最大公约数若若r0,则,则m=n,n=r重复执行第二步重复执行第二步mnm=Text1.Textn=Text2.TextDot=m Mod nm=n:n=tLoop Until n=0Print m二、循环的嵌套二、循环的嵌套多重循环结构多重循环结构1、如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,2、嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。上面介绍的几种循环控制结构可以相互嵌套,下面是几种常见的二重嵌套形式:(1)For I=.For J=.Next J .Next I(2)For I=.Do While/Until .Loop .Next I(3)Do While.For J=.Next J .Loop(4)Do While/Until.Do While/Until .Loop .Loop例题:例题:在窗体上输出在窗体上输出100以内质数。以内质数。Private Sub Command1_Click()Dim value As IntegerDim counter As IntegerDim num As IntegerMe.Cls For value=2 To 100 For counter=2 To value-1 If value Mod counter=0 Then Exit For End If Next If counter=value Then Print value;Tab;num=num+1 If num Mod 3=0 Then Print End If NextPrintPrint 100以内的质数有&num&个End Sub例题:例题:在文本框内输出水仙花数。在文本框内输出水仙花数。Private Sub command1_Click()Dim x%,y%,z%,n%For x=0 To 9 For y=0 To 9 For z=1 To 9 If x 3+y 3+z 3=x+y*10+z*100 Then text1.text=x 3+y 3+z 3 End If Next Next NextEnd subPrivate Sub command1_Click()List1.ClearDim x%,y%,z%,n%For n=100 To 999 x=n Mod 10 y=n 10 Mod 10 z=n 100 If x 3+y 3+z 3=n Then text1.text=x 3+y 3+z 3 End If NextEnd sub 我国古代数学家章丘建在“算经”里提出一个 世界数学史上有名的百钱百鸡问题:鸡翁 一,值钱五,鸡母一,值钱三,鸡雏一,值 钱一。百钱买百鸡,问鸡翁、母、雏各几 何?找出1999之间所有的同构数 同构数:该数出现在它的平方数的右边,如:525,25625 输入一个整数,判断其是否是“完全数”完全数:该数的因子之和等于其本身,如28=1+2+4+7+14练习:例题:例题:打印打印九九乘法表九九乘法表 For i=1 To 9 For j=1 To 9 e=i&j&=&i*j Print Tab(j-1)*9+1);e;Next j Print Next i例题:例题:打印打印九九乘法表九九乘法表 For i=1 To 9 For j=1 To i e=j&i&=&i*j Print Tab(j-1)*9+1);e;Next j Print Next i练习 实验教程:实验5对于循环的嵌套,要注意以下事项:对于循环的嵌套,要注意以下事项:(1)内循环变量与外循环变量不能同名;内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;外循环必须完全包含内循环,不能交叉;正 确错 误 For i=1 To 10 For j=1 To 20 Next i Next j For i=1 To 10 For j=1 To 20 Next j Next i6.5 跳转语句跳转语句格式格式:GoTo 行标签行标签|行号行号GoTo语句可以改变程序执行的顺序,跳过程序的某一部分去执行另一部分,或者返回已经执行过的某语句使之重复执行。行标签可以是任何字符的组合,以字母开头,以冒号(:)结尾。行号由整型数字组成,后面没有冒号。GoTo语句只能在一个过程中使用。GoTo语句是无条件转移语句,但常与条件语句结合使用。跳转语句举例:求跳转语句举例:求1+2+3+100的和的和Private Sub Command1_Click()Dim sum&,i%i=1sum=0again:If i=100 Then sum=sum+i i=i+1 GoTo again End IfPrint sumEnd Sub【例】【例】计算存款利息计算存款利息
展开阅读全文