VB课件结构化程序设计

上传人:仙*** 文档编号:73032459 上传时间:2022-04-10 格式:PPT 页数:87 大小:874KB
收藏 版权申诉 举报 下载
VB课件结构化程序设计_第1页
第1页 / 共87页
VB课件结构化程序设计_第2页
第2页 / 共87页
VB课件结构化程序设计_第3页
第3页 / 共87页
资源描述:

《VB课件结构化程序设计》由会员分享,可在线阅读,更多相关《VB课件结构化程序设计(87页珍藏版)》请在装配图网上搜索。

1、3.1 顺序顺序结构程序设计结构程序设计3.2 选择选择结构程序设计结构程序设计3.3 循环循环结构结构设计结构结构设计第第3 3章章 结构化程序设计结构化程序设计1. Print方法方法Print方法的语法格式为:方法的语法格式为:object.Print Spc(n) | Tab(n) expression charpos其中:其中:object:窗体、图片框、打印机等对象。:窗体、图片框、打印机等对象。Expression:要打印的数值表达式或字符串表达式。:要打印的数值表达式或字符串表达式。Charpos:逗号逗号或或分号分号,指定下个字符的插入点。,指定下个字符的插入点。3.1 顺序

2、顺序结构程序设计结构程序设计3.1.1 数据输出数据输出2. 与与Print方法有关的函数方法有关的函数与与Print相配合的函数:相配合的函数: (1)Tab函数函数与与 Print # 语句或语句或 Print 方法一起使用,对输出进行定位。格方法一起使用,对输出进行定位。格式:式:Tab(n)当在一个当在一个 Print方法中有多个方法中有多个Tab函数时,每个函数时,每个Tab函数对应函数对应一个输出项,各输入项之间用分号隔开。一个输出项,各输入项之间用分号隔开。例例Private Sub Form_Click() Print 12345678901234567890 Print Ta

3、b(5); 5; Tab(10 - 2); 8, _ 注意这里注意这里10-2当前位置当前位置5,故同行显示,故同行显示 Print Tab(5); 5; Tab(10 - 6); 4; Tab(20 - 15); 5; _ 注意这里注意这里10-6当前位当前位 置置4,故同行显示,故同行显示End Sub(2)Spc函数函数格式:格式:Spc(n)在显示或打印列表中的下一个表达式之前插入在显示或打印列表中的下一个表达式之前插入n个空白数,个空白数,n为为032767之间的整数。之间的整数。Spc函数与输出项之间用分号隔开。函数与输出项之间用分号隔开。 如果如果 n 小于输出行的宽度,则下一个

4、打印位置将紧接在数个已打小于输出行的宽度,则下一个打印位置将紧接在数个已打印的空白之后。如果印的空白之后。如果 n 大于输出行的宽度,则大于输出行的宽度,则 Spc 利用下列公式利用下列公式计算下一个打印位置:计算下一个打印位置:当前位置当前位置+ (n Mod 行宽行宽)Spc函数与函数与Tab函数的作用类似,可以互相代替。但应注意,函数的作用类似,可以互相代替。但应注意,Tab函数从对象的左端开始记数,而函数从对象的左端开始记数,而Spc函数只表示两个输出项之间函数只表示两个输出项之间的间隔。的间隔。3. 使用位置属性使用位置属性位置属性位置属性CurrentX和和CurrentY常用来把

5、文本精确地输出到常用来把文本精确地输出到窗体、图片框或打印页上。这两个属性分别表示当前输出位窗体、图片框或打印页上。这两个属性分别表示当前输出位置的横坐标与纵坐标。置的横坐标与纵坐标。 格式:格式: 对象名称对象名称.CurrentX =x对象名称对象名称.CurrentY =y例:下面程序将图片框相对于窗体居中显示,图片框中的文字例:下面程序将图片框相对于窗体居中显示,图片框中的文字居中显示。居中显示。Private Sub Form_Click()Dim str1 As String str1 = 图片框相对窗体、文字相对图片框居中显示图片框相对窗体、文字相对图片框居中显示 Picture

6、1.FontName = 宋体宋体 图片框中文字的字体图片框中文字的字体 Picture1.FontSize = 16 图片框中文字的字号图片框中文字的字号 Picture1.Left = (ScaleWidth - Picture1.Width) / 2 图片框水平位置图片框水平位置 Picture1.Top = (ScaleHeight - Picture1.Height) / 2 图片框垂直位置图片框垂直位置 Picture1.CurrentX = Picture1.ScaleLeft + Picture1.Width / 2 - _ Picture1.TextWidth(str1) /

7、 2 输出水平位置输出水平位置 Picture1.CurrentY = Picture1.ScaleTop + Picture1.Height / 2 - _ Picture1.TextHeight(str1) / 2 输出垂直位置输出垂直位置 Picture1.Print str1 在图片框中输出字符串在图片框中输出字符串str1End Sub各对象的其他参数保持默认值。程序设计时和运行结果见图各对象的其他参数保持默认值。程序设计时和运行结果见图4-2。无论怎样调整窗体,。无论怎样调整窗体,只要单击窗体,都会按题目要求调整图片框和文本的位置。只要单击窗体,都会按题目要求调整图片框和文本的位置

