VB程序设计教程集.ppt

上传人:牧羊曲112 文档编号:5451944 上传时间:2023-07-08 格式:PPT 页数:80 大小:976.50KB
返回 下载 相关 举报
VB程序设计教程集.ppt_第1页
第1页 / 共80页
VB程序设计教程集.ppt_第2页
第2页 / 共80页
VB程序设计教程集.ppt_第3页
第3页 / 共80页
VB程序设计教程集.ppt_第4页
第4页 / 共80页
VB程序设计教程集.ppt_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《VB程序设计教程集.ppt》由会员分享,可在线阅读,更多相关《VB程序设计教程集.ppt(80页珍藏版)》请在三一办公上搜索。

1、4.1 顺序结构,4.2 选择结构程序设计,4.3 循环结构,第4章 基本的控制结构,退出,4.4 综合实例,4.1 顺序结构,4.1.1 数据输出,4.1.2 数据输入,返回,退出,4.1.1 数据输出,1 Print方法,2 与Print方法有关的函数,3 使用位置属性,4 清除方法CLS,5 使用“标签”控件的输出,1 Print方法,Print方法的语法格式为:,object.Print Spc(n)|Tab(n)expression charpos,其中:,object:窗体、图片框、打印机等对象。,Expression:要打印的数值表达式或字符串表达式。,Charpos:逗号或分号

2、,指定下个字符的插入点。,2.与Print方法有关的函数,与Print相配合的函数:,(1)Tab函数,与 Print#语句或 Print 方法一起使用,对输出进行定位。格式:,Tab(n),当在一个 Print方法中有多个Tab函数时,每个Tab函数对应一个输出项,各输入项之间用分号隔开。,例题,Private Sub Form_Click()Print Tab(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程序执行结果见图4-1。程

3、序中已经对程序显示特点做出解释。,图4-1 Print方法与Tab()函数结合,(2)Spc函数,格式:,Spc(n),在显示或打印列表中的下一个表达式之前插入n个空白数,n为032767之间的整数。Spc函数与输出项之间用分号隔开。,如果 n 小于输出行的宽度,则下一个打印位置将紧接在数个已打印的空白之后。如果 n 大于输出行的宽度,则 Spc 利用下列公式计算下一个打印位置:当前位置+(n Mod 行宽)Spc函数与Tab函数的作用类似,可以互相代替。但应注意,Tab函数从对象的左端开始记数,而Spc函数只表示两个输出项之间的间隔。,3.使用位置属性,位置属性CurrentX和Curren

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

5、置 Picture1.Top=(ScaleHeight-Picture1.Height)/2 图片框垂直位置 Picture1.CurrentX=Picture1.ScaleLeft+Picture1.Width/2-Picture1.TextWidth(str1)/2 输出水平位置 Picture1.CurrentY=Picture1.ScaleTop+Picture1.Height/2-Picture1.TextHeight(str1)/2 输出垂直位置 Picture1.Print str1 在图片框中输出字符串str1End Sub各对象的其他参数保持默认值。程序设计时和运行结果见图4

6、-2。无论怎样调整窗体,只要单击窗体,都会按题目要求调整图片框和文本的位置。TextWidth()为求文本宽度的函数。,(a)设计时(b)运行时图4-2 位置属性的应用,4.清除方法CLS,Cls 将清除图形和打印语句在运行时所产生的文本和图形,清除后的区域以背景色填充。但是设计时在 Form 中使用 Picture 属性设置的背景位图和放置的控件不受 Cls 影响。,语法:,对象名称.Cls,例如,为了在运行时双击窗体时清除图片框中的文本,编写的程序为:Private Sub Form_DblClick()Picture1.Cls 清除图片框中的文本End Sub如果将代码由Picture1

7、.Cls改为.Cls,将无法清除图片框中的文本。,5.使用“标签”控件的输出,标签(Label)是VB中最常用的输出文本信息的工具,目前几乎完全取代了Print方法。,例如:建立一个Label控件和Command控件,按表4-1设置设计时属性。加入如下代码,运行程序。Private Sub Command1_Click()Label1.WordWrap=True Label1.AutoSize=True Label1.BorderStyle=1 Label1.BackColor=&H80000014End Sub由运行结果可知,单击命令按钮后,标签控件可以自动适用内容,并自动换行,且加上边框,

