已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VB程序设计教程,沈美莉马银晓陈孟建编著,1,第七章过程,一、Sub过程二、Function过程三、参数的传递四、可变参数与对象参数,VB程序设计教程,沈美莉马银晓陈孟建编著,2,第一节Sub过程,过程实际上就是其他语言中的子程序,子程序是一个相对独立的应用程序,它可以被其他程序所调用,当然,它也能够调用其他的子程序。在VisualBasic语言中提供了两类过程,一类是子程序过程,又称为Sub过程,另一类是函数过程,又称为Function过程。一、创建Sub过程1定义Sub过程格式:staticprivatepublicsub过程名(参数表列)ExitsubEndsub,VB程序设计教程,沈美莉马银晓陈孟建编著,3,第一节Sub过程,2注意事项(1)sub过程以sub开始,以Endsub结束。(2)参数static指的是在过程中的变量为static型。(3)private指的是过程是私有过程,只能被本模块中的其他过程访问。(4)public指的是过程是公有过程,可以在程序的任何地方调用它。(5)过程名指的是过程的一个名称,是一个长度不超过255字符的变量名。(6)参数表列指的是,调用时传递给过程的参数的类型和个数,每个参数的格式为:ByVal变量名()As数据类型(7)Sub过程不能嵌套,也就是说,在sub过程内,不能定义sub过程或function过程;也不能用gosub、goto或return语句进入或退出一个sub过程,只能通过调用执行sub过程。,VB程序设计教程,沈美莉马银晓陈孟建编著,4,第一节Sub过程,3建立sub过程的方法(1)方法一双击窗体打开代码设计窗口,或利用“添加模块”功能,打开模块代码窗口。单击“工具”模块下的“添加过程”功能,系统弹出如下图所示的“添加过程”对话框。,VB程序设计教程,沈美莉马银晓陈孟建编著,5,第一节Sub过程,在图中的名称文本框中输入过程名称为:ppa。在“类型”选项中选择“子程序”单选框。在“范围”选项中选择“公有的”单选框。单击“确定”按钮即可建立一个Sub过程,用户可以在Subppa与EndSub之间增添程序代码了。(2)方法二单击“工程”模块下的“添加模块”功能。打开模块代码窗口,并键入过程的名字。例如:键入:subppa(),并按回车键,即可建立一个Sub过程,如下图所示。,VB程序设计教程,沈美莉马银晓陈孟建编著,6,第一节Sub过程,二、调用sub过程调用Sub过程有两种方法,一种方法是使用Call调用过程语句来调用过程,另一种方法是将过程名作为一个语句来使用。1用call调用语句(1)格式Call过程名()(2)功能Call语句把程序控制传递到一个VisualBasic语言的Sub过程。Call语句调用一个过程时,如果过程本身没有参数,则和括号可以省略;否则,应给出相应的实际参数,并把参数放在括号中。实际参数是传递给sub过程的变量或常数的。例如:Callppa(a,b),VB程序设计教程,沈美莉马银晓陈孟建编著,7,第一节Sub过程,2把过程作为一个语句来使用在调用sub过程时,如果省略关键字Call,就成为调用sub过程的第二种方式。其格式为:过程名与第一种方式相比,它有两点不同:(1)去掉了关键字Call(2)去掉了中的括号。例如:ppaa,b【例题5.15】编写一个计算圆面积的sub过程,然后,调用该过程计算圆面积。,VB程序设计教程,沈美莉马银晓陈孟建编著,8,第一节Sub过程,PrivateSubCommand1_Click()Dima,ba=Val(InputBox(请输入圆半径,输入数据,1)circulaEndSubPrivateSubcircul(r)Dimareaarea=3.1415926*r*rPrint圆的面积为;areaMsgBox(圆面积为a,b=;bPrint最大公约数CD=;xEndSub,VB程序设计教程,沈美莉马银晓陈孟建编著,13,第二节Function过程,【例题5.17】输入三个整数,求出其中最大值。【程序代码】(1)主程序段PrivateSubCommand1_Click()Dima,b,c,qAsIntegera=Val(InputBox(请输入第一个数据,输入数据,0)b=Val(InputBox(请输入第二个数据,输入数据,0)c=Val(InputBox(请输入第三个数据,输入数据,0)q=max(a,b)第一次调用max函数,求出a、b中最大值q=max(q,c)第二次调用max函数,求出a、b、c中最大值Print最大值为:;qEndSub,VB程序设计教程,沈美莉马银晓陈孟建编著,14,第二节Function过程,(2)Function函数段Functionmax(x,y)AsInteger函数max其功能是求出两个数中的最大值DimzAsIntegerIf(xj,输出1,若ibThenc=1ElseIfaa(j)Thent=a(i):a(i)=a(j):a(j)=tEndIfNextjNextiPrintEndFunction运行该程序后,显示结果如下图所示。,VB程序设计教程,沈美莉马银晓陈孟建编著,34,第三节参数的传递,VB程序设计教程,沈美莉马银晓陈孟建编著,35,第三节参数的传递,五、可选参数与可变参数1可选参数所谓可选参数是指在函数调用过程中,可以指定一个或多个参数作为可选参数。在定义带可选参数的过程时,必须在参数表中使用Optional关键字,并在过程体中通过IsMissing函数测试调用时是否传递了可选参数,以便在过程体中针对不同的参数个数加以处理。【例题5.22】编写一个既能传递2个参数也能传递3个参数的一个过程,该过程实现对参数的累加功能,并在输出它们的累计值。【程序代码】PrivateSubCommand1_Click()Dimx,y,zAsIntegerPrint输出2个参数累计值Callmul(10,25)Print输出3个参数累计值Callmul(10,25,38)EndSub,VB程序设计教程,沈美莉马银晓陈孟建编著,36,第三节参数的传递,(2)mul函数段Functionmul(aAsInteger,bAsInteger,Optionalc)DimsumAsIntegersum=a+bIfNotIsMissing(c)Thensum=sum+cEndIfPrintsum=;sumEndFunction运行该程序后,显示结果如下图所示。,VB程序设计教程,沈美莉马银晓陈孟建编著,37,第三节参数的传递,VB程序设计教程,沈美莉马银晓陈孟建编著,38,第三节参数的传递,2使用可选参数时的注意事项(1)可选参数必须放在参数表的最后,并且该参数的数据类型必须是变体类型,即是Variant类型。(2)在编写过程代码时,通过IsMissing函数测试实际调用时是否传递了这个可选参数,该函数的返回值是一个逻辑值,即当该值为True时,表示调用时没有传递这个可选参数,否则,当该值为False时,表示调用时已经传递了这个可选参数。(3)IsMissing函数有一个参数,这个参数就是Optional所指定的形参的名字。3可变参数所谓可变参数是指在函数调用过程中,可以定义接受任意个数的参数的传递。使用这个可变参数的过程时,必须通过ParamArray这个关键字来定义,其一般格式为:Function(ParamArray(),VB程序设计教程,沈美莉马银晓陈孟建编著,39,第三节参数的传递,【例题5.23】编写一个对多个数的累乘和,利用它可以实现对任意多个数的累乘和。(1)主程序段PrivateSubCommand1_Click()Print输出3个参数累乘值Calltotal(2,4,6)Print输出5个参数累乘值Calltotal(2,4,6,8,10)Print输出7个参数累乘值Calltotal(2,4,6,8,10,12,14)EndSub,VB程序设计教程,沈美莉马银晓陈孟建编著,40,第三节参数的传递,(2)total函数段Functiontotal(ParamArraysum()DimsAsSingles=1ForEachxInsums=s*xNextxPrints=;sEndFunction运行该程序后,显示结果如下图所示。,VB程序设计教程,沈美莉马银晓陈孟建编著,41,第三节参数的传递,VB程序设计教程,沈美莉马银晓陈孟建编著,42,第三节参数的传递,六、对象参数对象参数是指使用对象作为过程的参数进行传递,例如,窗体或控件可以作为通用过程的参数。用对象作为参数与一般数据类型作为参数的过程在定义和调用时没有什么区别,所以,在某些情况下,使用对象参数可以简化程序设计,提高效率。对象作为过程的参数的格式为:Function()ExitFunctionEndFunction,VB程序设计教程,沈美莉马银晓陈孟建编著,43,第三节参数的传递,1窗体参数所谓窗体参数指的是以窗体为对象实现数据参数的传递。2控件参数所谓控件参数指的是以控件为对象实现数据参数的传递,与窗体参数一样,在使用时,可在一个通用过程中对控件类型的形参设置所需要的属性,然后,再用不同的控件调用此过程。在用控件作为参数调用时,作为实参的控件必须具有通用过程中所用到的形参控件的属性,否则,系统将会按出错处理。为了判断某个控件是不是属于某种控件类型,VisualBasic专门提供了一个语句用来进行检测,其语句的格式如下:TypeofIs该语句的功能是,测试是否属于。在使用中Typeof语句通常放在通用过程中,为控件参数(即,形参)的名字,是代表各种不同控件的关键字,这些关键字如下表所示。,VB程序设计教程,沈美莉马银晓陈孟建编著,44,第三节参数的传递,VB程序设计教程,沈美莉马银晓陈孟建编著,45,第三节参数的传递,七、Shell函数通过前面的介绍,我们已经知道VisualBasic语言可以调用过程或函数,这些过程或函数可以由用户根据情况进行自定义,也可以是系统事先定义好的那么过程或函数。其实,VisualBasic语言不但可以调用过程或函数,而且还能调用各种应用程序,凡是能在DOS或Windows环境下运行的应用程序,基本上都可以使用通过Shell函数功能来实现。1.Shell函数格式Shell(,)例如:Shell(“C:programFilesMicrosoftOfficeOfficeExcel.exe”,1)Shell(“C:windowswinword.exe”,3),VB程序设计教程,沈美莉马银晓陈孟建编著,46,第三节参数的传递,2.Shell函数功能Shell函数的功能是调用一个应用程序,返回一个Variant(Double)。如果成功的话,则代表这个程序的任务标识ID号,如果不成功的话,则返回一个0。格式中的是要执行的应用程序的文件名,该文件名包括盘符、路径,它必须是一个可执行的文件,其扩展名为:.Com、.Exe、.Bat、.Pif等。要注意的是Shell函数是采用异步的方式来执行其他应用程序的。也就是说,用Shell启动的程序可能还没有执行完,就已经开始执行shell函数后面的语句了。格式中的是执行应用程序时应用程序所据有窗口的大小,VisualBasic提供了以下几种窗口类型,见下表所示。,VB程序设计教程,沈美莉马银晓陈孟建编著,47,第三节参数的传递,返回本章首页,VB程序设计教程,沈美莉马银晓陈孟建编著,48,第四节可变参数与对象参数,一、可选参数1什么是可选参数所谓可选参数是指在函数调用过程中,可以指定一个或多个参数作为可选参数。在定义带可选参数的过程时,必须在参数表中使用Optional关键字,并在过程体中通过IsMissing函数测试调用时是否传递了可选参数,以便在过程体中针对不同的参数个数加以处理。2使用可选参数时的注意事项(1)可选参数必须放在参数表的最后,并且该参数的数据类型必须是变体类型,即是Variant类型。(2)在编写过程代码时,通过IsMissing函数测试实际调用时是否传递了这个可选参数,该函数的返回值是一个逻辑值,即当该值为True时,表示调用时没有传递这个可选参数,否则,当该值为False时,表示调用时已经传递了这个可选参数。(3)IsMissing函数有一个参数,这个参数就是Optional所指定的形参的名字。,VB程序设计教程,沈美莉马银晓陈孟建编著,49,第四节可变参数与对象参数,二、可变参数所谓可变参数是指在函数调用过程中,可以定义接受任意个数的参数的传递。使用这个可变参数的过程时,必须通过ParamArray这个关键字来定义,其一般格式为:Function(ParamArray()习题:书中例题,VB程序设计教程,沈美莉马银晓陈孟建编著,50,第四节可变参数与对象参数,三、对象参数对象参数是指使用对象作为过程的参数进行传递,例如,窗体或控件可以作为通用过程的参数。用对象作为参数与一般数据类型作为参数的过程在定义和调用时没有什么区别,所以,在某些情况下,使用对象参数可以简化程序设计,提高效率。对象作为过程的参数的格式为:Function()ExitFunctionEndFunction,VB程序设计教程,沈美莉马银晓陈孟建编著,51,第四节可变
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业文化建设方案落地执行与持续优化版
- 绿色建筑结构设计专项方案
- 三年级语文绘本教学活动方案
- 山东省滕州市盖村中学2026届高一化学第一学期期中统考模拟试题含解析
- 2026届浙江省慈溪市高一化学第一学期期中质量跟踪监视模拟试题含解析
- 2026届河北省邢台市桥东区邢台二中高一化学第一学期期中学业水平测试模拟试题含解析
- 陕西省汉中市部分学校2026届高三上化学期中复习检测模拟试题含解析
- 2026届浙江省温州九校高二化学第一学期期末质量检测模拟试题含答案
- 大型枢纽客流智能疏导方案研究
- 浙江省丽水地区四校 2108-2026届化学高二第一学期期末联考模拟试题含答案
- 海南医院面试题目及答案
- 血液内科缺铁性贫血教案
- GB/T 5760-2025塑料离子交换树脂氢氧型阴离子交换树脂交换容量的测定
- 2025-2026学年山东师范大学附中高三上学期10月段考地理试题及答案
- 合规经理岗位常见面试题及答案
- 磁共振安全注意事项课件
- 2025年外事办公室韩语翻译笔试bi备
- DLT 5285-2018 输变电工程架空导线(800mm以下)及地线液压压接工艺规程
- 患者身份识别制度质量考核标准
- PSP691U备用电源自投装置(南自)
- 2型糖尿病伴多并发症临床路径
评论
0/150
提交评论