8、。TextWidth()为求文本宽为求文本宽度的函数。度的函数。 (a)设计时 (b)运行时4. 清除方法清除方法CLSCls 将清除图形和打印语句在运行时所产生的文本和图形,将清除图形和打印语句在运行时所产生的文本和图形,清除后的区域以背景色填充。但是设计时在清除后的区域以背景色填充。但是设计时在 Form 中使用中使用 Picture 属性设置的背景位图和放置的控件不受属性设置的背景位图和放置的控件不受 Cls 影响。影响。 语法:语法: 对象名称对象名称.Cls例如,为了在运行时双击窗体时清除图片框中的文本,编例如,为了在运行时双击窗体时清除图片框中的文本,编写的程序为:写的程序为:Pr

9、ivate Sub Form_DblClick() Picture1.Cls 清除图片框中的文本清除图片框中的文本End Sub如果将代码由如果将代码由Picture1.Cls改为改为.Cls,将无法清除图片框,将无法清除图片框中的文本。中的文本。 5. 使用使用“标签标签”控件的输出控件的输出标签(标签(Label)是)是VB中最常用的输出文本信息的工具,目前中最常用的输出文本信息的工具,目前几乎完全取代了几乎完全取代了Print方法。方法。例:建立一个例:建立一个Label控件和控件和Command控件。加入如下代码,运控件。加入如下代码,运行程序。行程序。 Private Sub Com

10、mand1_Click() Label1.WordWrap = True Label1.AutoSize = True Label1.BorderStyle = 1 Label1.BackColor = &H80000014 End Sub由运行结果可知,单击命令按钮后,标签控件可以自动适用内容,由运行结果可知,单击命令按钮后,标签控件可以自动适用内容,并自动换行,且加上边框,背景色为白色以突出显示文字。并自动换行,且加上边框,背景色为白色以突出显示文字。对象对象属性属性设计时属性值设计时属性值说明说明Command1Caption单击此按钮,令单击此按钮,令WordWrap=True,Aut

11、oSize=True命令按钮标题命令按钮标题Label1Caption将将WordWrap属性设置为属性设置为True,则,则Caption属属性的内容自动换行并垂直扩充;将性的内容自动换行并垂直扩充;将AutoSize属性设置为属性设置为True,控件自动适应内容,控件自动适应内容标签控件的内容标签控件的内容WordWrapFalse不自动换行不自动换行AutoSizeFalse控件不能自动调整控件不能自动调整Font宋体、三号宋体、三号 (a)设计时 (b)运行结果3.1.2 数据输入1. 使用使用“文本框文本框”控件进行输控件进行输入入例例1:如图所示,在设计时建立三个标签控件和三个文本

12、:如图所示,在设计时建立三个标签控件和三个文本框控件。要求在运行时,点击相应的计算按钮,会显示正框控件。要求在运行时,点击相应的计算按钮,会显示正确的计算结果。确的计算结果。Private Sub Command1_Click() Dim A As Integer Dim B As Integer Dim Sum As Single A = Text1.Text B = Text2.Text Sum = A + B Text3.Text = SumEnd Sub2. SetFocus 方法方法使某个控件获得焦点,可以有多种方法:使某个控件获得焦点,可以有多种方法:(1)直接单击这一控件。)直接

13、单击这一控件。(2)按)按Tab键(或键(或Tab+Shfit组合键)按规定的次序在各控组合键)按规定的次序在各控件之间移动焦点。件之间移动焦点。(3)在代码中使用)在代码中使用SetFocus 方法使得某一控件获得焦点。方法使得某一控件获得焦点。使用使用SetFocus 方法的格式为:方法的格式为:.SetFocus其中:其中:为对象表达式,其值为可以获得焦点的控件:为对象表达式,其值为可以获得焦点的控件对象名称。对象名称。例例2:在上述工程中,增添一个命令按钮,单击该按钮时将清:在上述工程中,增添一个命令按钮,单击该按钮时将清空所有文本框中的内容空所有文本框中的内容,并使第一个文本框获得焦

14、点。并使第一个文本框获得焦点。 编写编写Command1的的Click事件的代码事件的代码Private Sub Command1_Click() Text1.Text = Text2.Text = Text1.SetFocusEnd Sub 3. 与用户交互的函数和过程与用户交互的函数和过程 1InputBox函数函数 作用:在一对话框中显示提示,等待用户输入正文或按下按钮,作用:在一对话框中显示提示,等待用户输入正文或按下按钮,并返回包含文本框中内容,函数值的类型为并返回包含文本框中内容,函数值的类型为 String类型。类型。 语法格式:语法格式: 变量变量=InputBox(, ,)2

15、MsgBox函数和函数和MsgBox过程过程作用:在对话框中显示信息,等待用户单击按钮,并返回一个整作用:在对话框中显示信息,等待用户单击按钮,并返回一个整数以标明用户单击了哪个按钮。数以标明用户单击了哪个按钮。 语法格式语法格式 变量变量=MsgBox(, , )例例3:在上述实例中,要求利用输入对话框为操作数赋值,:在上述实例中,要求利用输入对话框为操作数赋值,再利用消息对话框输出结果。再利用消息对话框输出结果。如果单击如果单击“确定确定”按钮,则按钮,则 A 的值为输入值的值为输入值“1234”,否则,否则为空。为空。(2)MsgBox函数和函数和MsgBox过程过程MsgBox函数在对