8、背景色为白色以突出显示文字。,表4-1 属性设置,(a)设计时(b)运行结果图4-3 利用标签控件输出,4.1.2 数据输入,1 使用“文本框”控件进行输入,2 SetFocus 方法,3 与用户交互的函数和过程,1 使用“文本框”控件进行输入,例4-1:如图4-4所示,在设计时建立四个标签控件和三个文本框控件,各控件的设置见表4-2。要求在运行时,双击填写意见的文本框,可以将该文本框放大至窗口的1/2。,设计步骤如下:(1)建立应用程序用户界面单击“文件|新建工程”,进入窗体设计器。按如图4-4(a)所示布局增加四个标签Label1 Label4和三个文本框Text1Text3。(2)属性设

9、置按表4-3所示设置各对象的属性值,其他属性值不变。(3)编写代码双击Text3文本框,打开Text3的代码窗口,在过程下拉列表框中选择“DblClick”,编写Text3的DblClick事件的代码:Private Sub Text3_DblClick()Text3.Left=0Text3.Width=Width Text3的宽度为窗口宽度Text3.Height=Height/2 Text3的高度为窗口高度的1/2Label4.Top=Text3.Top+Text3.Height+100 Label4始终在Text3之下End Sub,2 SetFocus 方法,使某个控件获得焦点,可以有

10、多种方法:(1)直接单击这一控件。(2)按Tab键(或Tab+Shfit组合键)按规定的次序在各控件之间移动焦点。(3)在代码中使用SetFocus 方法使得某一控件获得焦点。使用SetFocus 方法的格式为:.SetFocus其中:为对象表达式,其值为可以获得焦点的控件对象名称。,例4-2:在上述工程中,增添一个命令按钮,单击该按钮时将清空所有文本框中的内容(完善的工程将要编写保存用户信息的代码)。(1)增加Command命令按钮。在窗体的合适位置增加一个Command命令按钮,调整其大小。(2)设置属性可以将Caption属性值设置为“发送”。设置Font属性符合整体风格。(3)编写Co

11、mmand1的Click事件的代码Private Sub Command1_Click()Text1.Text=Text2.Text=Text3.Text=Text1.SetFocusEnd Sub并在上例代码的后面增加一行如下代码:Command1.Top=Text3.Top+Text3.Height+100 Command1始终在Text3之下该代码使得Command1控件始终保持在Text3控件之下。,3 与用户交互的函数和过程,1InputBox函数 作用:在一对话框中显示提示,等待用户输入正文或按下按钮,并返回包含文本框中内容,函数值的类型为 String类型。语法格式:变量%=In

12、putBox(,),2MsgBox函数和MsgBox过程,作用:在对话框中显示信息,等待用户单击按钮,并返回一个整数以标明用户单击了哪个按钮。,语法格式,变量%=MsgBox(,),例4-3:在上述实例中,要求单击“发送”命令按钮后,显示如下对话框,提示您输入身份证号,并将输入内容保存在变量strIDcard中。增添的代码为:Private Sub Command1_Click()Dim strIDcard As String,strText As StringstrText=请输入您的身份证号并单击“确定”+Chr(13)+Chr(10)+重新填写请单击“取消”strIDcard=Input

13、Box$(strText,身份证号,100,100)Text1.SetFocusEnd Sub,如果单击“确定”按钮,则strIDcard的值为输入值“123456789”,否则为空字符串。,图4-5 使用InputBox 函数,(2)MsgBox函数和MsgBox过程MsgBox函数在对话框中显示信息,等待用户单击按钮,并返回一个整数以标明用户单击了哪个按钮。其语法格式为:变量%=MsgBox(,)MsgBox语句的用法为:MsgBox,其中:、和的意义同InputBox函数。可选项。整型表达式,指定显示按钮的数目及形式,使用的图标类型,缺省按钮的种类以及消息框的强制回应等。如果省略,则 的

14、缺省值为 0。,表4-3 设置值及其意义,表4-4 MsgBox函数的返回值,单击“是”:完成提交操作,显示如图4-7对话框,单击“确定”结束程序。单击“否”:返回Command1_click事件,重新显示如图4-5所示输入对话框。单击“取消”:没有提交操作,显示如图4-8对话框,单击“确定”结束程序。,图4-6 MsgBox 对话框的应用(a),例4-4:在上例中,如果要求在单击InputBox对话框中的“确定”按钮后,弹出一个如图4-6所示的对话框,以便用户进行审查并作出如下选择:,图4-7 MsgBox 对话框的应用 图4-8 MsgBox 对话框的应用,修改的Command1_clic

