资源描述
,第,6,章,VB,控制结构(,2,),循环结构程序设计,第6章 VB控制结构(2)循环结构程序设计,本章内容及要求:,(,1,)掌握,For.Next,语句及,Exit For,语句的使用;,(,2,)掌握,Do.Loop,循环语句与,Exit Do,语句的使用;,(,3,)掌握循环结构的嵌套应用;,(,4,)掌握循环结构和选择结构的嵌套应用。,本章内容及要求:,6.1,概述,在,Visual Basic,程序设计中,实现循环结构的语句主要有下列,几,种:,l,ForNext,语句,DoLoop,语句,l,WhileWend,语句,Do While,Loop,形式,Do,Loop,While,形式,Do Until,Loop,形式,Do,Loop,Until,形式,Do,Loop,形式,6.1 概述在Visual Basic程序设计中,实现循环结,打印九九乘法表,DimSgsAsString,Dimi,jAsInteger,Fori=1To9,被乘数从,1,变到,9,Forj=iTo9,乘数从,1,变到,9,Sgs=i&j&=&Str(i*j),打印公式如,11=1,Picture1.PrintTab(j-1)*9+1);Sgs;,Nextj,Picture1.Print,NextI,打印九九乘法表,For,循环语句,(,一般用于循环次数已知,),形式:,For,循环变量初值,to,终值,Step,步长,语句块,Exit For,语句块,Next,循环变量,循环体,=0,循环变量,=,终值,=,终值,=1,可省略,步长,6.2 For.Next,循环结构,For循环语句(一般用于循环次数已知)循环体=,循环次数,例,:For I=2 To 13 Step 3,Print I,Next I,Print“I=“,I,循环执行次数,4,输出,I,的值分别为,:,2 5 8 11,出了循环输出为,:I=14,6.2 For.Next,循环结构,循环次数例:For I=2 To 13 Step,6.2 For.Next,循环结构,注意跳出,FOR,循环时的循环变量的值,For i=1 to 10 step 1,s=s+i,Next i,Print i,For i=-1 to-10 step-1,s=s+i,Next i,Print i,6.2 For.Next循环结构注意跳出FOR循环时的循,6.2 For.Next,循环结构,注意对于,ForNext,语句来说,一旦进入循环,其“终止值”和“增量”便不会再改变了。,Private Sub Form_Click(),Dim i As Integer,j As Integer,k As Integer,j=10:k=1,For i=1 To j Step k,Print i,j=j-1,k=k+1,Next,Print j,k,End Sub,6.2 For.Next循环结构注意对于ForNext,练习:分析下面程序段结束时窗体上显示的值是多少?,(2),i2=0,For i=1 To-2 Step-1,i2=i2+1,Next,Print i,i2,(,-3 4,),(1),For i=1 To 10,i2=i2+1,Next,Print i,(11),(3),i2=0,For i=1 To 5 Step 2,i2=i2+1,Next,Print i,(,7,),(4),i2=1,For i=1 To 10,i=i+1,i2=i2+1,Next,Print i,i2,(11 6),(5),i2=1,i3=10,i=10,For i=1 To i3,i=i+1,i2=i2+1,i3=i3+1,Next,Print i,i2,(11 6),(,6),i2=0,For i=1 To 10,i2=i2+1,If i 6 Then Exit For,Next,Print i,i2,(7 7),(7),i2=0,i=10,Do,i2=i2+1,Loop While i=i2,Print i2,(1),练习:分析下面程序段结束时窗体上显示的值是多少?(2)(-,例,6.7,编程计算:,S=1+2+3+100,Dim S%,I%,S=0 ,累加前变量,S,为,0,For I=1 to 100,S=S+I,Next I,Print S=,S,当,I=100,I=I+1,打印,S,S=0,I=1,S=S+I,例,6.7,的算法流程图,6.2 For.Next,循环结构,例6.7 编程计算:S=1+2+3+100Dim S,前测型,:,Do While ,语句块,Exit Do,语句块,Loop,DoLoop,循环语句使用形式,6.3 Do.Loop,循环结构,前测型:,6.2 Do.Loop,循环结构,Private Sub Form_Click(),Dim i As Integer:Dim a As Integer ,定义所需变量,i=0:a=0 ,给变量赋初值,0,这两条语句可省略,Do While i 100,i=i+1 ,每次循环,变量,i,都增加,1,a=a+i ,每次循环,变量,a,都加变量,i,的值,Loop,Print a ,计算完毕,变量,a,的值即为所求,End Sub,例,:,使用,Do WhileLoop,循环语句计算,1+2+3+100,的值,6.2 Do.Loop循环结构Private Sub F,后测型,:,Do,语句块,Exit Do,语句块,Loop While ,6.3 Do.Loop,循环结构,后测型:6.3 Do.Loop循环结构,6.3 Do.Loop,循环结构,例,:,使用,Do Loop While,循环语句计算,1+2+3+n,的值,n,的值由文本框输入。,Private Sub Command1_Click(),Dim i As Integer,n As Integer,a As Integer ,定义所需变量,n=Text1.Text ,得到输入的值,Do,i=i+1 ,每次循环,变量,i,都增加,1,a=a+i ,每次循环,变量,a,都加变量,i,的值,Loop While i n,Text2.Text=a ,显示计算结果,变量,a,的值即为所求,End Sub,6.3 Do.Loop循环结构例:使用Do Loop,前测型,:,Do Until,语句块,Exit Do,语句块,Loop,DoLoop,循环语句使用形式,6.3 Do.Loop,循环结构,前测型:,6.3 Do.Loop,循环结构,例,:,计算阶乘,n,!的值(,n,的值由文本框输入)。,Private Sub Command1_Click(),Dim i As Integer,n As Integer,Dim a As Long,n=Text1.Text ,得到输入的值,n,a=1 ,必须为变量,a,赋初值,1,Do Until i=n,i=i+1 ,每次循环,变量,i,都增加,1,a=a*i ,每次循环,变量,a,都乘以变量,i,的值,Loop,Text2.Text=a ,计算完毕,变量,a,的值即为所求,End Sub,6.3 Do.Loop循环结构例:计算阶乘 n!的值(n,后测型,:,Do,语句块,Exit Do,语句块,Loop Until ,6.3 Do.Loop,循环结构,后测型:6.3 Do.Loop循环结构,例,:,使用级数求,的值。,根据下式,计算圆周率,的近似值,当计算到绝对值小于,0.0001,的通项时,认为满足精度要求,停止计算。,/4=1-1/3+1/5-1/7+(-1),n+1,1/2n-1+,6.3 Do.Loop,循环结构,例:使用级数求的值。6.3 Do.Loop循环结构,Private Sub cmdPi_Click(),Dim a As Single ,变量,a,保存通项之和,Dim m As Single ,变量,m,保存通项的绝对值,Dim s As Integer ,变量,s,产生通项的符号,Dim i As Integer ,变量,i,产生通项的分母,s=1 ,第一项符号为正,i=1 ,第一项为,1,Do ,开始循环,m=1/i ,计算通项的绝对值,a=a+s*m ,总和加上一个通项,i=i+2 ,产生下一个通项分母,s=-s ,轮流转换通项的正负号,Loop Until m 0.0001 ,测试是否满足精度要求,Text1.Text=a*4 ,输出计算结果,End Sub,6.3 Do.Loop,循环结构,Private Sub cmdPi_Click()6.3 D,6.3 Do.Loop,循环结构,Do,语句块,Exit Do,语句块,Loop,Private Sub Command1_Click(),Dim i As Integer,n As Integer,Dim a As Long,n=val(Text1.Text),a=1,Do,i=i+1,a=a*i,If i=n Then Exit Do,Loop,Text2.Text=a,End Sub,例,6.5:,计算,n!,6.3 Do.Loop循环结构DoPrivate Sub,本节小结:,(,1,)当使用,While,构成循环时,当条件为“真”,则反复执行循环体,当条件为“假”,则退出循环。,(,2,)当使用,Until,构成循环时,当条件为“假”,则反复执行循环体,直到条件成立,即为“真”时,则退出循环。,(,3,)在循环体内一般应有一个专门用来改变条件表达式中变量的语句,以使随着循环的执行,条件趋于不成立(或成立),最后达到退出循环。,(,4,)语句,Exit Do,的作用是退出它所在的循环结构,它只能用在,DO/Loop,结构中,并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退出循环。,6.3 Do.Loop,循环结构,本节小结:(3)在循环体内一般应有一个专门用来改变条,思考,:,将一个十进制数转换成二进制。,算法流程图,6.3 Do.Loop,循环结构,用,Do.Loop,循环的五种形式分别完成,思考:将一个十进制数转换成二进制。算法流,将一个十进制数转换成二进制。,算法流程图,6.3 Do.Loop,循环结构,分析,:,将一个十进制数转换成二进制采用连除,2,取余数的方法,即将十进制数除以,2,取余数,直到商为,0,,然后所得的余数即为二进制数各位的数码,从右到左排列,第一次除,2,的余数在最右边。算法设计如下:用变量,Dec,表示十进制数,,Bin,表示转换所得的二进制数字符串。,(,1,),输入十进制,Dec,(,2,),Dec,除以,2,得余数,R,es,商又赋值给,Dec,;让,Bin=Res&Bin,(,3,),若,Dec,=,0,,则算法结束;否则执行(,2,),将一个十进制数转换成二进制。算法流程图6,将一个十进制数转换成二进制的程序如下,:,Private Sub Form_Click(),Dim Dec As Integer ,表示十进制数,Dim Bin As String ,转换为二进制表示,Dim Res As Integer,Dec=Val(InputBox(,输入一个十进制数,Dec=,?,),Print,十进制数:,;Dec,Do,Res=Dec Mod 2 ,求出除以,2,的余数,Bin=Res&Bin,Dec=Dec 2,Loop Until Dec=0,Print,转换为二进制数为:,;Bin,End Sub,6.3 Do.Loop,循环结构,将一个十进制数转换成二进制的程序如下:Private Su,6.4.1 WhileWend,语句,使用格式如下:,While,Wend,说明:,该语句的功能与,Do While.Loop,实现的循环完全相同。,6.4 WhileWend,语句,6.4.1 WhileWend语句6.4 WhileW,6.5.1,循环的嵌套,多重循环结构,如果在一个循环内
展开阅读全文