版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.1顺序结构4.2选择结构程序设计4.3循环结构第4章基本的控制结构退出4.4综合实例4.1顺序结构4.1.1数据输出4.1.2数据输入返回退出4.1.1数据输出
1Print方法2与Print方法有关的函数3使用位置属性4清除方法CLS5使用“标签”控件的输出2.与Print方法有关的函数与Print相配合的函数:(1)Tab函数与Print#语句或Print方法一起使用,对输出进行定位。格式:Tab[(n)]当在一个Print方法中有多个Tab函数时,每个Tab函数对应一个输出项,各输入项之间用分号隔开。例题PrivateSubForm_Click()Print"123456789"PrintTab(5);"5";Tab(10-2);"8","'注意这里10-2>当前位置5,故同行显示"PrintTab(5);"5";Tab(10-6);"4";Tab(20-15);"5";"'注意这里10-6<当前位置5,故换行显示;20-15>当前位置4,故同行显示"EndSub程序执行结果见图4-1。程序中已经对程序显示特点做出解释。图4-1Print方法与Tab()函数结合(2)Spc函数格式:Spc(n)在显示或打印列表中的下一个表达式之前插入n个空白数,n为0~32767之间的整数。Spc函数与输出项之间用分号隔开。如果n小于输出行的宽度,则下一个打印位置将紧接在数个已打印的空白之后。如果n大于输出行的宽度,则Spc利用下列公式计算下一个打印位置:当前位置+(nMod行宽)Spc函数与Tab函数的作用类似,可以互相代替。但应注意,Tab函数从对象的左端开始记数,而Spc函数只表示两个输出项之间的间隔。例如:下面程序将图片框相对于窗体居中显示,图片框中的文字居中显示。PrivateSubForm_Click()Dimstr1AsStringstr1="图片框相对窗体、文字相对图片框居中显示"Picture1.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)/2'输出水平位置Picture1.CurrentY=Picture1.ScaleTop+Picture1.Height/2-Picture1.TextHeight(str1)/2'输出垂直位置Picture1.Printstr1'在图片框中输出字符串str1EndSub各对象的其他参数保持默认值。程序设计时和运行结果见图4-2。无论怎样调整窗体,只要单击窗体,都会按题目要求调整图片框和文本的位置。TextWidth()为求文本宽度的函数。
(a)设计时(b)运行时图4-2位置属性的应用4.清除方法CLSCls将清除图形和打印语句在运行时所产生的文本和图形,清除后的区域以背景色填充。但是设计时在Form中使用Picture属性设置的背景位图和放置的控件不受Cls影响。语法:[〈对象名称〉.]Cls例如,为了在运行时双击窗体时清除图片框中的文本,编写的程序为:PrivateSubForm_DblClick()Picture1.Cls'清除图片框中的文本EndSub如果将代码由Picture1.Cls改为.Cls,将无法清除图片框中的文本。表4-1属性设置对象属性设计时属性值说明Command1Caption单击此按钮,令WordWrap=True,AutoSize=True命令按钮标题Label1Caption将WordWrap属性设置为True,则Caption属性的内容自动换行并垂直扩充;将AutoSize属性设置为True,控件自动适应内容标签控件的内容WordWrapFalse不自动换行AutoSizeFalse控件不能自动调整Font宋体、三号(a)设计时(b)运行结果图4-3利用标签控件输出4.1.2数据输入
1使用“文本框”控件进行输入2SetFocus方法3与用户交互的函数和过程1使用“文本框”控件进行输入例4-1:如图4-4所示,在设计时建立四个标签控件和三个文本框控件,各控件的设置见表4-2。要求在运行时,双击填写意见的文本框,可以将该文本框放大至窗口的1/2。设计步骤如下:(1)建立应用程序用户界面单击“文件|新建工程”,进入窗体设计器。按如图4-4(a)所示布局增加四个标签Label1~Label4和三个文本框Text1~Text3。(2)属性设置按表4-3所示设置各对象的属性值,其他属性值不变。(3)编写代码双击Text3文本框,打开Text3的代码窗口,在过程下拉列表框中选择“DblClick”,编写Text3的DblClick事件的代码:PrivateSubText3_DblClick()Text3.Left=0Text3.Width=Width'Text3的宽度为窗口宽度Text3.Height=Height/2'Text3的高度为窗口高度的1/2Label4.Top=Text3.Top+Text3.Height+100'Label4始终在Text3之下EndSub2SetFocus方法使某个控件获得焦点,可以有多种方法:(1)直接单击这一控件。(2)按Tab键(或Tab+Shfit组合键)按规定的次序在各控件之间移动焦点。(3)在代码中使用SetFocus方法使得某一控件获得焦点。使用SetFocus方法的格式为:<对象名称>.SetFocus其中:<对象名称>:为对象表达式,其值为可以获得焦点的控件对象名称。例4-2:在上述工程中,增添一个命令按钮,单击该按钮时将清空所有文本框中的内容(完善的工程将要编写保存用户信息的代码)。(1)增加Command命令按钮。在窗体的合适位置增加一个Command命令按钮,调整其大小。(2)设置属性可以将Caption属性值设置为“发送”。设置Font属性符合整体风格。(3)编写Command1的Click事件的代码PrivateSubCommand1_Click()Text1.Text=""Text2.Text=""Text3.Text=""Text1.SetFocusEndSub并在上例代码的后面增加一行如下代码:Command1.Top=Text3.Top+Text3.Height+100'Command1始终在Text3之下该代码使得Command1控件始终保持在Text3控件之下。3与用户交互的函数和过程
1.InputBox函数作用:在一对话框中显示提示,等待用户输入正文或按下按钮,并返回包含文本框中内容,函数值的类型为String类型。语法格式:
[变量[%]]=InputBox(<提示>[,<标题>][,<默认>][,<x坐标位置>][,<y坐标位置>][,<helpfile>,<context>])2.MsgBox函数和MsgBox过程作用:在对话框中显示信息,等待用户单击按钮,并返回一个整数以标明用户单击了哪个按钮。语法格式[变量[%]]=MsgBox(<提示>[,<按钮>][,<标题>][,<helpfile>,<context>])(2)MsgBox函数和MsgBox过程MsgBox函数在对话框中显示信息,等待用户单击按钮,并返回一个整数以标明用户单击了哪个按钮。其语法格式为:[变量[%]]=MsgBox(<提示>[,<按钮>][,<标题>][,<helpfile>,<context>])MsgBox语句的用法为:MsgBox<提示>[,<按钮>][,<标题>][,<helpfile>,<context>]其中:<提示>、<标题>、<Helpfile>和<context>的意义同InputBox函数。<按钮>可选项。整型表达式,指定显示按钮的数目及形式,使用的图标类型,缺省按钮的种类以及消息框的强制回应等。如果省略,则<按钮>的缺省值为0。表4-3<按钮>设置值及其意义分组系统常数值描述按钮数目vbOKOnly0只显示OK按钮。VbOKCancel1显示OK及Cancel按钮。VbAbortRetryIgnore2显示Abort、Retry及Ignore按钮。VbYesNoCancel3显示Yes、No及Cancel按钮。VbYesNo4显示Yes及No按钮。VbRetryCancel5显示Retry及Cancel按钮。图标类型VbCritical16显示CriticalMessage图标。VbQuestion32显示WarningQuery图标。VbExclamation48显示WarningMessage图标。VbInformation64显示InformationMessage图标。默认按钮vbDefaultButton10第一个按钮是缺省值。vbDefaultButton2256第二个按钮是缺省值。vbDefaultButton3512第三个按钮是缺省值。模式vbApplicationModal0应用程序强制返回;应用程序一直被挂起,直到用户对消息框作出响应才继续工作。vbSystemModal4096系统强制返回;全部应用程序都被挂起,直到用户对消息框作出响应才继续工作。表4-4MsgBox函数的返回值系统常数返回值描述VbOK1确定vbCancel2取消vbAbort3终止vbRetry4重试vbIgnore5忽略VbYes6是VbNo7否
图4-7MsgBox对话框的应用图4-8MsgBox对话框的应用修改的Command1_click事件代码为:PrivateSubCommand1_Click()DimintMsginAsIntegerDimstrmsgAsStringstrText="请输入您的身份证号并单击“确定”"+Chr(13)+Chr(10)+"重新填写请单击“取消”"strIDcard=InputBox$(strText,"身份证号",,100,100)strmsg="请确认您的身份证号码:"+Chr(13)+Chr(10)+strIDcard'图4-9对话框显示的内容IfstrIDcard<>""ThenintMsgin=MsgBox(strmsg,vbYesNoCancel+vbQuestion+vbDefaultButton2,"确认身份证")EndIfSelectCaseintMsginCase6'……..提交意见单的代码略MsgBox"您的意见已经提交,谢谢!",vbOKOnly+vbInformation,"已经提交"Case7Command1_Click'重新执行Command1_Click事件Case2MsgBox"您已经放弃提交意见,欢迎下次参加!",vbOKOnly+vbCritical,"放弃提交"EndSelectEndEndSub1.单分支条件结构(If...Then语句)用If...Then结构有条件地执行一个或多个语句。单行语法和多行块语法都可以使用:(1)If<表达式>
Then<语句块>(2)If<表达式>Then<语句块>EndIf下面两个例子等价:(1)IftodayDate<NowThentodayDate=Now(2)IftodayDate<NowThentodayDate=NowEndIf注意:If...Then的单行格式不用EndIf语句。如果<表达式>为True时要执行多行代码,则必须使用多行块If...Then...EndIf语法。例如:IftodayDate<NowThentodayDate=NowTimer1.Enabled=False'定时器控制失效。EndIf
<表达式>TrueFalse<语句>空
todayDate<NowTrueFalsetodayDate=Now空Timer1.Enabled=False图4-12单分支条件语句图4-13单分支条件语句实例2.双分支结构(If...Then...Else语句)可以用If...Then...Else块定义几个语句块,执行其中一个语句。其语法格式也有两种形式:(1)If<表达式>Then<语句块1>Else<语句块2>EndIf(2)If<表达式>Then<语句1>Else<语句2>当<表达式>的值为真时,执行Then后面的语句块1(或语句1),否则执行Else后面的语句块2(或语句2)。其流程见图4-11。y=
<表达式>TrueFalse<语句块1><语句块2>图4-14双分支结构流程
x≥0TrueFalse
例如:计算分段函数y=
本题在选择条件时,可以选择x<0作为条件,也可以选择x≥0作为条件。这里选择x≥0作为条件。画出如图4-12所示流程图。y=图4-12双分支结构流程实例y=3*x*x+4*x-51)用单分支结构实现y=3*x*x+4*x-5Ifx≥0Theny=或Ifx<0Theny=3*x*x+4*x-5Ifx≥0Theny=但是,不能这样表示:Ifx≥0Theny=(2)用双分支结构实现Ifx≥0Theny=Elsey=3*x*x+4*x-5EndIfy=3*x*x+4*x-53.多分支结构(If…Then…ElseIf语句)多分支结构可以处理两个或两个以上分支。其语句形式为:If<表达式1>Then<语句块1>ElseIf<表达式2>Then<语句块2>…[Else<语句块n+1>]EndIfVisualBasic首先测试<表达式1>。如果它为False,VisualBasic就测试<表达式2>,依次类推,直到找到一个为True的条件。当它找到一个为True的条件时,VisualBasic就会执行相应的语句块,然后执行EndIf后面的代码。作为一个选择,可以包含Else语句块,如果条件都不是True,则VisualBasic执行Else语句块。<表达式1>语句块1<表达式2>语句块2……语句块n语句块n+1<表达式n>图4-13多分支结构流程FalseTrueTrueFalseTrueFalse语句块n+1
语句块n
例4-5:利用If...Then...Else语句编写求函数y=
的值的程序,要求只要在文本框Text1中输入自变量x的值,就在标签栏label1上显示函数值。根据题意,在窗体上添加一个文本控件Text1和标签控件label1,代码应包含在Text1_change事件中。代码为:PrivateSubText1_Change()DimxAsDouble,yAsDoubleLabel1.Caption=""'清空Label1的内容x=CDbl(Text1.Text)'将字符串类型转化为双精度类型
If(x<1#)Theny=1#-xElseIf(x>=1#Andx<=2#)Theny=(1#-x)*(2#-x)Elsey=-(2#-x)EndIfLabel1.Caption=y'在Label1上显示结果EndSubx<1#x>=1#Andx<=2#TrueFalsey=(1#-x)*(2#-x)
y=-(2#-x)图4-14多分支结构流程实例TrueFalsey=1#-x例4-6:大学录取新生时,根据学生总分情况给与奖励,条件如下:(1)四门总分不低于700分,特等奖。(2)四门总分680分(含680分)~700分(不含700分),优秀奖。(3)前三门单科不低于145分,第四门不低于280分),特别奖。(4)奖励按特等奖、优秀奖、特别奖由高到低,不重复计奖(包括单科)。要求:四科成绩(intmark1、intmark2、intmark3、intmark4)依次在四个文本框中输入,总分(intmark0)在标签控件上显示。单击命令按钮Command1后,在对话框中显示获奖情况。分析:获奖条件表达式分别为:(1)intmark0>=700(2)intmark0>=680ANDintmark0<700(3)intmark1>=145ORintmark2>=145ORintmark3>=145ORintmark4>=280流程图见图4-18。设计步骤如下:(1)建立应用程序用户界面按如图4-19建立四个文本框(Text1~Text4)接受成绩输入,两个标签控件(Label1~Label2),一个命令按钮Command1,设置各控件的属性,其中Command1的Caption属性值为“查询”。intmark0>=700TrueFlase特等奖优秀奖intmark1>148ORintmark2>148ORintmark3>148ORintmark4>148intmark0>=680ANDintmark0<700特别奖您没有获奖图4-15多分支结构流程实例TrueFlaseTrueFlase图4-16应用程序运行情况(2)编写程序代码根据流程图,编写出Command_click事件的代码为:PrivateSubCommand1_Click()Dimintmark0AsInteger,intmark1AsIntegerDimintmark2AsInteger,intmark3AsInteger,intmark4AsIntegerintmark1=CInt(Text1.Text)intmark2=CInt(Text2.Text)intmark3=CInt(Text3.Text)intmark4=CInt(Text4.Text)intmark0=intmark1+intmark2+intmark3+intmark4Label3.Caption=intmark0Ifintmark0>=700ThenMsgBox"您获得了特等奖",vbOKOnly+vbInformation,"获奖通知"ElseIfintmark0>=680ThenMsgBox"您获得了优秀奖",vbOKOnly+vbInformation,"获奖通知"ElseIfintmark1>=145Orintmark2>=145Orintmark3>=145Orintmark4>=280ThenMsgBox"您获得了特别奖",vbOKOnly+vbInformation,"获奖通知"ElseMsgBox"很遗憾,您没有获奖",vbOKOnly+vbInformation,"获奖通知"EndIfEndSub4.If语句的嵌套上面学习了If语句的基本形式,可以通过这些基本形式加以复合,获得更为复杂的If结构,称为If语句的嵌套。一般形式如图4-17所示。图4-18为在Else块中嵌套If结构的形式。可根据实际情况选择采用何种结构。图4-17If语句复合结构的一般形式图4-18在Else块中嵌套If结构的形式图4-19正确与错误的转向例4-7:求a、b、c中三个实数的最大值、最小值,程序中不得使用循环结构和转向语句。a、b、c三值从三个文本框中输入,当单击命令按钮时将结果显示在窗体上。画出流程图。(1)设计流程图根据题意,画出如图4-20所示流程图。
a<bTrueFalseb<cTruea<c
Mininabc=aMininabc=cMaxinabc=ba<cMaxinabc=ab<c图4-20求三个数极值的流程Maxinabc=cMininabc=aFalseTrueMaxinabc=aMaxinabc=cMininabc=bMininabc=cTrueFalseMininabc=bFalseTrueMaxinabc=c(2)设置界面与控件属性在窗体上添加三个文本框,一个命令按钮,设置各自的属性(主要是Caption属性和Font属性)。False4.2.2SelectCaseSelectCase的结构形式为:SelectCase<测试表达式>[Case<表达式列表1>[<语句块1>]][Case<表达式列表3>[<语句块2>]]…[Case<表达式列表n>[<语句块n>]][CaseElse[<语句块n+1>]]EndSelectSelectCase选择结构执行的过程为:(1)计算<测试表达式>的值(2)将<测试表达式>的值与Case语句中的<表达式列表>中的每一个值逐一进行比较。如果与其中的一个值相匹配,则执行该语句中的<语句块>。如果不止一个Case与<测试表达式>相匹配,则只对第一个匹配的Case执行与之相关联的<语句块>。如果在表达式列表中没有一个值与测试表达式相匹配,则VisualBasic执行CaseElse子句(此项是可选的)中的语句。最后执行EndSelect语句。<测试表达式>图4-22SelectCase选择结构流程V<表达式列表1><语句块1>……<语句块n+1><表达式列表n+1><表达式列表n><语句块n>……例4-8:表4-5为华中航空总公司机票打折表。试根据此表编写程序。日期、机票数从文本框中输入,打折情况在窗体上输出。如图4-23。
表4-5机票优惠率月日订票数(张)优惠率(%)1、2、3、6、11、12全部>=3025<30104、928~30>=3035<3015其它>=3025<30105、101~8>=3035<3015其它>=3025<30107、8全部>=3030<3020(2)设计应用程序用户界面添加6个标签控件Label1~Label6,按顺序见图4-23所示。Label1~Label5的Caption属性依次为:“请输入日期”、“月”、“日”、“请输入订票数”、“张”,Label6的Caption属性设计时为空白,运行时用来显示优惠率。添加3个文本框控件Text1~Text3,按顺序见图4-23所示。添加一个命令按钮Command1。图4-23机票优惠率查询系统(3)编写代码根据流程图,编写出Command1_Click事件的代码如下:PrivateSubCommand1_Click()DimintnnAsLongDimintssAsInteger,strdateAsIntegerintnn=Clng(Text3.Text)strdate=Cint(Trim(Text1.Text)&Trim(Text2.Text))SelectCasestrdateCase428To431,51To57,928To931,101To107Ifintnn>=30Thenintss=35Elseintss=15Case71To79,710To731,81To89,810To831Ifintnn>=30Thenintss=30Elseintss=20CaseElseIfintnn>=30Thenintss=25Elseintss=10EndSelectLabel6.Caption="您所订机票优惠率为:"&str(intss)&"%"EndSub另外,可以取系统的日期作为输入日期,该事件可以指定为Text1_DbClick事件,即双击Text1发生的事件,代码为:PrivateSubText1_DblClick()Text1.Text=Month(Now)Text2.Text=Day(Now)EndSub当要重新输入数据时,可以自动清空各文本框的内容。其中单击Text1清空所有文本框的内容,单击其他文本框,只清空被单击的文本框的内容。PrivateSubText1_Click()Text1.Text=""Text2.Text=""Text3.Text=""EndSubPrivateSubText2_Click()Text2.Text=""EndSubPrivateSubText3_Click()Text3.Text=""EndSub此外,还应为每一个文本框的键盘按下事件编写如下代码,表明当按回车键时,自动跳到下一个必要的控件:PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenText2.SetFocusEndSubPrivateSubText2_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenText3.SetFocusEndSubPrivateSubText3_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenCommand1.SetFocusEndSub7月~8月<3010日期
>=30<30>=30<30>=3035153020104/28~5/7,9/28~10/7
>=30
7月~8月图4-24机票优惠率计算流程图其他满足条件>=30>=3025<30<30<3010302035154.2.3条件函数1.IIf函数2.Choose函数IIf函数的功能是根据表达式的值,来返回两部分中的其中一个。其语法格式为:IIf(<测试表达式>,<真值部分>,<假值部分>)例如,求分段函数:y=函数值的语句可以简单地表示为:y=Iif(x<0,2*x+3,4-3*x)Choose函数的功能是:从参数列表中选择并返回一个值。其语法格式为:Choose(<整数表达式>,<选项1>[,
<选项2>,...[,<选项n>]])下面的示例使用Choose函数来显示某天的执勤人员情况,strDay参数传递到过程之中的索引。FunctionGetChoice(strDayAsstring)strName=Choose(strDay,"王大虎","谢伟烽","马家栋","何右嘉","吴仁杰",)EndFunction当strDay的值为1时,返回字符串“王大虎”,当strDay的值为2时,返回字符串“谢伟烽”,以此类推。当strDay的值不在1~5之间时,返回NULL。4.3.1Do...Loop语句4.3.2For...Next语句返回退出4.3.3循环嵌套4.3.4ForEach...Next4.3.5退出控制结构4.3循环结构4.3.1Do...Loop语句1.前测型Do...Loop循环在前测型Do...Loop循环中,只要<循环条件>为True就执行<循环体>。其语法格式为:Do[{While|Until}<循环条件>]<循环体>Loop例4-9:编写程序,根据多项式:π=求π的近似值。精度要求<10-12。根据题意和要求可先求出(1)设计流程图根据题目要求,设计出如图4-25所示的流程图。的和。输出循环次数isum=0#;temp=1#;i=1当temp>=1.0E-12sum=sum+tempi=i+1temp=1#/i/i输出π的近似值图4-25求π的近似值流程图(2)设计应用程序界面应用程序所需的控件及其属性值见表4-6。Picture1和Picture2分别用来显示运算次数i的值和π的近似值。控件Caption属性值Label1运算次数Label2近似值Picture1空白(设计时)Picture2空白(设计时)Command1求π的近似值表4-6求π的近似值应用程序控件属性值(3)编写代码根据流程图编写Command1_click事件的代码如下:PrivateSubCommand1_Click()DimsumAsDouble,tempAsDouble,piAsDoubleDimiAsDoublesum=0#temp=1#i=1图4-26求π的近似值的程序运行结果DoWhile(temp>=0.1)sum=sum+tempi=i+1temp=1#/i/iLooppi=Sqr(6#*sum)Picture1.Printi;"次"Picture2.PrintpiEndSub由于程序代码是直接从设计界面拷贝过来,所有代码书写格式已经经过VB格式化。程序运行情况参见图4-26。输入数据nVal(Text1.Text)>2147483647TrueFalse数据溢出,重新输入n当k<=m=1k=k+1nModk=0TrueFalses=0TrueFalse例4-10:编写程序::判断一个数是否为素数。(1)设计流程图根据题目要求,设计出如图4-27所示的流程图。当k<=图4-27求素数流程图n不是素数n是素数Andm=0(2)设计应用程序界面应用程序所需的控件及其属性值见表4-7。控件Caption属性值Label1自然数Label2空白(设计时)Text11空白(设计时)Command1输入自然数后单击此按钮表4-7判断素数应用程序控件属性值(3)编写代码根据流程图,编写Command1_click事件代码如下:PrivateSubCommand1_Click()Dimmasinteger,kasintegerDimnAsLongIfVal(Text1.Text)>2147483647ThenMsgBox"数据溢出,请重新输入",vbOKOnly+vbOKCancel+vbInformation,"数据错误"Text1.Text=""Else图4-28判断素数程序运行实例
n=CLng(Text1.Text)m=0:k=2DoWhilek<=Sqr(n)Andm=0IfnModk=0Thenm=1Elsek=k+1EndIfLoopIfm=0ThenLabel2.Caption="是一个素数"ElseLabel2.Caption="不是一个素数"EndIfEndIfText1.SetFocus
EndSub2.后测型Do...Loop循环Do...Loop语句的另一种演变形式是先执行<循环体>,然后在每次执行后测试<循环条件>。称为后测型Do...Loop循环。这种形式保证<循环体>至少执行1次,其语法格式为:Do
<循环体>Loop[{While|Until}<循环条件>]输入m,nm存放大数,n存放小数输出n求m/n的余数m←n数n←r的余数例4-11:求两个正整数m和n的最大公约数。求最大公约数最常用的方法是辗转相除法。其设计思路是:(1)假设m大于n;(2)用n作除数除m,得余数r。(3)若r≠0,则令m←n,n←r,继续相除得到新的r值,直到r=0为止。(4)最后的n即为最大公约数。解题步骤如下:(1)设计流程图根据题意,设计出如图4-29所示流程图。图4-29求最大公约数的流程图直到r=0(2)设计应用程序界面所需添加的控件的属性值参见表4-8。控件Caption(或Text)属性值Label1请输入两个正整数Label2mnLabel3m和n的最大公约数是Label4空白(设计时)Text11空白(设计时)Text12空白(设计时)Command1求
解表4-8判断素数应用程序控件属性值(3)编写代码PrivateSubCommand1_Click()DimmAsLong,nAsLong,tempAsLongIf(Val(Text1.Text)=0OrVal(Text2.Text)=0)OrVal(Text1.Text)>2147483647OrVal(Text2.Text)>2147483647ThenMsgBox"输入的数0或溢出,请重新输入!"MsgBox"输入的数0或溢出,请重新输入!",vbInformation+vbOKOnly,"数据错误"Text1.Text=""Text2.Text=""图4-30求最大公约数程序运行实例
Text1.SetFocusElsem=Val(Text1.Text)n=Val(Text2.Text)Ifm<nThentemp=m:m=n:n=tempEndIfDor=mModnm=nn=rLoopWhiler<>0Label3.Caption=mEndIfEndSub4.3.2For...Next语句Do循环使用于在不知道执行多少次<循环体>时。有时,循环的次数是已知的,这时最好使用For...Next循环。与Do循环不同,For循环使用一个叫做计数器的变量,每重复一次循环之后,计数器变量的值就会增加或者减少。For循环的语法如下:For<循环变量>=<初值>To<终值>[Step<步长>]<循环体>Next[<循环变量>]例4-12:求1~1000之间所有能够被13整除的数。按每行各行10个数排满足条件的数。(1)设计流程图根据题意,设计如图4-34所示流程图。图4-31求被13整除的数的流程图
(2)设计应用程序界面应用程序所需控件属性值参见表4-9。控件Caption属性值Command1单击此按钮求1~1000值见能被13整除的数Picture1无此属性值表4-9求被13整除的数应用程序控件属性值(3)编写代码图4-32程序运行情况DimiAsInteger,jAsIntegerj=0Fori=1To1000IfiMod13=0Thenj=j+1Picture1.Printi;IfjMod10=0ThenPicture1.PrintEndIfNextiPicture1.PrintPicture1.Print"一共有"&j&"个数可以被13整除"EndSub其中,语句IfjMod10=0ThenPicture1.Print控制每行打印满足条件的数的个数(10个),注意语句Picture1.Printi;后的分号不能省略。程序运行情况参见图4-32。PrivateSubCommand1_Click()4.3.3循环嵌套在一个循环体内又出现另外的循环语句称为循环嵌套。例4-13:指出下面程序的运行结果:PrivateSubForm_Click()DimaAsInteger,iAsInteger,jAsIntegera=0Fori=1To5Forj=-2To2a=a+i+j图4-33程序运行结果
NextjPrinta;NextiPrintPrinti,j,aEndSub例4-14:编程求图4-38所示乘法九九表。执行分析图4-38可知:如果将每一个等式作为一个方阵的节点,则每一个等式出现的位置上行列的数字是相同的。因此,可以用如下嵌套的循环作为对一个节点的描述:Fori=1to9Forj=1toi<循环体>NextjNexti这里,<循环体>为乘法等式:expss=i&"×"&j&"="&i*j。现在,主要的问题是控制每个表达是出现的位置,可以用Tab函数来实现,假设给每个等式的宽度为10,第一个等式出现在第4行,则Tab函数可以这样表示:Tab((j-1)*10+3);图4-34乘法九九表(1)在窗体上添加一个命令按钮和一个Pictrue控件,编写command1_click事件的代码如下:PrivateSubCommand1_Click()DimiAsInteger,jAsIntegerDimexpssAsStringFori=1To9Forj=1Toiexpss=i&"×"&j&"="&i*jPicture1.PrintTab((j-1)*10+1);expss;NextjPicture1.PrintNextiEndSub图4-35乘法九九表(2)ForEach...Next循环与For...Next循环类似,但它对数组或对象集合中的每一个元素重复一组语句,而不是重复语句一定的次数。ForEach...Next循环非常适合于不知道一个集合有多少元素的情况。ForEach...Next循环的语法格式如下:ForEach<成员>In<数组|集合>[<语句块>]Nextelementt4.3.4ForEach...Next4.3.5退出控制结构1.ExitFor语句和ExitDo语句2.GoTo语句3.End语句4.With语句GoTo语句的语法格式为:GoTo{标号|行号}With语句的功能是在一个单一对象或一个用户定义类型上执行一系列的语句。其语法结构为:With<对象>[<语句块>]EndWith例4-15:求Sn=a+aa+aaa+…+aaa…a(n个a)之值,其中a是一个数字。例如:1+11+111+…+111111(此时n=6)。a和n在程序运行时由键盘输入。PrivateSubCommand1_Click()DimiAsInteger,DimaAsDouble,bAsDouble,tnAs
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 怀化市溆浦县2025-2026学年第二学期五年级语文期末考试卷(部编版含答案)
- 红河哈尼族彝族自治州红河县2025-2026学年第二学期四年级语文第七单元测试卷(部编版含答案)
- 酒泉地区金塔县2025-2026学年第二学期三年级语文第八单元测试卷(部编版含答案)
- 福州市鼓楼区2025-2026学年第二学期五年级语文期末考试卷(部编版含答案)
- 建设工程质量检测员风险评估与管理强化考核试卷含答案
- 卷烟卷接设备操作工安全检查强化考核试卷含答案
- 计算机网络设备装配调试员岗前技术评优考核试卷含答案
- 酚醛树脂装置操作工安全文明水平考核试卷含答案
- 电子绝缘材料试制工安全意识水平考核试卷含答案
- 昆明市嵩明县2025-2026学年第二学期五年级语文第八单元测试卷(部编版含答案)
- 员工放弃社保协议书范本
- 2025福建高中春季高考学业水平考试数学测试卷
- 新生儿呼吸道合胞病毒感染病因介绍
- 电力应急演练
- 批量伤员救治
- 车站调度员(技师)技能鉴定理论考试题库(含答案)
- 转炉煤气净化及回收工程技术规范
- 耳针法(耳穴埋豆)操作评分标准
- MOOC 刑法学总论-西南政法大学 中国大学慕课答案
- (新版)烟叶分级工(技师)专业知识考试题库大全-2烟叶加工和使用
- 激光先进制造技术 课件 第6章 激光复合制造技术
评论
0/150
提交评论