15、k事件代码为: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,vbYesNoCancel+vbQuestion+vbDefau

16、ltButton2,确认身份证)End IfSelect Case intMsginCase 6.提交意见单的代码略MsgBox 您的意见已经提交,谢谢!,vbOKOnly+vbInformation,已经提交Case 7Command1_Click 重新执行Command1_Click 事件Case 2MsgBox 您已经放弃提交意见,欢迎下次参加!,vbOKOnly+vbCritical,放弃提交End SelectEndEnd Sub,4.2 选择结构程序设计,4.2.1 If条件语句,4.2.2 Select Case,4.2.3 条件函数,返回,退出,4.2.1 If条件语句,1单分

17、支条件结构(If.Then语句),2双分支结构(If.Then.Else语句),3多分支结构(IfThenElseIf语句),4If语句的嵌套,1单分支条件结构(If.Then语句),用 If.Then 结构有条件地执行一个或多个语句。单行语法和多行块语法都可以使用:(1)If Then(2)If ThenEnd If下面两个例子等价:(1)If todayDate 为 True 时要执行多行代码,则必须使用多行块 If.Then.End If 语法。例如:If todayDate Now Then todayDate=Now Timer1.Enabled=False 定时器控制失效。End

18、If,图4-12 单分支条件语句 图4-13 单分支条件语句实例,2.双分支结构(If.Then.Else语句)可以用 If.Then.Else 块定义几个语句块,执行其中一个语句。其语法格式也有两种形式:(1)If ThenElseEnd If(2)If ThenElse,当的值为真时,执行Then后面的语句块1(或语句1),否则执行Else后面的语句块2(或语句2)。其流程见图4-11。,y=,图4-14 双分支结构流程,例如:计算分段函数,y=,本题在选择条件时,可以选择x0作为条件,也可以选择x0作为条件。这里选择x0作为条件。画出如图4-12所示流程图。,y=,图4-12 双分支结构

19、流程实例,y=3*x*x+4*x-5,1)用单分支结构实现y=3*x*x+4*x-5If x0 Then y=,或If x0 Then y=3*x*x+4*x-5If x0 Then y=,但是,不能这样表示:If x0 Then y=,(2)用双分支结构实现If x0 Then y=,Elsey=3*x*x+4*x-5End If,y=3*x*x+4*x-5,3.多分支结构(IfThenElseIf语句)多分支结构可以处理两个或两个以上分支。其语句形式为:If Then ElseIf Then Else End IfVisual Basic 首先测试。如果它为 False,Visual Ba

20、sic就测试,依次类推,直到找到一个为 True 的条件。当它找到一个为 True 的条件时,Visual Basic就会执行相应的语句块,然后执行 End If 后面的代码。作为一个选择,可以包含 Else 语句块,如果条件都不是 True,则 Visual Basic 执行 Else 语句块。,图4-13 多分支结构流程,False,True,True,False,True,False,语句块n+1,语句块n,例4-5:利用If.Then.Else 语句编写求函数,y=,的值的程序,要求只要在文本框Text1中输入自变量x的值,就在标签栏label1上显示函数值。根据题意,在窗体上添加一个

21、文本控件Text1和标签控件label1,代码应包含在Text1_change事件中。代码为:Private Sub Text1_Change()Dim x As Double,y As Double Label1.Caption=清空Label1的内容 x=CDbl(Text1.Text)将字符串类型转化为双精度类型 If(x=1#And x=2#)Then y=(1#-x)*(2#-x)Else y=-(2#-x)End IfLabel1.Caption=y 在Label1上显示结果End Sub,图4-14 多分支结构流程实例,True,False,y=1#-x,例4-6:大学录取新生时

22、,根据学生总分情况给与奖励,条件如下:(1)四门总分不低于700分,特等奖。(2)四门总分680分(含680分)700分(不含700分),优秀奖。(3)前三门单科不低于145分,第四门不低于280分),特别奖。(4)奖励按特等奖、优秀奖、特别奖由高到低,不重复计奖(包括单科)。要求:四科成绩(intmark1、intmark2、intmark3、intmark4)依次在四个文本框中输入,总分(intmark0)在标签控件上显示。单击命令按钮Command1后,在对话框中显示获奖情况。分析:获奖条件表达式分别为:(1)intmark0=700(2)intmark0=680 AND intmark

