学习vb课件第七章_第1页
学习vb课件第七章_第2页
学习vb课件第七章_第3页
学习vb课件第七章_第4页
学习vb课件第七章_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章过程7.1Sub过程

7.1.1事件过程与通用过程7.1.2通用过程的创建

7.1.3通用过程的调用7.2Function过程7.2.1Function过程的定义7.2.2Function过程的调用7.2.3查看过程

7.3

向过程传递参数7.3.1形式参数与实际参数7.3.2按值传递与按地址传递

7.3.3使用参数

7.3.4传递数组

7.4

过程的嵌套与递归调用7.4.1过程的嵌套

7.4.2过程的递归

习题七

7.1Sub过程7.1.1事件过程与通用过程1.事件过程编写事件过程代码应注意以下几点:

(1)事件过程的命名要符合下列要求。=

控件的事件过程名由控件的(在Name属性中规定的)实际名字、下划线“_”和事件名组合起来构成。例如,如果希望在单击了一个名为cmdPlay的命令按钮后,这个按钮会调用单击事件过程,则要使用cmdPlay_Click过程名。=

窗体的事件过程名由单词“Form”、下划线“_”和事件名组合起来构成。例如,如果希望在单击窗体后窗体会调用单击事件,则要使用Form_Click过程名。MDI窗体的事件过程名由词汇“MDIForm”、下划线“_”和事件名组合起来构成。(2)控件事件过程的语法为PrivateSub〈控件名〉_〈事件名〉([〈形参表〉])[〈语句组〉]EndSub(3)窗体事件过程的语法为PrivateSubForm_〈事件名〉([〈形参表〉])[〈语句组〉]EndSub7.1.2通用过程的创建1.在“代码”编辑窗口中输入在“代码”编辑窗口中,把光标定位在已有过程的外面。然后按如下格式输入通用过程:[Private|Public][Static]Sub〈过程名〉([〈形参表〉])[〈语句列〉][ExitSub][〈语句列〉]EndSub2.使用“添加过程”对话框使用“添加过程”对话框建立过程的方法为

(1)打开要添加过程的代码编辑窗口。

(2)执行“工具”菜单中的“添加过程”命令,打开“添加过程”对话框。

(3)在“名称”文本框中输入过程名。从“类型”组中选择过程类型。从“范围”组中选择范围,相当于使用Public或Private关键字。

(4)单击“确定”按钮。7.1.3通用过程的调用调用Sub过程有两种方法:=

使用Call语句:Call〈过程名〉([〈实参表〉])=

直接使用过程名:〈过程名〉[〈实参表〉]【例7-1】在一个窗口中包含3个命令按钮,当用户单击其中一个时,要求其他个别按钮不能使用,如图7-2所示。

单击Command1后单击Command3后单击Command2后图7-23个按钮双击窗体的空白区,打开代码编辑窗口。

(2)编写通用过程代码:PublicSubButton_Manage(ButtomAsObject)SelectCaseButtomCaseCommand1Command2.Enabled=FalseCaseCommand2Command1.Enabled=FalseCaseCommand3Command1.Enabled=TrueCommand2.Enabled=TrueEndSelectEndSub(3)运行工程。【例7-2】计算阶乘5!、6!、8!,以及阶乘的和5!+6!+8!(如图7-6所示)。

图7-6计算阶乘以及阶乘的和

应用程序用户界面的建立与对象属性的设置参见图7-6,下面给出通用过程及事件过程代码:

fact通用子过程为Subfact(mAsInteger,totalAsLong)'计算阶乘子过程

DimiAsIntegertotal=1Fori=1Tomtotal=total*iNextiEndSub

命令按钮组的Click事件代码为PrivateSubCommand1_Click(IndexAsInteger)DimaAsInteger,bAsInteger,cAsInteger,sAsLong,totAsLongn=IndexSelectCasenCase0a=5Callfact(a,tot)Label1.Caption=a&"!="&totCase1a=6Callfact(a,tot)Label1.Caption=a&"!="&totCase2a=8Callfact(a,tot)Label1.Caption=a&"!="&totCase3a=5:b=6:c=8Callfact(a,tot)s=totCallfact(b,tot)s=s+totCallfact(c,tot)s=s+totLabel1.Caption=a&"!+"&b&"!+"&c&"!="&sEndSelectEndSub7.2Function过程7.2.1Function过程的定义Function过程的语法是[Private|Public][Static]Function〈函数名〉([〈形参表〉])[As〈类型〉][〈语句列〉][〈函数名〉=〈表达式〉][ExitFunction][〈语句列〉][〈函数名〉=〈表达式〉]EndFunction【例7-6】求3到10的阶乘之和。下面给出命令按钮的Click事件代码:PrivateSubCommand1_Click()DimsumAsLong,iAsIntegerFori=3To10sum=sum+fact(i)NextiLabel2.Caption=sumEndSub图7-7求3到10的阶乘之和7.2.3查看过程1.查看当前模块中的过程2.查看其他模块中的过程7.3向过程传递参数7.3.1形式参数与实际参数1.形式参数2.实际参数7.3.2按值传递与按地址传递

