vb-4-循环结构程序设计-实例.ppt

上传人:小飞机 文档编号:6522581 上传时间:2023-11-08 格式:PPT 页数:48 大小:592KB
返回 下载 相关 举报
vb-4-循环结构程序设计-实例.ppt_第1页
第1页 / 共48页
vb-4-循环结构程序设计-实例.ppt_第2页
第2页 / 共48页
vb-4-循环结构程序设计-实例.ppt_第3页
第3页 / 共48页
vb-4-循环结构程序设计-实例.ppt_第4页
第4页 / 共48页
vb-4-循环结构程序设计-实例.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《vb-4-循环结构程序设计-实例.ppt》由会员分享,可在线阅读,更多相关《vb-4-循环结构程序设计-实例.ppt(48页珍藏版)》请在三一办公上搜索。

1、第4章 循环结构程序设计,循环结构 用For-Next语句实现循环结构 用Do While-Loop语句实现循环结构 嵌套的循环结构,For 循环变量=初值 To 终值 Step 步长 循环体语句 Next 循环变量,ForNext循环的一般语法格式,步长可取正或负数;步长为负时终值应小于初值,For-Next常用于循环次数已知的循环中 循环体语句可以是一条或多条语句可以使用Exit For语句提前结束循环 For i=1 To 10 x=x+Int(Rnd*100)sum=sum+x If sum 300 Then Exit For End If Next i Print sum,程序说明,

2、【例】找最大值。单击最大值按钮时产生10个1100之间的随机整数显示在框架内的标签中,同时将最大值显示在下方的标签内。,lbldata,lblmax,处理第1个数据产生一个随机数,存放在变量a中将a显示在标签(lblData)中 将a作为当前最大值放在变量max中 处理第2个数据 产生新的随机数,存放在变量a中 将a连接显示在标签(lblData)原有内容之后如果a大于max,则将a作为最大值放在max中,编程分析,a=Int(Rnd*100)+1,lblData.Caption=a,max=a,a=Int(Rnd*100)+1,lblData.Caption=lblData.Caption&

3、,&a,If a max Then max=aEnd If,9次,Private Sub cmdMax_Click()Dim a As Integer,i As Integer,max As Integer Randomize a=Int(Rnd*100)+1 lblData.Caption=a max=a For i=1 To 9 重复执行9次 a=Int(Rnd*100)+1 lblData.Caption=lblData.Caption&,&a If a max Then max=a End If Next i lblMax.Caption=maxEnd Sub,求1000个数中的最大?

4、,程序代码,常用于执行条件明确,但事前不知道循环次数的循环语法格式 Do While 循环条件循环体语句Loop执行流程,Do While-Loop语句,循环体语句,Yes,No,通常情况下,在进入Do While-Loop语句前应给循环变量设置初值循环体中必须包含使循环趋于结束的语句 可以使用 Exit Do 语句随时跳出当前所在的循环,提前结束循环语句Exit Do 可出现在循环体语句中的任意位置,通常与 If 语句联合使用,Do While-Loop语句,语法格式 Do循环体语句Loop While 循环条件执行流程,Do-Loop While语句,循环体语句,Yes,No,【实例】输入

5、若干成绩(输入-1时结束)计算总成绩和平均成绩。,连续弹出输入框接收成绩,直至-1时结束,计算总成绩和平均成绩,多行文本框,Lblaverage,Lblsum,txtscore,输入第1个数据输入第一个数据,存放在变量score中判断输入的数据是否是-1,如果不是-1 记录已经输入的学生人数将数据显示在txtscore原有内容之后中 计算总成绩接收下一个数据,编程分析成绩输入,score=Val(),InputBox(“请输入.”,“成绩输入,-1),n=n+1,txtScore.Text=txtScore.Text&score&Chr(13)&Chr(10),直到输入-1,sum=sum+s