23、0=145 OR intmark2=145 OR intmark3=145 OR intmark4=280流程图见图4-18。设计步骤如下:(1)建立应用程序用户界面按如图4-19建立四个文本框(Text1Text4)接受成绩输入,两个标签控件(Label1Label2),一个命令按钮Command1,设置各控件的属性,其中Command1的Caption属性值为“查询”。,图 4-15多分支结构流程实例,True,Flase,True,Flase,图4-16应用程序运行情况,(2)编写程序代码根据流程图,编写出Command_click事件的代码为:Private Sub Command1_

24、Click()Dim intmark0 As Integer,intmark1 As Integer Dim intmark2 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

25、Then MsgBox 您获得了特等奖,vbOKOnly+vbInformation,获奖通知 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 Sub,4.If

26、语句的嵌套上面学习了If语句的基本形式,可以通过这些基本形式加以复合,获得更为复杂的If结构,称为If语句的嵌套。一般形式如图4-17所示。图4-18为在Else块中嵌套If结构的形式。可根据实际情况选择采用何种结构。,图4-17 If语句复合结构的一般形式,图4-18在Else块中嵌套If结构的形式,图4-19 正确与错误的转向,例4-7:求a、b、c中三个实数的最大值、最小值,程序中不得使用循环结构和转向语句。a、b、c三值从三个文本框中输入,当单击命令按钮时将结果显示在窗体上。画出流程图。(1)设计流程图根据题意,画出如图4-20所示流程图。,图4-20 求三个数极值的流程,Maxina

27、bc=cMininabc=a,False,True,Maxinabc=a,Maxinabc=c,Mininabc=b,Mininabc=c,True,False,Mininabc=b,False,True,Maxinabc=c,(2)设置界面与控件属性在窗体上添加三个文本框,一个命令按钮,设置各自的属性(主要是Caption属性和Font属性)。,False,4.2.2 Select CaseSelect Case的结构形式为:Select Case Case Case Case Case ElseEnd Select,Select Case选择结构执行的过程为:(1)计算的值(2)将的值与C

28、ase语句中的中的每一个值逐一进行比较。如果与其中的一个值相匹配,则执行该语句中的。如果不止一个 Case与相匹配,则只对第一个匹配的 Case 执行与之相关联的。如果在表达式列表中没有一个值与测试表达式相匹配,则 Visual Basic 执行 Case Else 子句(此项是可选的)中的语句。最后执行End Select语句。,图4-22 Select Case选择结构流程,V,例4-8:表4-5为华中航空总公司机票打折表。试根据此表编写程序。日期、机票数从文本框中输入,打折情况在窗体上输出。如图4-23。,表4-5 机票优惠率,(2)设计应用程序用户界面添加6个标签控件Label1 La

29、bel6,按顺序见图4-23所示。Label1 Label5的Caption属性依次为:“请输入日期”、“月”、“日”、“请输入订票数”、“张”,Label6的Caption属性设计时为空白,运行时用来显示优惠率。添加3个文本框控件Text1Text3,按顺序见图4-23所示。添加一个命令按钮Command1。,图4-23 机票优惠率查询系统,(3)编写代码根据流程图,编写出Command1_ Click事件的代码如下:Private Sub Command1_Click()Dim intnn As Long,Dim intss As Integer,strdate As Integer in