16、话框中显示信息,等待用户单击按钮,函数在对话框中显示信息,等待用户单击按钮,并返回一个整数以标明用户单击了哪个按钮。其语法格式并返回一个整数以标明用户单击了哪个按钮。其语法格式为:为:变量变量=MsgBox(, , )MsgBox语句的用法为:语句的用法为:MsgBox , , 其中:其中:、的意义同的意义同InputBox函数。函数。可选项。整型表达式,指定显示按钮的数目及形可选项。整型表达式,指定显示按钮的数目及形式,使用的图标类型,缺省按钮的种类以及消息框的强制式,使用的图标类型,缺省按钮的种类以及消息框的强制回应等。如果省略,则回应等。如果省略,则 的缺省值为的缺省值为 0。l 设置值

17、及其意义设置值及其意义分组分组系统常数系统常数值值描述描述按钮形式按钮形式vbOKOnly0只显示只显示 OK 按钮。按钮。VbOKCancel1显示显示 OK 及及 Cancel 按钮。按钮。VbAbortRetryIgnore2显示显示 Abort、Retry 及及 Ignore 按钮。按钮。VbYesNoCancel3显示显示 Yes、No 及及 Cancel 按钮。按钮。VbYesNo4显示显示 Yes 及及 No 按钮。按钮。VbRetryCancel5显示显示 Retry 及及 Cancel 按钮。按钮。图标类型图标类型VbCritical16显示显示 Critical Messa

18、ge 图标。图标。VbQuestion32显示显示 Warning Query 图标。图标。VbExclamation48显示显示 Warning Message 图标。图标。VbInformation64显示显示 Information Message 图标。图标。默认按钮默认按钮vbDefaultButton10第一个按钮是缺省值。第一个按钮是缺省值。vbDefaultButton2256第二个按钮是缺省值。第二个按钮是缺省值。vbDefaultButton3512第三个按钮是缺省值。第三个按钮是缺省值。lMsgBox函数的返回值系统常数系统常数返回值返回值描述描述VbOK1确定确定vbC

19、ancel2取消取消vbAbort3终止终止vbRetry4重试重试vbIgnore5忽略忽略VbYes6是是VbNo7否否单击“是”:完成提交操作,显示如图4-7对话框,单击“确定”结束程序。单击“否”:返回Command1_click事件,重新显示如图4-5所示输入对话框。单击“取消”:没有提交操作,显示如图4-8对话框,单击“确定”结束程序。例4-4:在上例中,如果要求在单击InputBox对话框中的“确定”按钮后,弹出一个如图4-6所示的对话框,以便用户进行审查并作出如下选择: 图4-7 MsgBox 对话框的应用 图4-8 MsgBox 对话框的应用修改的Command1_click

20、事件代码为:Private Sub Command1_Click()Dim intMsgin As IntegerDim strmsg As StringstrText = 请输入您的身份证号并单击“确定” + Chr(13) + Chr(10) + 重新填写请单击“取消”strIDcard = InputBox$(strText, 身份证号, , 100, 100)strmsg = 请确认您的身份证号码: + Chr(13) + Chr(10) + strIDcard 图4-9对话框显示的内容If strIDcard ThenintMsgin = MsgBox(strmsg, vbYesNo

21、Cancel + vbQuestion + vbDefaultButton2, 确认身份证)End IfSelect Case intMsginCase 6 .提交意见单的代码略MsgBox 您的意见已经提交,谢谢!, vbOKOnly + vbInformation, 已经提交Case 7Command1_Click 重新执行Command1_Click 事件Case 2MsgBox 您已经放弃提交意见,欢迎下次参加!, vbOKOnly + vbCritical, 放弃提交End SelectEndEnd Sub3.2 3.2 选择选择结构程序设计结构程序设计 3.2.1 3.2.1 If

22、If条件语句条件语句1 1单分支条件结构(单分支条件结构(If.ThenIf.Then语句)语句)用用 If.Then 结构有条件地执行一个或多个语句。单行语法和多行块语法结构有条件地执行一个或多个语句。单行语法和多行块语法都可以使用:都可以使用:(1)If Then (2)If Then End If下面两个例子等价:下面两个例子等价:(1)If todayDate Now Then todayDate = Now(2)If todayDate Now Then todayDate = Now End If注意:注意:If.Then 的单行格式不用的单行格式不用 End If 语句语句。如果

23、。如果 为为 True 时时要执行多行代码,则必须使用多行块要执行多行代码,则必须使用多行块 If.Then.End If 语法。例如:语法。例如:If todayDate Now Then todayDate = Now Timer1.Enabled = False 定时器控制失效。定时器控制失效。End If True False 空空 todayDate NowTrue FalsetodayDate = NowTimer1.Enabled = False空空单分支条件语句单分支条件语句 单分支条件语句实例单分支条件语句实例2. 2. 双分支结构(双分支结构(If.Then.ElseIf.

24、Then.Else语句)语句)可以用可以用 If.Then.Else If.Then.Else 块定义几个语句块,执行其中一个语句。其块定义几个语句块,执行其中一个语句。其语法格式也有两种形式:语法格式也有两种形式:(1 1)If If Then Then 1 Else Else 2 End If End If(2 2)If If Then Then Else Else 2当当的值为真时,执行的值为真时,执行Then后面的语句块后面的语句块1(或语句(或语句1),否则),否则执行执行Else后面的语句块后面的语句块2(或语句(或语句2)。其流程见图)。其流程见图4-11。y= True Fal

