《大学VB教学课件:第4章程序设计的3种基本结构.ppt》由会员分享,可在线阅读,更多相关《大学VB教学课件:第4章程序设计的3种基本结构.ppt(88页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第4章章 程序设计的程序设计的3种基本结构种基本结构 VB VB采用事件驱动方法,但仍需要结构采用事件驱动方法,但仍需要结构化程序设计方法,用控制结构控制程序执化程序设计方法,用控制结构控制程序执行的流程。行的流程。程序流程有三种最基本的结构:顺序程序流程有三种最基本的结构:顺序结构、选择结构、循环结构。结构、选择结构、循环结构。引言引言4.1 算法及算法的表示算法及算法的表示算法算法 -是解决问题而采取的方法和步是解决问题而采取的方法和步骤的描述骤的描述.4.2 顺序结构程序顺序结构程序在在VB中,采用中,采用OOP,程序的执行是事件驱动程序的执行是事件驱动的,的,但就某个过程而言,但就某
2、个过程而言,过程本身代码的执行仍采用顺过程本身代码的执行仍采用顺序结构序结构,即按照语句代码出现的先后次序执行,即按照语句代码出现的先后次序执行一、几个常用语句一、几个常用语句 1、赋值语句、赋值语句Let 格式格式格式格式:Let:Let|=表达式表达式表达式表达式 功能功能功能功能:将表达式的值赋给变量或对象属性将表达式的值赋给变量或对象属性将表达式的值赋给变量或对象属性将表达式的值赋给变量或对象属性J例:s=0Label1.BackColor=RGB(255,0,0)LetLet表示赋值表示赋值表示赋值表示赋值可以省略可以省略可以省略可以省略注意事项注意事项注意事项注意事项1)“=”赋值
3、号与数学中的等号意义不同。2)例如:语句X=X+1表示将变量X的值加1后的结果值再赋给变量X,而不是表示两边的值相等.2)赋值号左边必须是变量或对象属性.例:X=1 MyStr=“Good Morning”Command1.Caption=“确定”X+1=X (错误)3)变量名或对象属性名的类型应与表达式的类型相容.例如:Dim A As Integer,B As Single,C As Double,S As StringA=100S=123.45“A=S A=123S=A S=“123”B=12345.67 A=B A=12346 四舍五入后取整四舍五入后取整C=123456.789 B=
4、C B=123456.8 单精度有效数字为单精度有效数字为7位位S=abc”A=S 错误,类型不匹配 4)变量未赋值时,数值型变量的值为0,字符串变量的值为空串“”。例4-1交换两个变量的值。设变量A中存放3,变量B中存放4,交换两个变量的值,使变量A中存放4,变量B中存放3。值互换需引入中间变量:油水值互换需引入中间变量:油水值互换需引入中间变量:油水值互换需引入中间变量:油水变量a、b的值互换也需引入中间变量:abt34t=a变量a、b的值互换也需引入中间变量:abt343t=aa=b变量a、b的值互换也需引入中间变量:abt443t=aa=bb=t变量a、b的值互换也需引入中间变量:ab
5、t433t=aa=bb=t2 2、注释语句、注释语句、注释语句、注释语句注释语句是非执行语句,仅仅对相应位置上的代码起到注释作用格式格式1:Rem 注释内容注释内容格式格式2:注释内容注释内容G格式1中的关键字Rem和注释内容之间必须用空格空格隔开G格式2的注释语句在使用时较格式1更加灵活,可以不用加语句间的分隔符,直接出现在某行语句后面进行注释例:R=12.3:Rem R 表示圆的半径 S=3.14*R2 S表示圆的面积3、暂停语句、暂停语句 Stop格式:格式:StopStopJStop常用于程序调试,用它来设置断点,当Stop语句执行时,会中断程序运行,并自动打开立即窗口,方便用户对程序
6、代码进行检查和调试 4、卸载对象语句、卸载对象语句 Unload格式:格式:Unload Unload JUnload Form1 卸载窗体Form1JUnload Me 卸载当前窗体 5、结束语句、结束语句 End格式:格式:EndEndJEnd语句不调用Unload、QueryUnload或任何其它Visual Basic代码,只是生硬地终止代码执行。6、响铃语句、响铃语句 Beep格式:格式:BeepBeep 不管多么复杂的问题,一般在解决时,都可分为三个步骤:输入数据、数据处理、输出结果 1、使用文本框输入数据、使用文本框输入数据利用文本框接收用户通过键盘输入的内容,而用户输入的内容是
7、保存在文本框的Text文本属性中,要获取Text文本属性的值即用户输入的内容,可通过赋值语句实现:A=Text1.Text二、数据输入例题例题4-1 例4-1输入长方体的长、宽和高,然后计算其体积和表面积。运行界面如图所示。Text1Text2Text3Text4Text5Text1Text5Text空Alignment1-Right JustifyText4Text5LockedTrue“计算”命令按钮Command1的Click事件的代码:Private Sub Command1_Click()Dim L As Single,W As Single,H As Single L=Val(Te
8、xt1.Text)W=Val(Text2.Text)H=Val(Text3.Text)Text4.Text=L*W*H Text5.Text=(L*W+L*H+W*H)*2End Sub“关闭”命令按钮Command2的Click事件代码:Private Sub Command2_Click()Unload MeEnd Sub 2、焦点与、焦点与Tab键顺序键顺序JTabIndexTabIndex属性:属性:TabTab键顺序键顺序 JTabStopTabStop属性:焦点是否能停留在该控件上属性:焦点是否能停留在该控件上TabIndex:0TabIndex:1TabIndex:2TabSto
9、p:FalseTabStop:False3 3、输入框函数(、输入框函数(InputboxInputbox)格式:InputBox(,)说明::字符串表达式。在对话框内显示提示信息,提示用户输入的数据的范围、作用等。如果要显示多行信息,则可在各行行末用回车符Chr(13)、换行符Chr(10)、回车换行符的组合Chr(13)&Chr(10)或系统常量vbCrLf来换行。:字符串表达式,可选项。运行时该参数显示在对话框的标题栏中。如果省略,则在标题栏中显示当前的应用程序名。:字符串表达式,可选项。显示在对话框上的文本框中,在没有其他输入时作为缺省值。如果省略,则文本框为空。例例 4-2例4-2
10、输入圆的半径,计算其周长和面积。运行界面如图所示。Private Sub Command1_Click()Dim R As Single,L As Single,S As Single R=Val(InputBox(圆的半径,请输入,0)L=3.1416*2*R S=3.1416*R*R Text1.Text=L Text2.Text=SEnd Sub三、数据输出三、数据输出 在程序设计中对输入的数据进行加工后,往往需要将数据输出。在VB中,可以使用:文本框(Text)控件标签(Label)控件消息框(MsgBox)函数或语句Print方法1、文本框、文本框 2、标签、标签3、消息框函数(、消
11、息框函数(Msgbox)在windows中,如果操作有误,通常会在屏幕上显示一个对话框,提示用户进行选择,然后系统根据选择确定其后的操作。例如:VB提供的MsgBox函数可以实现此功能,它可以向用户传送信息,并可以接收用户在对话框上的选择,以此作为程序继续执行的依据。格式:MsgBox(,)功能:在对话框中显示消息,等待用户单击按钮,并返回一个整数告诉用户单击了哪个按钮。说明::字符串表达式,用于指定显示在对话框中的信息,可以使用回车符Chr(13)、换行符Chr(10)或是回车与换行符的组合Chr(13)&Chr(10)进行换行。:数值型数据,是可选项,用来指定对话框中出现的按钮和图标的种类
12、及数量,该参数的值由三类数值相加产生,这三类数值分别表示按钮的类型、显示图标的种类及默认按钮的位置 :字符串表达式,是可选项,它显示在对话框的标题栏中,如果省略,则在标题栏中显示应用程序名。格式:MsgBox(,)“按钮类型”的设置值及含义分类按钮值系统定义符号常量含义按钮类型0vbOKOnly只显示“确定”按钮1vbOKCancel显示“确定”、“取消”按钮 2vbAbortRetryIgnore显示“终止”、“重试”、“忽略”按钮 3vbYesNoCancel显示“是”、“否”、“取消”按钮 4vbYesNo显示“是”、“否”按钮 5vbRetryCancel显示“重试”、“取消”按钮 图
13、标类型16vbCritical显示停止图标 x 32vbQuestion显示询问图标?48vbExclamation显示警告图标!64vbInformation显示信息图标i 默认按钮0vbDefaultButton1第一个按钮是默认按钮 256vbDefaultButton2第二个按钮是默认按钮 512vbDefaultButton3第三个按钮是默认按钮 MsgBox函数的返回值系统符号常量返回值按键vbOK1确定vbCancel2取消vbAbort3终止vbRetry4重试vbIgnore5忽略vbYes6是vbNo7否若不需要返回值,则可以使用MsgBox语句,其格式为:MsgBox ,
14、例:只显示“提示信息”Private Sub Command1_Click()a=MsgBox(“提示信息”)End SubPrivate Sub Command1_Click()a=MsgBox(“提示信息”&Chr(13)&“换行显示”)End Sub提示信息换行Private Sub Command1_Click()a=MsgBox(“提示信息”,“标题”)End SubPrivate Sub Command1_Click()a=MsgBox(“提示信息”,1,“标题”)End Sub省略第二个参数“按钮类型”,但逗号不能省略显示“确定”、“取消”按钮Private Sub Comman
15、d1_Click()a=MsgBox(“提示信息”,1+16,“标题”)End Sub显示停止图标Private Sub Command1_Click()a=MsgBox(“提示信息”,2+32+0,“标题”)End Sub设第一按钮是默认按钮若不需要返回值,则可以使用MsgBox语句直接输出,其格式为:MsgBox ,例:Dim a,a1,a2 a=“中华人民”a1=“共和国”a2=a&a1 Msgbox “a2=”&a2,“输出数据”例4-3 对例4-1的“关闭”按钮作如下改进:单击该按钮时弹出一消息框,询问是否真的要关闭,单击“是”则关闭,单击“否”则不关闭。Private Sub Co
16、mmand1_Click()If MsgBox(真的要关闭吗?,vbYesNo+vbQuestion,确认)=vbYes Then Unload Me End IfEnd Sub4 4、使用、使用PrintPrint方法输出数据方法输出数据调用格式:调用格式:对象名对象名对象名对象名.Print.Print 输出项列表输出项列表输出项列表输出项列表;|,;|,J对象除了可以是窗体外,还可以是图片框对象除了可以是窗体外,还可以是图片框(PictureBoxPictureBox)、DebugDebug或打印机或打印机(Printer)(Printer),若若缺省对象名,表示将文本输出到缺省对象名,
17、表示将文本输出到当前窗体上当前窗体上J输出项列表:输出项列表:是由是由0 0个、个、1 1个或多个待输出的数值表达式或个或多个待输出的数值表达式或字符串表达式构成;当输出项是由多个项构成,则中间必须字符串表达式构成;当输出项是由多个项构成,则中间必须用逗号或分号分隔;若用逗号或分号分隔;若PrintPrint后什么都不跟,则表示输出一个后什么都不跟,则表示输出一个空行空行 例:例:Form1.Print 1,2,3Form1.Print 1,2,3 Print 1,2,3 Print 1,2,3 Picture1.Print 1,2,3 Picture1.Print 1,2,3G;(分号分号)
18、和和,(逗号逗号)分隔符:用于分隔符:用于分隔分隔前后两个输出项,前后两个输出项,并并决定分隔符后的下一个输出项的输出位置决定分隔符后的下一个输出项的输出位置G分号分号(;)表示下一个输出项将以紧凑格式,紧跟着上一表示下一个输出项将以紧凑格式,紧跟着上一个输出项输出,中间没有空格个输出项输出,中间没有空格G逗号逗号(,)表示采用标准格式,下一个输出项将在下一个表示采用标准格式,下一个输出项将在下一个打印区打印区(每隔每隔14列开始一个打印区,每列的宽度是所有列开始一个打印区,每列的宽度是所有字符的平均宽度字符的平均宽度)的起始位置输出的起始位置输出JPrint 1,2,3Print“We”;“
19、study”;“VB”E 标准格式标准格式E 紧缩格式紧缩格式JPrint 1,2,3Print We,study,VB5.0 运行结果运行结果 1 2 3WestudyVB标准格式标准格式GPrint各数据分别存储在各自的标准输出区内,数据之各数据分别存储在各自的标准输出区内,数据之间留有一定的空格字符,数据划分非常明显(间留有一定的空格字符,数据划分非常明显(读取数读取数据容易据容易)G对于一个对于一个数值型数值型数据,数据,前面有一个符号位前面有一个符号位(对于正号,(对于正号,不显示但留有一个空格),数据不显示但留有一个空格),数据后留有一个空格后留有一个空格作为作为分隔符分隔符JPr
20、int 1;2;3Print We;study;VB5.0 运行结果运行结果 1 -2 3WestudyVB紧凑格式紧凑格式GPrint各数据紧凑地显示,各数据紧凑地显示,节省空间节省空间G对于一个对于一个数值型数值型数据,数据,前面有一个符号位前面有一个符号位(对于正号,(对于正号,不显示但留有一个空格),数据不显示但留有一个空格),数据后留有一个空格后留有一个空格作为作为分隔符分隔符G对于对于字符串字符串数据,输出的各字符串数据间没有空格而数据,输出的各字符串数据间没有空格而连成一片,造成连成一片,造成读取数据的困难读取数据的困难G定位输出函数:定位输出函数:G GSpc(nSpc(n):
21、可选的。在显示或打印列表中的下一个输出项前插入n个空格,从而实现对输出进行定位G GTab(n)Tab(n):可选的。用来将输出定位在绝对n列号上,使用无参数的Tab()表示将输出定位在下一个打印区的起始位置 例 题用用Print方法和定位函数输出数据方法和定位函数输出数据 Spc(n)Spc(n):下一个输出项:下一个输出项前插入前插入n个空格个空格G GTab(n)Tab(n):输出定位在:输出定位在绝对绝对n列号上列号上Private Sub Form_Click()Print Tab(8);A Print Tab(6);B;Spc(2);B Print Spc(3);C;Spc(2);
22、C;Spc(2);C Print Tab(2);D;Spc(2);D;Spc(2);D;Spc(2);DEnd Sub4.3 选择结构程序设计 有些实际问题中,往往需要根据条件成立与否,决定程序的执行方向,在不同的条件下,进行不同的处理。使用顺序结构是无法解决这一问题的,需要用选择结构。单行结构条件语句 IfThenElse 块结构条件语句 IfThenEndIf 多分支选择语句 Select CaseEnd Select 以上语句又统称为条件语句,其功能都是根据条件或表达式的值有选择地执行一组语句。一、一、IfIf语句语句1、单行结构的IfThenElse语句 格式1:功能:如果成立,则执行
23、,否则执行 。J可以是关系表达式、逻辑表达式、数值表达式或字符串表达式。对于数值表达式,VB将0作为False、非0作为True处理;对于字符串表达式,VB只允许包含数字的字符串,当字符串中的数字 值为0时,则认为是False,否则认为是True。J 和可以有多条语句,各语句之间用冒号隔开。J 单行If语句必须在一行内写完。If Then Else 例4-4 输入一个数,求其绝对值。运行界面如图所示。方法一:Private Sub Command1_Click()Dim X As Single,Y As Single X=Val(Text1.Text)If X=0 Then Y=X Else
24、Y=-X Text2.Text=YEnd Sub方法二:Private Sub Command1-Cliok()Dim X AS Single X=Val(Text1.Text)If X0 Then X=-X Text2.Text=X End Sub单行结构条件语句可以嵌套,也就是说,在或中可以包含另外一个单行结构条件语句。例:1 (X0)Y=0 (X=0)-1(X=0 THEN IF X0 THEN Y=1 ELSE Y=0 ELSE _ELSE Y=-1 续行符2、块结构双分支条件语句IfThenElse语句 TF语句体语句体2条件表达式条件表达式语句体语句体1 If.Then.Else
25、If.Then.Else结构流程图结构流程图功能:如果成立,则执行,否则执行。格式1:If Then Else END If Private Sub Command1_Click()Dim a As Single,b As Single,c As Single,x As Single a=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)If a=b Then x=a Else x=b End If If x=bx=bx=axcx=c输出输出x输入输入a,b,c例4-6 输入三个不同数,将它们从大到小排序。aba与与b互换互换aca与与c互换互换
26、输出输出a,b,c输入输入a,b,cbcb与与c互换互换分析:t=aa=bb=tLabel4.caption=“排序结果为”&Str(a)&Str(b)&Str(c)例4-6 输入三个不同数,将它们从大到小排序。aba与与b互换互换aca与与c互换互换输出输出a,b,c输入输入a,b,cbcb与与c互换互换Private Sub Command1_Click()Dim a As Single,b As Single,c As Single,t As Single a=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)If a b Then t=a
27、 a=b b=t End If If a c Then t=a a=c c=t End If If b c Then t=b b=c c=t End If Label4.Caption=排序结果为排序结果为:&Str(a)&Str(b)&Str(c)End Sub输出输入处理3 3 3 3、块结构多分支条件语句块结构多分支条件语句IfThenElseIfIfThenElseIf语句语句格式:If Then ElseIf Then Elself Then Else EndIf条件条件1语句组语句组1条件条件2语句组语句组2条件条件n语句组语句组n其他语句组其他语句组功能:实现多分支选择例4-7
28、求一元二次方程ax2+bx+c=0的根。d0有有2不等实根不等实根d=0有有2相等实根相等实根有有2复根复根d=b*b-4*a*c分析:d0有有2不等实根不等实根d=0有有2相等实根相等实根有有2复根复根d=b*b-4*a*cPrivate Sub Command1_Click()Dim a As Single,b As Single,c As Single,d As SingleDim x1 As Single,x2 As Singlea=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)d=b*b-4*a*cIf d 0 Then X1=(-
29、b+Sqr(d)/(2*a)X2=(-b-Sqr(d)/(2*a)Text4.Text=x1 保留两位小数 Text5.Text=x2ElseIf d=0 Then 有重根 X1=-b/(2*a)Text4.Text=x1 Text5.Text=x1Else 复根 X1=-b/(2*a)X2=Sqr(-d)/(2*a)Text4.Text=x1&+&x2&i Text5.Text=x1&-&x2&iEnd IfEnd SubIf Then IfThen If Then Else End If IfThenElse End IfEnd If End If二、二、If语句的嵌套语句的嵌套If语句的
30、嵌套指的是在If或Else后的语句体中又包含If语句。If Then ElseEND If又包含if语句 例如:IF X0 THEN Y=1 ELSE IF X=0 THEN Y=0 ELSE Y=-1 END IF END IF例4-8 某书店为了促销,采用购书打折扣的销售办法,每位顾客一次购书:在100元以上200元以下者,按九折优惠;在200元及以上300元以下者,按八五折优惠;在300元及以上者,按八折优惠;编写程序,输入购书款数,计算输出优惠价。Y=分析:设购书款数为X元,优惠价为Y元,则:X (X100)0.9*X (100 X 200)0.85*X(200 X 300)0.8*X
31、 (X 300)Private Sub Command1_Click()Dim X As Single,Y As Single X=Val(Text1.Text)If X=100 Then Y=X Else If X 200 Then Y=0.9*X Else If X 300 Then Y=0.85*X Else Y=0.8*X End If End If End If Text2.Text=YEnd Sub三、多分支条件选择语句(三、多分支条件选择语句(Select CaseSelect Case)格式:Select Case Case 表达式列表1 Case 表达式列表2 Case El
32、se End Select功能:根据的值,按顺序匹配Case后的表达式表,如果匹配成功,则执行该Case下的语句组,然后转到End Select语句之后继续执行;如果的值与各表达式表都不匹配,则执行CaseElse之后的,再转到EndSelect语句之后继续执行。可以是任何数值表达式或字符表达式,case的三种形式:1),如:Case l,3,5 2)TO 如:Case l0 TO 30 Case“A”TO“Z”3)Is 如:Case Is=10 以上三种方式可以同时出现在同一个Case语句之后,各项之间用逗号隔开。如:Case l,3,10 T0 20,Is0 Private Sub Com
33、mand1_Click()Dim X AS Single,Y AS Single X=Val(Text1.Text)Select Case X Case Is=100 Y=X Case Is 200 Y=0.9*X Case Is b,a,b):返回a、b中较大值例例例例:Private Sub Command1_Click()If Text1.Text=王刚 Then If UCase(Text2.Text)=ABCDE Then MsgBox 口令正确!Else Beep MsgBox 口令错误!End End If Else Beep MsgBox 用户名错误!End End If Pr
34、int Print Spc(20);欢迎使用!End Sub4.4 循环结构程序设计循环结构程序设计学习重点和难点学习重点和难点循环的概念循环的基本语句结构和流程循环在常用算法中的应用在解决实际问题中,经常要对某一处理过程反复执行多次,这就是循环。由两部分组成:循环体:即要重复执行的语句序列;循环控制部分:即用于规定循环的重复条件或重复次数,同时确定循环范围的语句。引例引例单击窗体,要求在窗体上显示6行星号&分析:要求显示的信息是每行是由16个星号所构成的字符串,所以可以通过连续6次调用窗体的Print方法实现图形的显示Private Sub Form_Click()Print*Print*P
35、rint*Print*Print*Print*End Subs若要求显示10行或更多行这样的信息s若打印信息的行数要求是由用户决定J专门用于进行重复操作的语句结构 循环结构循环结构 Do-Loop循环结构当型循环(While)直到型循环(Until)While型循环结构For-Next 循环结构1.DoLoop1.DoLoop1.DoLoop1.DoLoop循环语句循环语句循环语句循环语句Do循环前测试型后测试型当当 型型(DO WHILELOOP)直到型(DO UNTILLOOP)当当 型型(DOLOOP WHILE)直到型(DOLOOP UNTIL)格式一:前测式当型循环Do While
36、Exit DoLoop格式二:前测式直到型循环Do Until Exit DoLoop格式三:后测式当型循环Do Exit DoLoop While格式四:后测式直到型循环Do Exit Do Loop UntilDoLoop循环结构的四种格式 当型当型循环(While)格式1Do While 循环条件循环体Loop格式2Do循环体Loop While 循环条件True循环条件循环体False循环条件循环体TrueFalse直到型循环(Until)格式1Do Until 循环条件循环体Loop格式2 Do 循环体 Loop Until 循环条件False循环条件循环体True循环条件循环体Fa
37、lseTrue例:求1+2+3+100方法一:Private Sub Command1-Click()Dim s AS Single,i AS Single s=0:i=1 Do While i=100 s=s+i i=i+1 Loop Text1.Text=s EndSub开始0s1ii100s+isi+1i输出s结束方法二:Private Sub Command1-Click()Dim s AS Single,i AS Single s=0:i=1 Do s=s+i i=i+1 Loop While i 100 s=s+i i=i+1 Loop Text1.Text=s EndSub方法四
38、:Private Sub Command1-Click()Dim s AS Single,i AS Single s=0:i=1 Do s=s+i i=i+1 Loop Until i 100 Text1.Text=s EndSubWhile和Until的区别:While表示当条件成立时执行循环体,Until则是在条件不成立时执行循环体。前测式和后测式的区别:前测式先对进行判断,后执行循环体,如果第一次条件就不成立循环体一次也不执行后测式先执行循环体,后对进行判断,循环体至少执行一次。Exit Do语句:用于退出循环体,执行Loop语句之后的语句。该语句一般放在某条件结构中,用于表示当某种条件
39、成立时,强行退出循环X=9DO PRINT “*”X=X-1 IF X0 THEN EXIT DO LOOP 例:引例引例单击窗体,要求在窗体上显示6行星号&分析:要求重复6次输出一行由16个星号所构成的字符串,因此,循环条件就是输出的行数6,重复执行的循环体就是Print*Private Sub Form_Click()Dim i As Integer 定义计数器变量i来记录目前已输出的行数 i=0 Do While i 6 当输出行数未达到6行,反复执行下面语句 Print*i=i+1 每输出一行信息,计数器i累加1 Loop 返回到Do While行End Sub练习:用其他几种DOLO
40、OP语句改写程序引例引例单击窗体,要求在窗体上显示n行星号&分析:要求输出的16个星号的行数由用户决定 InputBoxPrivate Sub Form_Click()n=Val(InputBox(请输入行数:请输入行数:)接收用户输入的行数 i=0 Do While i 3000的最小的最小n值。值。Private Sub Command1_Click()Dim s As Integer,n As Integer s=0 n=0 Do While s 3000 n=n+1 s=s+n Loop Text1.Text=n EndSub例例4-11 求两个正整数的最小公倍数。求两个正整数的最小公
41、倍数。False输入两个自然数输入两个自然数m,nr=m Mod nm=nn=rr0输出最输出最小小公倍数公倍数a*b/m开始开始结束结束TrueFalse输入两个自然数输入两个自然数m,nr=m Mod nm=nn=rr0输出最输出最小小公倍数公倍数a*b/m开始开始结束结束TruePrivate Sub Command1_Click()Dim m As Integer,n As Integer,r As Integer,t As Integer Dim a As Integer,b As Integer m=Val(Text1.Text)n=Val(Text2.Text)a=m:b=n I
42、f m n Then t=m:m=n:n=t End If Do r=m Mod n m=n n=r Loop While r 0 Label3.Caption=最小公倍数:&(a*b/m)End Sub2 2 2 2、While While While While型循环控制语句型循环控制语句型循环控制语句型循环控制语句格式:While While 循环条件循环条件循环条件循环条件 循环体循环体循环体循环体WendWendJ这种结构使用完全类似于Do-Loop的当型循环(格式1),表示当循环条件为True时,反复执行循环体,直到循环条件为False为止J一般,现在常用Do-Loop结构化与适应
43、性更强的当型循环格式替换这种格式 3 3 3 3、For-Next For-Next For-Next For-Next 循环结构语句循环结构语句循环结构语句循环结构语句格式:ForFor 循环控制变量循环控制变量循环控制变量循环控制变量=初值初值初值初值 ToTo 终值终值终值终值 Step Step 步长步长步长步长 循环体循环体循环体循环体Next Next 循环控制变量循环控制变量循环控制变量循环控制变量J循环控制变量也称为“循环变量”、“控制变量”或“循环计数器”,它必须为数值型变量,但不能是下标变量或记录元素J初值、终值和步长也必须是数值表达式。其中步长是指每次循环变量的增量,一般
44、当初值终值,则步长应取负值。仅当步长为1时,Step 步长可以省略ForFor 循环控制变量循环控制变量=初值初值 ToTo 终值终值 Step Step 步长步长 循环体循环体Next Next 循环控制变量循环控制变量JFor-Next循环结构语句的执行流程图J循环次数的一般计算公式:Int(终值-初值)/步长)+1J事先已知循环次数,则可使用For-Next循环结构语句计数循环True计算初值、终值和步长表达式的值循环变量=初值表达式的值循环体循环变量=循环变量+步长循环变量超过终值循环变量超过终值?FalseJFor I=2 to 18 step 3 c=c+1 Next I计算循环次
45、数第几次循环第几次循环I12253841151461720Jc=18 For I=2 to c step 3 c=c+1 Next I上述代码段中虽然变量c在循环体内改变,但根据For循环执行流程,循环控制变量I的终值依旧为18,并未改变,因此循环次数=6第几次循环第几次循环cI1225384115146172018192021222324 当循环变量在循环体内被重新赋值,则会影响和改变循环当循环变量在循环体内被重新赋值,则会影响和改变循环次数次数 Jc=18For I=2 to 18 step 3 c=c+1 I=I+2 Next I上面循环体中,循环控制变量I被改变,所以此时会影响循环次数
46、,循环次数=4第几次循环第几次循环cI12243941419181920212271217224 4、循环嵌套循环嵌套循环嵌套循环嵌套Do While 循环条件循环体Loop在一个循环的循环体中又包含另外一个循环Do While 循环条件 ForFor 循环控制变量循环控制变量循环控制变量循环控制变量=初值初值初值初值 ToTo 终值终值终值终值 Step Step 步长步长步长步长 循环体循环体循环体循环体Next Next 循环控制变量循环控制变量循环控制变量循环控制变量LoopFor i=1 To 9 For j=1 To 9 Print i;*;j;=;i*j;Next j Print
47、Next i例题例题4-14打印乘法“九九表”分析:9*9的二维表,用双重循环。Private Sub Form_Click()FontSize=12 Print Tab(25);九九表 Print Print *;For i=1 To 9 Print Tab(i*6);i;Next i Print For j=1 To 9 Print j;For k=1 To j m=j*k Print Tab(k*6);m;Next k Print Next jEnd Sub 内层与外层循环不得交叉。如:For x For x For y For y Next y Next x Next x Next y
48、 正确 错误 内层与外层循环的循环变量名不得相同 For a=1 To 10 For a=5 To 10 Print a Next a Next a 错误注意:例4-15 用下列近似式计算Sin(x)的近似值:Sin(x)Private Sub Command1_Click()Dim x As Single,y As Single,n As Integer,f As long x=Val(Text1.Text)n=Val(Text2.Text)y=x:s=1 For i=1 To n f=1:p=1 For j=1 To 2*i+1 f=f*j p=p*x Next j s=-s y=y+s*
49、p/f Next i Text3.Text=y End Sub思考题:素数问题思考题:素数问题素数就是大家在数学中熟知的质数,即一个大于1且只能被1和它本身整除的整数输入一个正整数,判断该正整数是否为素数&分析:从素数的定义出发:既然素数除了1和它本身之外,不能被任何数整除,那么就把待判断的数X依次与除了1和它本身之外的其他所有的数进行除,看是否有整除的情况;若有,表示X不是素数,否则就是素数。除数的范围i从2开始到X-1(因为一个数不可能能整除比它自身大的数),由于要对这个范围内的每一个数都进行相同的重复除操作,所以使用循环 输入一个正整数,判断该正整数是否为素数输入一个正整数,判断该正整数
50、是否为素数For i=2 To x-1 如果能被某个数据整除,x就不是素数,直接提前结束循环 If x Mod i=0 Then Exit ForNext iIf i=x-1 Then 若 ix-1,即说明x是素数MsgBox CStr(x)&是素数End IfFor i=2 To x-1 如果能被某个数据整除,x就不是素数直接提前结束循环 If x Mod i=0 Then Exit ForNext iIf i=x-1 Then 若 ix-1,即说明x是素数MsgBox CStr(x)&是素数End If输入一个正整数,判断该正整数是否为素数实际上数学上已经证明:实际上数学上已经证明:x不可