版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、在a、1、8章子程序和函数、8.1子程序的概要VB5.0/6.0中,除了系统提供的内部函数进程和事件进程之外,用户还可以使用, 可以自定义以下四个进程: “Sub”保留字开始的子进程“Function”保留字开始的函数进程“Property”保留字开始的属性进程“Event”保留字开始的事件进程,a、2、 事件过程和通用过程8.2.1事件过程(1)表单事件的语法Private Sub Form_事件名称(参数列表) End Sub (2)控件事件的语法Private Sub End Sub,8.2 Sub过程3,子过程的定义形式为Public|PrivateStatic Sub子过程名称(形式
2、参照表 ) Exit Sub End Sub,8.2.2 可以从表格参与获得传递的结果,而不是返回值,并且在调用时返回多个值。a、4、(2)形式参数列表:形式参数通常简称为“形式参数”,仅表示形式参数的类型、个数、位置,定义时没有值,仅在调用过程的情况下,在结合虚实参数后得到相应的值。 (3)流程没有形式参数,但括号不能省略。 (4)参数的定义格式: ByVal|ByRef变量名称 () ,ByVal表示调用此过程时参数以值传递的默认值或ByRef表示调用过程时参数为参数示例8 .创建一个交换一个整数变量值的子过程。 私有子交换(x as integer,yassainteger ) dimt
3、empasintegertemp=x : x=y : y=temp终端子,a,5, 8.2.3子过程的建立是在“工具”菜单的“添加过程”命令中显示“添加进程”对话框(参见图6.1 ),其中显示了进程类型(子进程、函数、属性、事件)和范围(公共、私有例如:公共子系统()结束子系统,a, 6 8.2.4过程的调用1子过程的调用子过程名称参数列表或Call子过程名称(参数列表) 2功能过程的调用变量名称=功能过程名称(参数列表 ) (2)调用时将实际参数值传递给对应的波形参数。 其中,当值被传递时(波形参数前面有ByVal的说明),实际参数的值不会根据波形参数的值而变化。 地址传递时的实际参数值会根
4、据形状参数值的变化而变化。a、7、(3)参数为数组时,参数声明时形式参加实体必须省略维,但括号不可省略。 (4)调用子过程的形式有两种,使用Call关键字时,用括号括住实际的参加,否则,用“、”分隔实际的参加。 示例:在上面定义的调用Sawp子过程的格式是Swap a,b调用Swap a,b )、a,8,专用子cmdok ()调用Swap a,b) Swap a,b结束子, private sub swap (x % ) y % ) dim temp=x x=y y=temp end sub,进程调用的执行进程:a,9,8.3 Function进程, Visual Basic函数分为内部函数和
5、外部函数,外部函数是用户根据需要用Function关键字定义的函数过程,与子过程不同的是函数过程返回值。8.3.1函数过程(函数过程)的定义,public|privatestatic函数名称()As函数体函数名称=返回值 Exit Function 函数名称=返回值结束函数,a,a 但是,名称不能与系统内部函数或其他通用子过程相同,也不能与预定义的全局变量或本模块的模块级变量相同。 (2)函数中,函数名称可以用作变量,函数的返回值是通过对函数名称的代入语句来实现的,在函数的过程中至少代入一次函数名称。(3)AS类型:指定函数的返回值的类型,省略后返回变型的值(Variant )。 (4)Exi
6、t Function :表示结束函数过程,并总是与选择结构(If或Select Case语句)结合,在满足一定条件的情况下结束函数过程。 (5)波形参数列表:波形参数的定义和子程序完全相同。 例6.2,a,11,8.3.2函数的调用,调用形式为函数名(实际参数列表)说明:调用时实际参数和形状参数的数据类型、顺序、个数必须一致。 函数调用仅显示在表达式中,具有计算函数返回值的功能。a,12,8.4进程的范围,Public|Private Sub子进程名(形式参数列表) . End Sub,概念,通用子进程和函数进程可以写入表格模块,也可以写入标准模块,定义时按键、a、13、1、表单/模块级进程:
7、添加私有关键字的进程仅由定义的表单或模块中的进程调用。 2 .全局级进程:添加应用程序的所有表单和所有标准模块进程调用的公共关键字(或默认)的进程。 流程由、和流程的角色范围划分,模块级流程的全局级流程在用例7.1中说明了流程的角色区域,并总结了a、14、摘要流程的定义和角色区域(教材Pg.163 )、a、15、 为了在Visual Basic中的不同模块(进程)之间传输数据,每个进程都使用全局变量来共享数据,全局变量有两种方式:通过进程调用实现实际参与的合并。8.5.1形式参数和实际参数、1、形式参数是在定义公共过程时出现在Sub或Function语句中变量名称后面的括号内的数字,用来接收传
8、递给子过程的数据,波形参数表中的每个变量都是坎、a,16,2,实际参数实际参数是在调用Sub或Function过程时,起到向Sub或Function过程及其对应的波形参数变量传递数据(数值或地址)的子实体引用可以由常数、表达式、有效变量名称和数组名称(a () )组成,实体引用表中的每个参数用逗号分隔。8.5.2参数的传递(虚实耦合)、参数的传递由主调过程的实参(调用时已经确定了值和内存地址的参数)传递给被调过程的形参,参数的传递有两种方式:值传递、地址传递。 形参前加“ByVal”关键字是通过值传递的,缺省或加“ByRef”关键字是通过地址传递的。a、17,地址和值的地址:波形参数得到实际参
9、数的地址,在波形参数的值变化的同时,实际参数的值也变化。 传递值:波形参数得到实际参数的值,波形参数的值的变更不影响实际参数的值。 子扫描2 (x %,y % ) dim temp=x : x=y : y=temp结束子,子扫描1 (byval x % byvaly % ) dim temp=x : x=y : y=temp e privatesubcmdok _ click () a %=10: b %=2033 swap 1a,b 值printa1=; a, B1=; ba=10: b=2033 360交换2 a,b地址打印 a2=; a, B2= b end sub,程序调用的执行过程:
10、a,19,值传递的执行过程:地址传递数据的执行过程,a,20, 数据传输的若干说明:1.参数的数据类型2 .值传输参数形式参数是实际参数的副本3 .地址传输参数形式参数形式参数公用存储器单元4 .在子程序中执行一系列操作的函数过程,实数参数是对于或表达式,返回一个值,注意,即使在定义时使用值传递或地址传递,常数或表达式的计算值也会通过值传递传递给形状参数。a、21、8.6高级用法(以数组为参数),Visual Basic可将数组作为实际参考传递给过程。 数组作为参数以地址传输方式传输。传输数组时,除了遵守参数传输的一般规则之外,1 .将数组的所有元素传输到一个进程时,请将数组名称分别写入到形式
11、参照列表中,省略数组的上下边界,但不能省略括号。 privatesubsort (a () as single )在end sub中,表单参数“a ()”是数组。a,22,2 .被调用的进程通过Lbound函数和Ubound函数可以决定实际参数数组的上下界。 3 .使用数组作为形状参数时,对应的实际参数也必须是数组,并且类型必须匹配。 4 .实际参考与形式参考的结合按地址传递,形式参数组和实际参考阵列共享存储器单元。 例如,如果定义了实际参数数组b(1 to 8 )并指派了值,则可以省略Sort b ()或Call Sort(b () )实际参数数组后面的括号,但为了便于阅读,可以省略调用So
12、rt ()函数过程的格式、a、23、调用时形参数群a和实际参数群b虚实地结合,共享存储单元。 因此,在Sort ()的过程中改变数组a的各元素的值相当于改变实际参数数组b的对应元素的值,在调用结束后,波形参数组a成为未定义。 b (1) b (2) b (3) b (4) b (5) b (6) b (7) b (8) a (1) a (2) a (3) a (5) a (6) a (7) a (8)参数在排列的情况下为虚实耦合图像,例6.7前章例5.3的排序处理器、a,24,补充例题:写出判断整数是否为素数的函数的过程。 如果给定的整数是素数,则返回逻辑值True,否则返回False,pri
13、vatefunctionprime (ncaseinteger ) asbooleandimk %,是as boolean yes=true for k=2to n 2如何将ifmo dk=0then yes=false : exitfornextkpprime=yes代入函数名称,并作为函数的返回值End Function调用函数? 使用此函数验证哥德尔巴赫的预期。a,25,私有子form _ click () dim n %,n1%,n2% n=val (输入大于 6的正整数 ) forn1=3ton 第2步n2n1将n2=n-n1从3中分解,如果n2n1和n2都是素数,则打印输出ifpr
14、ime(n1)和prime(n2)then打印n=n 1 n2exit for是循环End if Next n1 End Sub,a, 如果结束26,则fori=1ton-1p=ifj=i1 Toni fa (p ) a (j ) thenp=jnextjintemp=a (I ) a (I )=a (p ) a (p )=temp nexti,排序(升序)的VB程序的选择: 补充例题2 :排序子进程,a,27,私有subsort (a () as single ) dimi %,j%,p%,n%, temp n=ubound (a ) fori=1ton-1p=iforj=i1 Toni f
15、a (p ) a (j ) thenp=jnextjintemp=a (I ) a (I )=a (p ) a (p )=tempnextisendsub,a, 28.7过程的嵌套和递归调用、8.7.1过程的嵌套、过程中调用子过程、子过程中调用另一个子过程的程序结构称为过程的嵌套。 过程的嵌套调用执行过程如下图所示:a,29,8.7.2过程的递归调用用自己的结构描述自己,称为递归。 例如,阶乘定义:在Visual Basic中,可以在Sub和Function过程定义中调用递归Sub和递归Function函数。 例8.8层乘fac(n)=n! 的递归函数,a,30,专用函数(nasinteger ) ascintegerifn=1then fac=1else fac=n * fac (n-1 ) endifendfunctionprivatesubform _ fac(4) End Sub,程序递归过程:a,31,说明:递归处理一般是在堆栈中实现的,有递归推理和回归两个过程。 递归过程:每次调用自己时,将当前参数(形参、局部变量、返回地址等)推入堆栈,直到递归结束条件成立为止
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年江西省贵溪市初三语文试题二模冲刺试题(八)含解析
- 黑龙江省哈尔滨市实验校2026届初三下学期语文试题2月16日周练试题含解析
- 爱护动物践行承诺书8篇
- 生物制药生产工艺与质量控制指南
- 销售代理渠道拓展沟通函(7篇范文)
- 团队协作项目管理流程和职责分工文档模板
- 企业年度目标完成承诺书范例范文3篇
- 企业内训课程设计流程及执行标准
- 物资紧缺调配供应商管理团队预案
- 企业多项目统筹调度方案工具书
- AQ/T 1119-2023 煤矿井下人员定位系统通 用技术条件(正式版)
- 信纸(A4横条直接打印版)
- 2024年厦门航空有限公司招聘笔试参考题库含答案解析
- 林城镇卫生院安全生产制度
- 南京航空航天大学“天目启航”学生自由探索项目申请书
- EIM Starter Unit 6 This is delicious单元知识听写单
- 陕西铜川声威特种水泥有限公司2500t-d新型干法特种水泥熟料技改生产线项目环评报告
- GB/T 4062-2013三氧化二锑
- GB/T 26746-2011矿物棉喷涂绝热层
- GB 30616-2020食品安全国家标准食品用香精
- GA/T 1343-2016防暴升降式阻车路障
评论
0/150
提交评论