25、se 0, 5430, 314sin2222xxxxxx x0True False 例:计算分段函数例:计算分段函数y = 本题在选择条件时,可以选择本题在选择条件时,可以选择x0作为条件,也可以选择作为条件,也可以选择x0作为作为条件。这里选择条件。这里选择x0作为条件。作为条件。y=31)x*4sin(x)*sin(x)*spr(2*2y=3*x*x+4*x-51)用单分支结构实现)用单分支结构实现y=3*x*x+4*x-5If x0 Then y=31)x*4sin(x)*sin(x)*spr(2*2或或If x0 Then y=3*x*x+4*x-5If x0 Then y=31)x*

26、4sin(x)*sin(x)*spr(2*2但是,不能这样表示:但是,不能这样表示:If x0 Then y=31)x*4sin(x)*sin(x)*spr(2*2(2)用双分支结构实现)用双分支结构实现If x0 Then y=31)x*4sin(x)*sin(x)*spr(2*2Elsey=3*x*x+4*x-5End Ify=3*x*x+4*x-53. 3. 多分支结构(多分支结构(IfThenElseIfIfThenElseIf语句)语句)多分支结构可以处理两个或两个以上分支。其语句形式为:多分支结构可以处理两个或两个以上分支。其语句形式为:If Then ElseIf Then El

27、se End IfVisual Basic 首先测试首先测试。如果它为。如果它为 False,Visual Basic就测试就测试,依次类推,直到找到一个为,依次类推,直到找到一个为 True 的条的条件。当它找到一个为件。当它找到一个为 True 的条件时,的条件时,Visual Basic就会执行相就会执行相应的语句块,然后执行应的语句块,然后执行 End If 后面的代码。作为一个选择,可以后面的代码。作为一个选择,可以包含包含 Else 语句块,如果条件都不是语句块,如果条件都不是 True,则,则 Visual Basic 执行执行 Else 语句块。语句块。语句块语句块n 语句块语

28、句块n+1多分支结构流程多分支结构流程FalseTrueTrueFalseTrueFalse语句块语句块n+1 语句块语句块n 语句块语句块1语句块语句块2例:大学录取新生时,根据学生总分情况给与奖励,条件如下:例:大学录取新生时,根据学生总分情况给与奖励,条件如下:(1)四门总分不低于)四门总分不低于700分,特等奖。分,特等奖。(2)四门总分)四门总分680分(含分(含680分)分)700分(不含分(不含700分),优秀奖。分),优秀奖。(3)前三门单科不低于)前三门单科不低于145分,第四门不低于分,第四门不低于280分),特别奖。分),特别奖。(4)奖励按特等奖、优秀奖、特别奖由高到低

29、,)奖励按特等奖、优秀奖、特别奖由高到低,不重复计奖不重复计奖(包(包括单科)。括单科)。要求:四科成绩(要求:四科成绩(intmark1、intmark2、intmark3、intmark4)依次在四个文本框中输入,总分(依次在四个文本框中输入,总分(intmark0)在标签控件上显示。)在标签控件上显示。单击命令按钮单击命令按钮Command1后,在对话框中显示获奖情况。后,在对话框中显示获奖情况。分析:获奖条件表达式分别为:分析:获奖条件表达式分别为:(1)intmark0=700(2)intmark0=680 AND intmark0=145 OR intmark2=145 OR in

30、tmark3=145 OR intmark4=280多分支结构流程实例多分支结构流程实例TrueFlaseTrueFlaseintmark0=700TrueFlase特等奖特等奖优秀奖优秀奖intmark0=680 AND intmark0148 OR intmark2148 ORintmark3148 OR intmark4148特别奖特别奖您没有获奖您没有获奖编写程序代码根据流程图,编写出Command_click事件的代码为:Private Sub Command1_Click() Dim intmark0 As Integer, intmark1 As Integer Dim intm

31、ark2 As Integer, intmark3 As Integer, intmark4 As Integer intmark1 = CInt(Text1.Text) intmark2 = CInt(Text2.Text) intmark3 = CInt(Text3.Text) intmark4 = CInt(Text4.Text) intmark0 = intmark1 + intmark2 + intmark3 + intmark4 Label3.Caption = intmark0 If intmark0 = 700 Then MsgBox 您获得了特等奖, vbOKOnly + v

32、bInformation, 获奖通知 ElseIf intmark0 = 680 Then MsgBox 您获得了优秀奖, vbOKOnly + vbInformation, 获奖通知 ElseIf intmark1 = 145 Or intmark2 = 145 Or intmark3 = 145 Or intmark4 = 280 Then MsgBox 您获得了特别奖, vbOKOnly + vbInformation, 获奖通知 Else MsgBox 很遗憾,您没有获奖, vbOKOnly + vbInformation, 获奖通知 End IfEnd Sub4. If4. If语句

33、的嵌套语句的嵌套上面学习了上面学习了If语句的基本形式,可以通过这些基本形式加以复合,语句的基本形式,可以通过这些基本形式加以复合,获得更为复杂的获得更为复杂的If结构,称为结构,称为If语句的嵌套。一般形式如左图所语句的嵌套。一般形式如左图所示。右图为在示。右图为在Else块中嵌套块中嵌套If结构的形式。可根据实际情况选择结构的形式。可根据实际情况选择采用何种结构。采用何种结构。If语句复合结构的一般形式语句复合结构的一般形式 在在Else块中嵌套块中嵌套If结构的形式结构的形式 例4-7:求a、b、c中三个实数的最大值、最小值,程序中不得使用循环结构和转向语句。a、b、c三值从三个文本框中

34、输入,当单击命令按钮时将结果显示在窗体上。画出流程图。(1)设计流程图根据题意,画出如图4-20所示流程图。 abTrue FalsebcTrueac Mininabc=a Mininabc=cMaxinabc=bacMaxinabc=abc图4-20 求三个数极值的流程Maxinabc=cMininabc=aFalseTrueMaxinabc=aMaxinabc=cMininabc=bMininabc=cTrueFalseMininabc=bFalseTrueMaxinabc=c(2)设置界面与控件属性在窗体上添加三个文本框,一个命令按钮,设置各自的属性(主要是Caption属性和Font属

35、性)。FalseSelect Case的结构形式为:的结构形式为:Select Case Case Case Case Case ElseEnd Select3.2.2 3.2.2 Select CaseSelect CaseSelect Case选择结构执行的过程为:选择结构执行的过程为:(1)计算)计算的值的值(2)将)将的值与的值与Case语句中的语句中的中的每中的每一个值逐一进行比较。如果与其中的一个值相匹配,则执行该语一个值逐一进行比较。如果与其中的一个值相匹配,则执行该语句中的句中的。如果不止一个。如果不止一个 Case与与相匹配,则相匹配,则只对第一个匹配的只对第一个匹配的 Ca