6、core,score=Val(InputBox(“请输入.”,“成绩输入,-1),换行符,Dim sum As Integer 总成绩Dim n As Integer 成绩个数Private Sub cmdInput_Click()Dim score As Integer txtScore.Text=lblSum.Caption=lblAverage.Caption=“sum=0:n=0 score=Val(InputBox(“请输入.”,“成绩输入,-1)Do While score-1 n=n+1 txtScore.Text=txtScore.Text&score&Chr(13)&Chr(

7、10)sum=sum+score score=Val(InputBox(请输入.,成绩输入,-1)LoopEnd Sub,程序代码,Private Sub cmdCala_Click()Dim ave As Single lblSum.Caption=sum ave=sum/n lblAverage.Caption=aveEnd Sub,程序代码,【程序改进】修改上例,当输入非法成绩时,再次弹出输入框等待重新输入,直至输入1 100之间的整数为止。要求在文本框中只显示出有效的输入成绩。,循环的嵌套,在一个循环体内又出现另外的循环语句称为循环嵌套,也称为多重循环。在嵌套结构中,对嵌套的层数没有限

8、制,有几层嵌套,就说是几重循环。多重循环的执行过程是,外循环每执行一次,内循环都要从头到尾执行一遍。嵌套时,内层循环必须完全包含在外层循环之内,不能相互“交叉”。,正确的嵌套,错误的嵌套,For循环的嵌套,其形式通常有以下两种:,1)一般形式For I1=For I2=For I3 Next I3 Next I2Next I1,2)省略Next后面的循环变量For I1=For I2=For I3=Next NextNext,每层For循环的Next语句都不可省略。但当多重循环的Next语句连续出现时,Next语句可以合并成一条,内层循环变量写在前面,外层循环变量写在后面。For I1=For

9、 I2=For I3=Next I3,I2,I1,在循环的嵌套中,内层循环和外层循环应该使用不同的循环控制变量。在多重循环的任何一层循环中都可以使用Exit Do或Exit For退出循环,但要注意只能退出Exit Do或Exit For 语句所对应的最内层循环,而不是一次退出多层循环。,For循环的嵌套,例如,下面的循环退出位置如箭头所示:f=1For i=1 To 10 For j=1 To 10 f=f*i*j If f 1000 Then Exit For Next j Print i;j;fNext I,使用多重循环处理程序时,需要考虑清楚内外层循环分别用来控制哪一个量的变化,其变化

10、规律如何。,多重循环应用举例,1.字符图形的输出,3.其他综合应用,2.方程求解问题,字符图形的输出,(a),(b),(c),(d),在解决这类问题时,应首先考虑一个一般行的输出,只需要把这个一般行的输出语句利用循环结构控制执行多次即可。例如:在输出图形(a)时,每一行都输出了同样的6个字符,在输出每一行之后换行,然后输出下一行,所以,只需要将输出一行字符的语句连续执行5次就可以了。,输出图形(a)的程序如下:For j=1 To 5For i=1 To 6 内循环控制输出一行的多个星号 Print*;Next iPrint 输出每一行后换行Next j 两个循环控制变量i和j,分别用来控制图

11、形中列与行的变化,称之为列变量和行变量。在实现输出字符图形时,要找清楚要输出的图形与行列变量之间的关系。,图形(b)与图形(a)的差别 在输出每一行星号时首先输出了若干个空格 每一行之前输出的空格的个数与其行号相同,即始终与行变量j相同。,(b),(a),字符图形的输出,输出图形(b)的程序如下:For j=1 To 5Print Tab(j);先输出j个空格For i=1 To 6 Print*;Next iPrint Next j,图形c)与图形a)的差别 在于每一行输出的星号个数不同图形a)中每行都输出了固定个数的字符,而图形c)中每行输出的字符个数与其行数相同只需要修改一下内循环控制变

12、量的终值就可以了。,返回,(a),(c),输出图形(c)的代码如下:For j=1 To 5For i=1 To 6Print*;Next iPrintNext j,j,输出矩阵图形,例:请输入n值,编写程序输出下列图形(例如n=5).1 2 3 4 51 1 2 3 41 1 1 2 31 1 1 1 21 1 1 1 1,第1行:1个1,2-5第2行:2个1,2-4第3行:3个1,2-3第5行:5个1,第1行:1个1,2n第2行:2个1,2n-1第3行:3个1,2n-2第n行:n个1,代码,Private Sub Form_Activate()Dim i As Integer,j As I

13、ntegerFor i=1 To 5 For j=1 To i Print 1;Next j For j=2 To 6-i Print j;Next j PrintNext iEnd Sub,实例4.4,第1行:1个1,2-5第2行:2个1,2-4第3行:3个1,2-3第5行:5个1,第1行:1个1,2n第2行:2个1,2n-1第3行:3个1,2n-2第n行:n个1,第行:个,2n-(i-1),Yes,打印第i行,i=n,i=i+1,打印1,打印2n-i+1,For j=1 To i Print 1;Next j,For j=2 To n-i+1 Print j;Next j,例:编程打印“乘

14、法九九表”。,分析:将每一个等式作为一个方阵的节点,则每一个等式出现的位置上行列的数字是相同的。For i=1 to 9 For j=1 to i Next jNext i为乘法等式:expss=i,(2)方程求解,【例】编写程序求下列方程组的所有正整数解。2X+5Y=20 2Y=3X-1分析:根据两个方程确定X和Y的取值范围分别为:X在0和10之间,Y在0到4之间。对该范围内的所有整数依次用方程进行验证,从而得出方程的解。,For X=0 To 10 For Y=0 To 4 If 2*X+5*Y=20 And 2*Y=3*X-1 Then Print X;Y End ifNext Y,X,

