第3章3 过程(2学时)_第1页
第3章3 过程(2学时)_第2页
第3章3 过程(2学时)_第3页
第3章3 过程(2学时)_第4页
第3章3 过程(2学时)_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

3.4过程过程是完成特定功能的一组程序代码,这组程序代码是由若干个语句构成的。在程序设计过程中,将一些常用的功能编写成过程,可供多个不同的事件过程多次调用,从而可以减少重复编写代码的工作量,实现代码重用,使程序简练、便于调试和维护。3.4.1过程概述PrivateSubForm_Click()DimiAsInteger,k1AsLong,k2AsLongk1=1:k2=1Fori=1To5k1=k1*iNextiFori=1To10k2=k2*iNextiPrint"5!+10!=";k1+k2EndSub现有一个实际问题,要求编写程序求5!+10!的值。对于这个问题,可以用前面所学的循环结构编写如下程序:将求阶乘的过程编写如下:PrivateFunctionJc(nAsInteger)AsLongDimiAsInteger,kAsLongk=1Fori=1Tonk=k*iNextiJc=kEndFunction调用上面的过程求出5!和10!,编写代码如下:PrivateSubCommand1_Click()Print"5!+10!=";Jc(5)+Jc(10)EndSub结论通过上面的例子,可以体会到过程在编写程序中的重要作用在VisualBasic中,过程通常使用在两个方面:(1)如果一个应用程序要完成一个复杂任务,则通常把这个复杂任务划分为若干个小任务,并把这些小任务编写成一个个过程。(2)在一个完成复杂任务的应用程序中,往往要编写一些功能完全相同或相近的程序段,为了避免程序繁琐冗长使程序简练一些,也可以把这样的程序段独立出来编写成过程,然后在需要的地方调用该过程,完成相应的工作。VisualBasic的过程分类系统提供的过程(1)内部函数:可以直接调用其完成相应的功能;(2)事件过程:是VisualBasic应用程序的主体,系统提供了它们的框架,用户可以根据需要填写具体的内容。用户自定义的通用过程。(1)子程序过程(Sub过程):没有返回值(2)函数过程(Function过程):有返回值。3.4.2Function过程1.Function过程的建立建立Function过程有两种方法:直接定义和利用菜单。在窗体或标准模块的“代码窗口”(注意在“对象”框中应选择“通用”)中直接定义Function过程,采用如下格式:[Public|Private][Static]Function函数名([形参列表])[As类型]语句组函数名=表达式[ExitFunction]EndFunction说明:(1)一个Function过程以Function开头,而以EndFunction结束,两者之间的部分是描述过程操作的语句组,可以称为“过程体”或“函数体”。(2)函数名:命名规则与变量名规则相同。但不能与系统的内部函数或其它通用过程同名,也不能与已定义的全局变量和本模块中模块级变量同名。(3)在函数体内,函数名可以当变量使用,函数的返回值就是通过对函数名的赋值语句来实现的,在函数过程中至少要对函数名赋值一次。(4)形参列表:形式参数通常简称“形参”,必须是变量;仅表示形参的类型、个数、位置;定义时是无值的,只有在过程被调用时,形参和实参结合后才获得相应的值;多个形参之间用逗号分隔。过程可以无形式参数,但括号不能省。(5)As类型:是指函数返回值的类型。若省略,则函数返回值是变体类型。(6)ExitFunction:表示退出函数过程,通常是与选择结构(If或SelectCase语句)联用,即当满足一定条件时,退出函数过程。(7)关键字Public、Private和Static表示了过程的作用域(有效范围)。Public表示公有过程,该过程可以被任何模块(窗体模块和标准模块)中的过程调用;Private表示私有过程,该过程只能被本模块(窗体模块或标准模块)中的其他过程调用;Static过程也是私有过程,但这时表明过程中的局部变量都是Static型。注意VisualBasic的过程默认为Public过程。例3.17编写一个求两个数中较大数的Function过程。具体实现代码如下:PublicFunctionMax(xAsSingle,yAsSingle)AsSingle………③Ifx>yThenMax=xElseMax=yEndIfEndFunction……④2.Function过程的调用调用引起过程的执行。也就是说,要执行一个过程,必须调用该过程。Function过程的调用比较简单,可以像使用VisualBasic的内部函数一样来调用Function过程,调用时只需写出函数名和相应的参数即可。调用格式如下:

函数名([实参列表])说明:(1)实参可以是常量、表达式、有效的变量名等,如果是变量必须有确定的值;多个实参之间用逗号分隔;实参列表为可选项,缺省时调用的是无参过程。(2)调用时把实参传递给函数过程中的形参,注意实参和形参的数据类型、顺序、个数必须匹配。(3)函数过程调用只能出现在表达式中,其功能是求得函数过程的返回值。调用前面的Max函数可以使用下面的语句:(1)c=Max(5,10)‘用一个变量接收函数过程的返回值(2)s=Max(5,10)+Max(10,20)‘函数过程返回值直接参与表达式的运算(3)PrintMax(5,10)‘用Print方法输出函数过程的返回值下面的函数调用语句就是错误的:Max(5,10)例3.18从键盘输入三个数,编写程序求这三个数中的最大数。分析该题可以通过两次调用Max函数过程,找出这三个数中的最大数。具体实现代码如下:PrivateSubForm_Click()DimaAsSingle,bAsSingle,cAsSingleDimsAsSinglea=InputBox("请输入第1个数:")b=InputBox("请输入第2个数:")c=InputBox("请输入第3个数:")Print"输入的3个数分别为:";a;b;cs=Max(a,b)…………①Print"最大数为:";Max(s,c)…………②EndSub3.4.3Sub过程Sub过程是用户自定义的通用过程的另一种形式,与Function过程不同的是,它不直接返回值。1.Sub过程的建立在代码窗口中直接定义Sub过程,使用下面的格式:[Private|Public][Static]Sub子过程名([形参表])语句组[ExitSub]EndSub说明:(1)一个Sub过程以Sub开头,而以EndSub结束。由此可见事件过程实际上也是Sub过程,但它是一种特殊的Sub过程,它附加在窗体和控件上,不能由用户任意定义,而是由系统指定。(2)由于Sub过程没有返回值,所以在过程体中不需要给“子过程名”赋值的语句。2.Sub过程的调用Sub过程的调用有两种方式:一种是把过程的名字放在一个Call语句中,另一种方法是把过程名作为一个独立的语句来使用。格式1:Call子过程名[(实参列表)]格式2:子过程名[实参列表]说明:(1)使用格式1调用时,如果调用的是无参过程,则实参列表和圆括号都可以省略;否则应给出相应的实参,并将参数放在圆括号中。(2)使用格式2调用时,即使调用的是有参过程,实参列表也不能加圆括号,实参与过程名之间用空格隔开,实参之间用逗号隔开。(3)事件过程也是Sub过程,可以被其他的事件过程和通用过程(Sub过程和Function过程)调用,调用的方法与调用Sub通用过程相同。但一般情况下是在事件过程中调用通用过程。(4)过程虽然可以嵌套调用,但不能嵌套定义。即在一个过程中可以调用另外一个过程,但不能定义一个新的过程。例3.19编写程序,在窗体上打印如图3.17所示的图形。图3.17打印图形PrivateSubTri(strAsString,nAsInteger)'定义打印图形的过程DimiAsInteger,jAsIntegerFori=1Ton'外层循环控制打印的行数Forj=1Toi'内层循环控制打印的字符个数Printstr;NextjPrintNextiEndSubPrivateSubForm_Click()DimsAsString*1,mAsIntegers="*"m=8CallTri(s,m)'使用Call关键字的调用格式s="$"Tris,m/2'不用Call关键字的

温馨提示

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

评论

0/150

提交评论