36、se 执行与之相关联的执行与之相关联的。如果在表达。如果在表达式列表中没有一个值与测试表达式相匹配,则式列表中没有一个值与测试表达式相匹配,则 Visual Basic 执行执行 Case Else 子句(此项是可选的)中的语句。最后执行子句(此项是可选的)中的语句。最后执行End Select语句。语句。 图图4-22 Select Case选择结构流程选择结构流程V例:下表为华中航空总公司机票打折表。试根据此表编写程序。日例:下表为华中航空总公司机票打折表。试根据此表编写程序。日期、机票数从文本框中输入,打折情况在窗体上输出。期、机票数从文本框中输入,打折情况在窗体上输出。l机票优惠率月月

37、日日订票数(张)订票数(张)优惠率(优惠率(%)1、2、3、6、11、12全部全部=3025=3035=3025=3035=3025=3030= 30 Then intss = 35 Else intss = 15 Case 71 To 79, 710 To 731, 81 To 89, 810 To 831 If intnn = 30 Then intss = 30 Else intss = 20 Case Else If intnn = 30 Then intss = 25 Else intss = 10 End Select Label6.Caption = 您所订机票优惠率为: & s

38、tr(intss) & %End Sub另外,可以取系统的日期作为输入日期,该事件可以指定为Text1_DbClick事件,即双击Text1发生的事件,代码为:Private Sub Text1_DblClick() Text1.Text = Month(Now) Text2.Text = Day(Now)End Sub当要重新输入数据时,可以自动清空各文本框的内容。其中单击Text1清空所有文本框的内容,单击其他文本框,只清空被单击的文本框的内容。Private Sub Text1_Click() Text1.Text = Text2.Text = Text3.Text = End SubP

39、rivate Sub Text2_Click() Text2.Text = End Sub Private Sub Text3_Click() Text3.Text = End Sub此外,还应为每一个文本框的键盘按下事件编写如下代码,表明当按回车键时,自动跳到下一个必要的控件:Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text2.SetFocusEnd SubPrivate Sub Text2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then

40、 Text3.SetFocusEnd SubPrivate Sub Text3_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Command1.SetFocusEnd Sub7月8月=30 =30 =3035 15 30 20 10机票优惠率计算流程图机票优惠率计算流程图其他其他满足条件满足条件=30=30253030=30 日期l使用使用select case 语句重做上面的例子语句重做上面的例子3.2.3 条件函数条件函数IIf 函数函数IIf 函数的功能是根据表达式的值,来返回两部分中的其中一个。函数的功能是根据表达式的值,来返回

41、两部分中的其中一个。其语法格式为:其语法格式为:IIf(, , )0,340, 32xxxx例如,求分段函数:例如,求分段函数:y= 函数值的语句可以简单地表示为:函数值的语句可以简单地表示为:y=IIf(x0,2*x+3,4-3*x)3.2.4 计时器控件计时器控件3.2.4 选择控件选择控件3.2.5 复选框控件3.3 循环结构循环结构3.3.1 Do.Loop语句语句3.3.2 For.Next语句语句3.3.3 循环嵌套循环嵌套3.3.4 For Each.Next3.3.5 退出控制结构退出控制结构l4.3.1 Do.Loop语句语句1前测型前测型Do.Loop循环循环在前测型在前测

42、型Do.Loop循环中,根据循环中,根据 判断是否执行判断是否执行 。其语法格式为:。其语法格式为:Do While | Until Loop.)1.2111(6222n例4-9:编写程序,根据多项式:=求的近似值。精度要求21n= 1.0E-12 sum = sum + temp i = i + 1 temp = 1# / i / i输出的近似值图4-25 求的近似值流程图 (2)设计应用程序界面应用程序所需的控件及其属性值见表4-6。Picture1和Picture2分别用来显示运算次数i的值和的近似值。控件Caption属性值Label1运算次数Label2近似值Picture1空白(设

43、计时)Picture2空白(设计时)Command1求的近似值表4-6 求的近似值应用程序控件属性值(3)编写代码根据流程图编写Command1_click事件的代码如下:Private Sub Command1_Click() Dim sum As Double, temp As Double, pi As Double Dim i As Double sum = 0# temp = 1# i = 1图4-26 求的近似值的程序运行结果 Do While (temp = 0.000000000001) sum = sum + temp i = i + 1 temp = 1# / i / i