1.按地址传递参数【例7-8】利用【例7-7】中的Function过程,求任意两数的最大公约数。应用程序用户界面的建立与对象属性的设置参见图7-9,图7-9求2个整数的最大公约数下面给出命令按钮的事件代码:PrivateSubCommand1_Click()DimxAsLong,yAsLongtemp=InputBox("请输入第1个整数:")x=Val(temp)temp=InputBox("请输入第2个整数:")y=Val(temp)Ifx*y=0ThenExitSubLabel1.Caption=x&","&y&"的最大公约数是:"&Str(Hcf(x,y))Label2.Caption=x&","&y&"的最大公约数是:"&Str(Hcf(x,y))EndSub2.按值传递参数【例7-9】在例7-8中使用传值调用Function过程,求两个整数的最大公约数和最小公倍数。下面给出命令按钮的事件代码:PrivateSubCommand1_Click()DimmAsLong,nAsLongtemp=InputBox("请输入第1个整数:")m=Val(temp)temp=InputBox("请输入第2个整数:")n=Val(temp)Ifn*m=0ThenExitSubLabel1.Caption=m&","&n&"的最大公约数是:"&Str(Hcf((m),(n)))Label2.Caption=m&","&n&"的最小公倍数是:"&Str(m*n/Hcf((m),(n)))EndSub图7-10求最大公约数与最小公倍数7.3.3使用参数使用可选的参数2.提供可选参数的缺省值3.使用不定数量的参数7.3.4传递数组

【例7-14】随机产生三组整数,并求出每组的最大数,如图7-14所示。

图7-14分别求3组随机整数中的最大数

设计步骤如下:

(1)设计窗体界面以及设置对象属性。

(2)编写程序代码。考虑到要在不同的过程中使用数组,所以首先在模块的通用段声明数组:Dima(1To10)AsInteger,b(1To10)AsInteger,c(1To10)AsInteger

产生随机数组并将10个数连成一个字符串返回的Fuction过程:Functionsui_ji(p()AsInteger)AsStringtemp=""RandomizeFori=1To10Dox=Int(Rnd*90)+10yes=0Forj=1Toi-1Ifx=p(j)Thenyes=1:ExitForNextLoopWhileyes=1p(i)=xtemp=temp<rim(Str(p(i)))&","Nextsui_ji=tempEndFunction

找出数组10个数中最大数并返回的Fuction过程:Functionda(p()AsInteger)AsIntegerMax=p(1)Fori=2To10IfMax<p(i)ThenMax=p(i)Nextda=MaxEndFunction

随机整数的生成由窗体的Load事件代码完成:PrivateSubForm_Load()DimpAsStringp=sui_ji(a())Frame1(0).Caption="第1组随机整数:"Label1(0).Caption=LTrim(Left(p,Len(p)-1))p=sui_ji(b())Frame1(1).Caption="第2组随机整数:"Label1(1).Caption=LTrim(Left(p,Len(p)-1))p=sui_ji(c())Frame1(2).Caption="第3组随机整数:"Label1(2).Caption=LTrim(Left(p,Len(p)-1))EndSub

两个命令按钮的Click事件代码:PrivateSubCommand1_Click()Form_LoadEndSubPrivateSubCommand2_Click()DimpAsStringp="第1组数中的最大者是:"Frame1(0).Caption=p&da(a())p="第2组数中的最大者是:"Frame1(1).Caption=p&da(b())p="第3组数中的最大者是:"Frame1(2).Caption=p&da(c())EndSub7.4过程的嵌套与递归调用

7.4.1过程的嵌套

【例7-15】输入参数n,m,求组合数的值。

窗体界面的设计以及对象属性的设置参见图7-16所示。下面给出Function过程与事件过程的代码。求阶乘Function过程fact的代码:PrivateFunctionfact(x)p=1Fori=1Toxp=p*iNextifact=pEndFunction图7-16求组合数

求组合数用Function过程Comb的代码:PrivateFunctioncomb(n,m)comb=fact(n)/(fact(m)*fact(n-m))EndFunction

等号按钮Command1的Click事件的代码:PrivateSubCommand1_Click()m=Val(Text1(0).Text):n=Val(Text1(1).Text)Ifm>nThenMsgBox"请保证参数的正确输入!" '参数输入时必须保证n>=mExitSubEndIfText2.Text=Format(comb(n,m),"@@@@@@@@@@@")EndSub7.4.2过程的递归

【例7-17】契比雪夫多项式定义如下。图7-19求契比雪夫多项式的的值

窗体界面设计以及对象属性的设置参见图7-19。下面给出Function过程与事件过程的代码。求契比雪夫多项式的递归Function过程fnt的代码:PrivateFunctionfnt(nAsInteger,xAsSingle)AsSingleIfn=0Thenfnt=1ElseIfn=1Thenfnt=xElsefnt=2*x*fnt(n–1,x)-fnt(n–2,x)EndIfEndFunction

计算按钮Command1的Click事件代码:PrivateSubCommand1_Click()DimmAsInteger,yAsSinglem=Val(Text1.Text)y=Val(Text2.Text)Text3.Text=fnt(m,y)EndSub习题七

7.1

编制判断素数的Sub过程或Function过程,验证哥德巴赫猜想:一个不小于6的偶数可以表示为两个素数之和。例如:6=3+3,8=3+5,10=3+7,…(参见第5章习题)。

7.2

编写输入一个0~6数字,显示汉英对照输出星期的Function过程。

7.3

编制随机整数Function过程,输出30个1~100之内的随机数。

7.4

编制求两数中的较大数Function过程,求多个数的较大数。

7.5

编制求较大数Function过程,使用不定数量的参数,求任意多数中的最大数。

7.6

编制判断奇偶数Function过程。输入一个整数,判断其奇偶性。

7.7

编制判断是否同时被17与37整除的Function过程。输出1000~2000之间所有能同时被17与37整除的数。

7.8

使用Timer函数设计用来暂停指定时间(秒)的Sub过程。

7.9

编写计算阶乘的Function过程,利用

温馨提示

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

评论

0/150

提交评论