30、tnn=Clng(Text3.Text)strdate=Cint(Trim(Text1.Text)&Trim(Text2.Text)Select Case strdate Case 428 To 431,51 To 57,928 To 931,101 To 107 If intnn=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 i

31、ntss=10 End Select Label6.Caption=您所订机票优惠率为:&str(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.Tex

32、t=Text2.Text=Text3.Text=End SubPrivate 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 Intege

33、r)If KeyAscii=13 Then Text3.SetFocusEnd SubPrivate Sub Text3_KeyPress(KeyAscii As Integer)If KeyAscii=13 Then Command1.SetFocusEnd Sub,图4-24机票优惠率计算流程图,其他,满足条件,=30,=30,25,30,30,30,10,30,20,35,15,4.2.3 条件函数,1IIf 函数,2Choose函数,IIf 函数的功能是根据表达式的值,来返回两部分中的其中一个。其语法格式为:IIf(,),例如,求分段函数:,y=,函数值的语句可以简单地表示为:y=Ii

34、f(x0,2*x+3,4-3*x),Choose函数的功能是:从参数列表中选择并返回一个值。其语法格式为:Choose(,.,),下面的示例使用 Choose 函数来显示某天的执勤人员情况,strDay 参数传递到过程之中的索引。Function GetChoice(strDay As string)strName=Choose(strDay,王大虎,谢伟烽,马家栋,何右嘉,吴仁杰,)End Function当strDay的值为1时,返回字符串“王大虎”,当strDay的值为2时,返回字符串“谢伟烽”,以此类推。当strDay的值不在15之间时,返回NULL。,4.3.1 Do.Loop语句,

35、4.3.2 For.Next语句,返回,退出,4.3.3 循环嵌套,4.3.4 For Each.Next,4.3.5 退出控制结构,4.3 循环结构,4.3.1 Do.Loop语句,1前测型Do.Loop循环,在前测型Do.Loop循环中,只要 为 True 就执行。其语法格式为:Do While|Until Loop,例4-9:编写程序,根据多项式:=,求的近似值。精度要求,10-12。根据题意和要求可先求出,(1)设计流程图根据题目要求,设计出如图4-25所示的流程图。,的和,。,图4-25 求的近似值流程图,(2)设计应用程序界面应用程序所需的控件及其属性值见表4-6。Picture1

36、和Picture2分别用来显示运算次数i的值和的近似值。,表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 Loop pi=Sqr(6#*sum)Picture1.P

37、rint i;次 Picture2.Print piEnd Sub由于程序代码是直接从设计界面拷贝过来,所有代码书写格式已经经过VB格式化。程序运行情况参见图4-26。,例4-10:编写程序::判断一个数是否为素数。,(1)设计流程图根据题目要求,设计出如图4-27所示的流程图。,当k=,图4-27求素数流程图,n不是素数,n是素数,And m=0,(2)设计应用程序界面应用程序所需的控件及其属性值见表4-7。,表4-7 判断素数应用程序控件属性值,(3)编写代码根据流程图,编写Command1_click事件代码如下:Private Sub Command1_Click()Dim m as

38、integer,k as integer Dim n As Long If Val(Text1.Text)2147483647 Then MsgBox 数据溢出,请重新输入,vbOKOnly+vbOKCancel+vbInformation,数据错误 Text1.Text=Else,图4-28判断素数程序运行实例,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.Caption=是一个素数 Else Label2.C

39、aption=不是一个素数 End IfEnd IfText1.SetFocus End Sub,2.后测型Do.Loop循环Do.Loop 语句的另一种演变形式是先执行,然后在每次执行后测试。称为后测型Do.Loop循环。这种形式保证至少执行1次,其语法格式为:DoLoop While|Until,例4-11:求两个正整数m和n的最大公约数。求最大公约数最常用的方法是辗转相除法。其设计思路是:(1)假设m大于n;(2)用n作除数除m,得余数r。(3)若r0,则令mn,nr,继续相除得到新的r值,直到r=0为止。(4)最后的n即为最大公约数。解题步骤如下:(1)设计流程图根据题意,设计出如图4

40、-29所示流程图。,图4-29 求最大公约数的流程图,直到r=0,(2)设计应用程序界面所需添加的控件的属性值参见表4-8。,表4-8 判断素数应用程序控件属性值,(3)编写代码Private Sub Command1_Click()Dim m As Long,n As Long,temp As 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或溢出,请重新

41、输入!,vbInformation+vbOKOnly,数据错误 Text1.Text=Text2.Text=,图4-30 求最大公约数程序运行实例,Text1.SetFocusElsem=Val(Text1.Text)n=Val(Text2.Text)If m 0 Label3.Caption=mEnd IfEnd Sub,4.3.2 For.Next语句Do 循环使用于在不知道执行多少次时。有时,循环的次数是已知的,这时最好使用 For.Next 循环。与 Do 循环不同,For 循环使用一个叫做计数器的变量,每重复一次循环之后,计数器变量的值就会增加或者减少。For 循环的语法如下:For

42、=To Step Next,例4-12:求11000之间所有能够被13整除的数。按每行各行10个数排满足条件的数。(1)设计流程图根据题意,设计如图4-34所示流程图。,图4-31求被13整除的数的流程图,(2)设计应用程序界面应用程序所需控件属性值参见表4-9。,表4-9 求被13整除的数应用程序控件属性值,(3)编写代码,图4-32 程序运行情况,Dim i As Integer,j As Integerj=0For i=1 To 1000 If i Mod 13=0 Then j=j+1 Picture1.Print i;If j Mod 10=0 Then Picture1.Print

43、 End IfNext iPicture1.PrintPicture1.Print 一共有 后的分号不能省略。程序运行情况参见图4-32。,Private Sub Command1_Click(),4.3.3 循环嵌套在一个循环体内又出现另外的循环语句称为循环嵌套。,例4-13:指出下面程序的运行结果: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,图4-33 程序运行结果,Next j Print a;Next iPrintPri

44、nt i,j,aEnd Sub,例4-14:编程求图4-38所示乘法九九表。执行分析图4-38可知:如果将每一个等式作为一个方阵的节点,则每一个等式出现的位置上行列的数字是相同的。因此,可以用如下嵌套的循环作为对一个节点的描述:For i=1 to 9 For j=1 to i Next jNext i这里,为乘法等式:expss=i,图4-34 乘法九九表(1),在窗体上添加一个命令按钮和一个Pictrue控件,编写command1_click事件的代码如下:Private Sub Command1_Click()Dim i As Integer,j As Integer Dim expss

45、 As String For i=1 To 9 For j=1 To i expss=i Next j Picture1.Print Next iEnd Sub,图4-35 乘法九九表(2),For Each.Next 循环与 For.Next 循环类似,但它对数组或对象集合中的每一个元素重复一组语句,而不是重复语句一定的次数。For Each.Next 循环非常适合于不知道一个集合有多少元素的情况。For Each.Next 循环的语法格式如下:For Each In Next elementt,4.3.4 For Each.Next,4.3.5 退出控制结构,1Exit For 语句和 E

46、xit Do语句,2Go To语句,3End语句,4With语句,Go To语句的语法格式为:Go To 标号|行号,With语句的功能是在一个单一对象或一个用户定义类型上执行一系列的语句。其语法结构为:With End With,例4-15:求Sn=a+aa+aaa+aaaa(n个a)之值,其中a是一个数字。例如:1+11+111+111111(此时n=6)。a和n在程序运行时由键盘输入。Private Sub Command1_Click()Dim i As Integer,Dim a As Double,b As Double,tn As Double,sn As DoublePictu

47、re1.Clsi=1:tn=0:sn=0a=Val(Text1.Text),b=aIf Val(Text1.Text)0 And Val(Text1.Text)2 Then Do While(i=CInt(Text2.Text)tn=tn+a sn=sn+tn a=a*10 i=i+1 LoopElse MsgBox 请输入10以内的自然数!,vbOKOnly+vbInformation,数据错误End IfPicture1.Print b snEnd Sub,图4-36 程序运行实例,4.4 综合实例,例4-16:求11000之间的“水仙花数”。(注:“水仙花数”是一个三位数,其个位数的立方

48、和等于该数本身。)分析:三位数n中的每一位上的数可以这样来表述:百位i:i=int(n/100)十位j:j=n/10-i10个位k:k=n Mod 10编写Command1_click的代码如下:Private Sub Form_Click()Dim i As Integer,j As Integer,k As Integer,n As Integer,图4-37 求水仙花数程序运行情况,For n=100 To 999 i=Int(n/100)j=Int(n/10)-i*10 k=n Mod 10 If n=i*i*i+j*j*j+k*k*k Then Print n;NextEnd Sub

49、,例4-18:用牛顿迭代法求解方程2x3-4x2+3x-6=0的一个根。所求得根的误差小于10-6。分析:牛顿迭代法的求解方程的步骤是:(1)给出一个尽可能的根x0.(2)根据公式:x1=x0-d d=,求出d和新的x的值x1。(3)如果d的值小于10-6,则执行步骤(4),否则转到步骤(2)。(4)输出x,即为所求的根。这里,,程序如下:Private Sub Form_Click()Dim x As Double,d As Double x=Val(Text1.Text)Do d=(x*(x*(2#*x-4#)+3#)-6#)/(6#*x*x-8#*x+3#)x=x-d Loop Whil

50、e Abs(d)=0.000001 Print 初值=;Val(Text1.Text),x=;x,精度:;dEnd Sub,.,=6x2-8x+3,图4-39 程序运行实例,例4-19:现有长度10000毫米的钢管,要求截成长度分别为100毫米、150毫米和200毫米的三种规则短料,第一种短料不少于15根,第二种短料不少于17根,第三种短料不少于13根。求三种短料各多少根,使得所剩材料最少?Private Sub Command1_Click()Dim a As Integer,b As Integer,c As Integer,sum As Integer Dim n1 As Integer

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号