44、Loop pi = Sqr(6# * sum) Picture1.Print i ;次 Picture2.Print piEnd Sub由于程序代码是直接从设计界面拷贝过来,所有代码书写格式已经经过VB格式化。程序运行情况参见图4-26。例编写程序例编写程序: 判断一个数是否为素数。判断一个数是否为素数。(1)设计流程图)设计流程图根据题目要求,设计出如图所示的流程图。根据题目要求,设计出如图所示的流程图。n求素数流程图求素数流程图n不是素数不是素数n是素数是素数And m=0m=0TrueFalsem=1k=k+1输入数据输入数据nVal(Text1.Text) 2147483647Fals

45、eTrue数数据据溢溢出出,重重新新输输入入n当当k 2147483647 Then MsgBox 数据溢出,请重新输入数据溢出,请重新输入, vbOKOnly + vbOKCancel + vbInformation, 数据错误数据错误 Text1.Text = Else判断素数程序运行实例判断素数程序运行实例 n = CLng(Text1.Text) m = 0: k = 2 Do While k = Sqr(n) And m = 0 If n Mod k = 0 Then m = 1 Else k=k + 1 End If Loop If m = 0 Then Label2.Captio

46、n = 是一个素数是一个素数 Else Label2.Caption = 不是一个素数不是一个素数 End IfEnd IfText1.SetFocus End Sub2.后测型后测型Do.Loop循环循环Do.Loop 语句的另一种演变形式是先执行语句的另一种演变形式是先执行,然后在,然后在每次执行后测试每次执行后测试 。称为后测型。称为后测型Do.Loop循环。这循环。这种形式保证种形式保证至少执行至少执行1次,其语法格式为:次,其语法格式为:DoLoop While | Until 输入输入m,nm存放大数存放大数,n存放小数存放小数输出输出n求求m/n的余数的余数mn数数nr的余数的余

47、数例:求两个正整数例:求两个正整数m和和n的最大公约数。的最大公约数。求最大公约数最常用的方法是辗转相除法。其设计思路是:求最大公约数最常用的方法是辗转相除法。其设计思路是:(1)假设)假设m大于大于n;(2)用)用n作除数除作除数除m,得余数,得余数r。(3)若)若r0,则令,则令mn,nr,继续相除得到新的,继续相除得到新的r值,直到值,直到r=0为止。为止。(4)最后的)最后的n即为最大公约数。即为最大公约数。解题步骤如下:解题步骤如下:1)设计流程图)设计流程图根据题意,设计出如图所示流程图。根据题意,设计出如图所示流程图。求最大公约数的流程图求最大公约数的流程图直到直到r=02)设计

48、应用程序界面)设计应用程序界面所需添加的控件的属性值参见表。所需添加的控件的属性值参见表。控件控件Caption(或或Text)属性值属性值Label1请输入两个正整数请输入两个正整数Label2m nLabel3m 和和 n 的最大公约数是的最大公约数是Label4空白(设计时)空白(设计时)Text11空白(设计时)空白(设计时)Text12空白(设计时)空白(设计时)Command1求求 解解判断素数应用程序控件属性值判断素数应用程序控件属性值(3)编写代码)编写代码Private Sub Command1_Click() Dim m As Long, n As Long, temp A

49、s Long If (Val(Text1.Text) = 0 Or Val(Text2.Text) = 0) Or Val(Text1.Text) 2147483647 Or Val(Text2.Text) 2147483647 Then MsgBox 输入的数输入的数0或溢出,请重新输入!或溢出,请重新输入! MsgBox 输入的数输入的数0或溢出或溢出,请重新输入请重新输入!, vbInformation + vbOKOnly, 数据错误数据错误 Text1.Text = Text2.Text = 求最大公约数程序运行实例求最大公约数程序运行实例 Text1.SetFocusElsem =

50、 Val(Text1.Text)n = Val(Text2.Text)If m n Then temp = m: m = n: n = tempEnd If Do r = m Mod n m = n n = r Loop While r 0 Label3.Caption = mEnd IfEnd Sub3.3.2 For.Next3.3.2 For.Next语句语句Do 循环使用于在不知道执行多少次循环使用于在不知道执行多少次时。有时,循环时。有时,循环的次数是已知的,这时最好使用的次数是已知的,这时最好使用 For.Next 循环。与循环。与 Do 循环循环不同,不同, For 循环使用一个