15、(3)其他综合应用,【例】编程求Sum=1+(1+2)+(1+2+3)+(1+2+3+n),其中n由用户输入。分析:该题是一个累加问题,共有n项相加,设置存放累加和的变量为Sum对于第i个累加项1+2+i,又是一个累加问题,设存放该累加项的变量为Sum1,因此可以用双重循环来实现。用外循环i依次取1、2、n值,对于每一次的累加项(如第i项),用内循环控制求1+2+i。设文本框Text1用于输入总项数n,Text2用于输出总和Sum,运行时单击窗体计算结果。,Private Sub Form_Click()n=Val(Text1.Text)Sum=0 For i=1 To n Sum1=0 在计

16、算每个累加项之前,将放和的变量清零 For j=1 To i Sum1=Sum1+j Next j Sum=Sum+Sum1 Next i Text2.Text=SumEnd Sub本题应注意Sum=0和Sum1=0在程序中的位置。,For i=2 To r-1 If r Mod i=0 Then Exit ForNext iIf i=r ThenEnd if,判断r是否素数,lblprime.Caption=lblprime.Caption+Str$(r),r是素数,Flag=0,Flag=1:exit for,Flag=0,补充例题,译密码:字母翻译:按26个字母排列顺序向后移动n位,若移

17、出了最后一个则移到字母a或A并顺序往后移例:今天是28号,a 向后移动28位abcdefghijklmnopqrstuvwxyz,28,25,补充例题代码,If ch=a And ch=z Then asch=Asc(ch)-97+1 在26个小写字母中的位置 trap=Chr$(asch+n)Mod 26+97-1)求出按规则转换后的字符,补充例题,题目要求:输入一行数字,按相反的顺序输出。例如:输入“1 2 3 4 5 6 7 8”输出“8 7 6 5 4 3 2 1”难点:如何获得各位数字,补充例题代码,Private Sub lblout_Click()n=Val(txtin.Text

18、)While n 0r=n Mod 10lblout.Caption=lblout.Caption&rn=n 10WendEnd Sub,译码器密码检测窗体设计,案例译码器,译码器密码检测窗体设计,添加窗体:工程|添加窗体密码框属性:PasswordChar*代码Dim n As Integer 定义n为窗体级变量,用于累计验证密码的次数 Private Sub cmdok_Click()Const password=061216 Const name=santa n=n+1If n=3 Then 控制验证密码的次数,If txtname.Text=Or txtpassword.Text=Th

19、en MsgBox 必须输入姓名和密码,0+64,提示Else If txtname.Text=name And txtpassword.Text=password Then frm1.Hidefrm2.Show Else MsgBox 姓名或密码错误,0+48,警告 End IfEnd IfElseEndEnd IfEnd Sub,译码器译码器窗体设计,译码器译码器窗体设计,函数Asc(C)的功能是将字符转换成ASCII码值,如Asc(“A”)的值65Chr(65)其功能是将ASCII码值转换成字符,如Chr(65)的值“A”LTrim(C)是去掉字符串左边的空格,如LTrim(“ABVC”

20、)的值为ABVCMid(C,N1,N2)是取字符子串,在C中从N1位开始向右取N2个字符,译码器译码器窗体设计,约定“原文”文本框中的数字字符串每三位代表一个完整的信息,如一个字母(065表示字符“A”)或一个空格(000表示空格),一个数字(033非字母或空格,表示数字33),字符串结束(“#”),译码器“译码”代码,n=1ori=LTrim$(txtori.Text)去掉“原文”文本框字符串右边的空格,赋值给变量oriorip=Mid$(ori,n,3)从字符串ori的第一个位置开始取3个字符,赋值给字符串变量oripWhile orip#n=n+3 确定下一次取字符的位置 If Val(

21、orip)=0 And Val(orip)=255 Then ASAII码的范围是0255 orip=Chr$(Val(orip),If orip=a And orip=A And orip=Z Then trapn=Asc(orip)-65+1 trap=Chr$(trapn+Day(Now)Mod 26+65-1)lettercap=lettercap+1 计大写字母的个数,Else 非字母 trap=Asc(orip)字符orip转换成ASCII码值,作为译码即保持原值 If trap=0 Then 字符oripASCII码值为0即原值为“000”trap=译码为空格 word=word

22、+1 单词计数,因为空格分隔单词 other=other+1 其它字符计数,空格也是一个非字母字符 Else If trap 99 Then 其它字符计数 other=other+3 Else If trap 9 Then other=other+2 Else other=other+1,End If End If End If End If End IfElse trap=orip 超出ASCLL码范围的值不变 other=other+3End Iftra=tra+trap 译码连接到字符串traorip=Mid$(ori,n,3)取出下一个字符串Wend,txttra.Text=tra 译码在“译文”文本框中显示inf=大写字母个数:+Str$(lettercap)+Chr$(13)+chr$(10)+小写字母个数:+Str$(letterlow)+Chr$(13)+chr$(10)+单词个数:+Str$(word+1)+Chr$(13)+chr$(10)+其它字符个数:+Str$(other)MsgBox inf,0+64,译文统计信息 End Sub,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号