51、叫做计数器的变量,每重复一次循循环使用一个叫做计数器的变量,每重复一次循环之后,计数器变量的值就会增加或者减少。环之后,计数器变量的值就会增加或者减少。For 循环的语法循环的语法如下:如下:For = To Step Next 例:求例:求11000之间所有能够被之间所有能够被13整除的数。按每行各行整除的数。按每行各行10个数排满个数排满足条件的数。足条件的数。(1)设计流程图)设计流程图根据题意,设计如图所示流程图。根据题意,设计如图所示流程图。求被求被13整除的数的流程图整除的数的流程图 (2)设计应用程序界面)设计应用程序界面应用程序所需控件属性值参见表。应用程序所需控件属性值参见表

52、。控件控件Caption属性值属性值Command1单击此按钮求单击此按钮求11000值见能被值见能被13整除的数整除的数Picture1无此属性值无此属性值求被求被13整除的数应用程序控件属性值整除的数应用程序控件属性值(3)编写代码)编写代码程序运行情况程序运行情况 Dim i As Integer, j As Integer j = 0 For i = 1 To 1000 If i Mod 13 = 0 Then j = j + 1 Picture1.Print i; If j Mod 10 = 0 Then Picture1.Print End If Next i Picture1.P

53、rint Picture1.Print 一共有一共有 & j & 个数可以被个数可以被13整除整除End Sub其中,语句其中,语句If j Mod 10 = 0 Then Picture1.Print控制每行打印满控制每行打印满足条件的数的个数(足条件的数的个数(10个),注意语句个),注意语句 Picture1.Print i;后的分后的分号不能省略。号不能省略。程序运行情况参见图。程序运行情况参见图。Private Sub Command1_Click()3.3.3 循环嵌套循环嵌套在一个循环体内又出现另外的循环语句称为循环嵌套。在一个循环体内又出现另外的循环语句称为循环嵌套。 例:指出

54、下面程序的运行结果:例:指出下面程序的运行结果:Private Sub Form_Click() Dim a As Integer, i As Integer, j As Integer a = 0 For i = 1 To 5 For j = -2 To 2 a = a + i + j程序运行结果程序运行结果 Next j Print a;Next iPrintPrint i, j, aEnd Sub例:编程求图所示乘法九九表。例:编程求图所示乘法九九表。执行分析图可知:如果将每一个等式作为一个方阵的节点,则每一个等式执行分析图可知:如果将每一个等式作为一个方阵的节点,则每一个等式出现的位置

55、上行列的数字是相同的。因此,可以用如下嵌套的循环作为对一出现的位置上行列的数字是相同的。因此,可以用如下嵌套的循环作为对一个节点的描述:个节点的描述:For i=1 to 9 For j=1 to i Next jNext i这里,这里,为乘法等式:为乘法等式:expss = i & & j & = & i * j。现在,主要的问题是控制每个表达是出现的位置,可以用现在,主要的问题是控制每个表达是出现的位置,可以用Tab函数来实现函数来实现,假设给每个等式的宽度为,假设给每个等式的宽度为10,第一个等式出现在第,第一个等式出现在第4行,则行,则Tab函数可以这函数可以这样表示:样表示:Tab(

56、j - 1) * 10 + 3); 乘法九九表(乘法九九表(1)在窗体上添加一个命令按钮和一个在窗体上添加一个命令按钮和一个Pictrue控件,编写控件,编写command1_click事件的代码如下:事件的代码如下:Private Sub Command1_Click() Dim i As Integer, j As Integer Dim expss As String For i = 1 To 9 For j = 1 To i expss = i & & j & = & i * j Picture1.Print Tab(j - 1) * 10 + 1); expss; Next j Pi

57、cture1.Print Next iEnd Sub 乘法九九表(乘法九九表(2)For Each.Next 循环与循环与 For.Next 循环类似,但它对数组或循环类似,但它对数组或对象集合中的每一个元素重复一组语句,而不是重复语句一定的对象集合中的每一个元素重复一组语句,而不是重复语句一定的次数。次数。For Each.Next 循环非常适合于不知道一个集合有多少循环非常适合于不知道一个集合有多少元素的情况。元素的情况。For Each.Next 循环的语法格式如下:循环的语法格式如下:For Each In Next elementt4.3.4 For Each.Next4.3.4 F

58、or Each.Next3.3.5 退出控制结构退出控制结构1Exit For 语句和语句和 Exit Do语句语句2Go To语句语句Go To语句的语法格式为:语句的语法格式为:Go To 标号标号|行号行号3.3.6 列表框与组合框列表框与组合框l1 列表框列表框2 2 组合框组合框 列表框(列表框(ListBoxListBox)通过显示多个选择项,供)通过显示多个选择项,供用户选择其中的项,达到与用户对话的目的用户选择其中的项,达到与用户对话的目的 。如。如果有较多的选项而不能一次全部显示时,果有较多的选项而不能一次全部显示时,VBVB会自动会自动加上滚动条。加上滚动条。 列表框最主要

59、的特点是列表框最主要的特点是只能从其中选择,而只能从其中选择,而不能直接写入或修改其中的内容不能直接写入或修改其中的内容。 使用列表框输入数据是保证数据标准化的重使用列表框输入数据是保证数据标准化的重要手段,它是一个重要的输入控件。要手段,它是一个重要的输入控件。1 1 列表框(1) (1) 列表框的属性列表框的属性 ListIndexListIndex属性属性: :表示执行时选中的列表项序表示执行时选中的列表项序号,从号,从0 0开始,若未选中任何项,开始,若未选中任何项,ListIndexListIndex的值为的值为-1-1。 ListCountListCount属性属性: :表示列表框

60、中项目的数量。表示列表框中项目的数量。ListCount-1ListCount-1表示最后一项的序号。该属性只能在表示最后一项的序号。该属性只能在程序中设置或引用。程序中设置或引用。 ListList属性属性: :该属性是一个字该属性是一个字符型数组,存放列表框的选项,符型数组,存放列表框的选项,listlist数组的下标是从数组的下标是从0 0开始的。开始的。例如:例如:list(0) list(0) 的值是的值是“马明马明”。该属性在设计状态和程序中都可该属性在设计状态和程序中都可以设置。以设置。 Selected Selected属性属性: :用于判断列表项是否被选中,用于判断列表项是否

61、被选中,是一个逻辑数组。如:是一个逻辑数组。如:List.Selected(0)=TrueList.Selected(0)=True表示第一项被选中。该属性只能在程序中设置或表示第一项被选中。该属性只能在程序中设置或引用。引用。 TextText属性属性: :表示被选中列表项的文本内容。该表示被选中列表项的文本内容。该属性是默认属性,只能在程序中设置或引用。属性是默认属性,只能在程序中设置或引用。在上表中,如果选定在上表中,如果选定 “ “吴海燕吴海燕”,则,则texttext属性属性值为值为“吴海燕吴海燕” ” MultiSelect MultiSelect属性属性: :用于设定列表框内是否

62、允许用于设定列表框内是否允许同时选择多个列表项。有同时选择多个列表项。有3 3种方式:种方式:0 None:0 None:禁止多项选择禁止多项选择1 Simple:1 Simple:简单多项选择。鼠标单击或按空格简单多项选择。鼠标单击或按空格键表示选定键表示选定/ /取消一个已经选定的选择项。取消一个已经选定的选择项。3 Extended:3 Extended:扩展多项选择。按住扩展多项选择。按住CtrlCtrl键,同键,同时用鼠标单击或按空格键表示选定时用鼠标单击或按空格键表示选定/ /取消一个已经取消一个已经选定的选择项;按住选定的选择项;按住ShiftShift键,同时单击鼠标或移键,同

63、时单击鼠标或移动光标键,就可以从前一个选定的项扩展到当前动光标键,就可以从前一个选定的项扩展到当前选择项,即选定多个连续项。选择项,即选定多个连续项。(2) (2) 列表框的方法列表框的方法 列表框中的选择项可以简单地在设计状态通过列表框中的选择项可以简单地在设计状态通过ListList属性设置,也可以在程序中用属性设置,也可以在程序中用 AddItemAddItem方法来方法来填写,用填写,用 RemoveItemRemoveItem或或 ClearClear方法删除。方法删除。 AddItemAddItem方法方法: :把一个选项加入列表框。把一个选项加入列表框。 格式:对象格式:对象.A

64、ddItem item , Index.AddItem item , Index其中:其中: itemitem是将要加入列表框的选项。必须是字是将要加入列表框的选项。必须是字符串表达式。符串表达式。 IndexIndex决定新增项目在列表框或组合框中的决定新增项目在列表框或组合框中的位置。如果位置。如果indexindex省略,则添加的列表项将放在最省略,则添加的列表项将放在最后。后。 RemoveItem RemoveItem方法方法: :用于删除列表框中的列表项。用于删除列表框中的列表项。 格式:对象格式:对象.RemoveItem Index.RemoveItem Index其中其中In

65、dexIndex是被删除项目在列表框中的位置。是被删除项目在列表框中的位置。 ClearClear方法方法: :用于清除列表项中的所有内容。用于清除列表项中的所有内容。 格式:对象格式:对象.Clear.Clear(3) (3) 列表框的事件列表框的事件 列表框常用的事件就是列表框常用的事件就是ClickClick、DblClickDblClick、GotFocusGotFocus、LostFocusLostFocus等大多数控件通用的事件等大多数控件通用的事件 (4) (4) 列表框的使用列表框的使用列表框控件显示一个项目列表,让用户从其中选列表框控件显示一个项目列表,让用户从其中选择一项或

66、多项。如果项目总数超过可显示的项目择一项或多项。如果项目总数超过可显示的项目数,就自动添加滚动条。它是进行快速和规范输数,就自动添加滚动条。它是进行快速和规范输入的好工具。入的好工具。例例: :利用列表框显示学生的籍贯,并可以添加列表项。利用列表框显示学生的籍贯,并可以添加列表项。创建下图所示窗口,选择列表框中学生姓名,在籍贯创建下图所示窗口,选择列表框中学生姓名,在籍贯处显示该学生的籍贯;单击处显示该学生的籍贯;单击“添加添加”按钮,出现输入按钮,出现输入学生姓名文本框,并且按钮的文字变为学生姓名文本框,并且按钮的文字变为“确定确定”,此,此时输入姓名,在显示籍贯处输入籍贯,单击时输入姓名,在显示籍贯处输入籍贯,单击“确定确定”按钮,将项目添加到列表框中。按钮,将项目添加到列表框中。对象对象属性名属性名属性值属性值窗体窗体(名称)(名称)Form1Form1CaptionCaptionForm1Form1列表框列表框(名称)(名称)LstLstListList(空)(空)标签标签1 1(名称)(名称)LblNameLblNameCaptionCaption学生姓名学生姓名标签标签2

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!