版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第 7 7 章章 过程过程教学要求 掌握VB的两种过程:事件过程和通用过程 掌握Sub过程的定义 掌握Function过程的定义 掌握过程的调用 掌握参数的传递按值传递和按地址传递 掌握递归算法 掌握变量的作用域 7.1 Sub 7.1 Sub过程过程 7.2 Function 7.2 Function过程过程 7.3 7.3 过程调用过程调用 7.4 7.4 参数的传递参数的传递 7.5 7.5 递归过程递归过程 7.6 7.6 变量的作用域变量的作用域 7.7 7.7 程序示例程序示例 7.8 7.8 创建与设置启动过程创建与设置启动过程教学内容教学内容 基本思想:将一个大的程序按功能分
2、割成一些小模块特点:各模块相对独立、功能单一、结构清晰、接口简单控制了程序设计的复杂性避免程序开发的重复劳动易于维护和功能扩充模块化程序设计模块化程序设计cnm=m!(n-m)!n!Private Sub Command1_Click() n = Val(Text1.Text) m = Val(Text2.Text) k = n t = 1 For i = 1 To k t = t * i Next i s = t k = m t = 1 For i = 1 To k t = t * i Next i s = s / t k = n - m t = 1 For i = 1 To k t = t
3、 * i Next i s = s / t Text3.Text = Str(s)End Sub共同代码共同代码计算计算k k!能不能简化?能不能简化?计算:计算:模块化程序设计举例模块化程序设计举例函数定义函数定义计算计算k k!Private Sub Command1_Click() Dim m As Integer, n As Integer Dim s As Long n = Val(Text1.Text) m = Val(Text2.Text) s = fact(n) / (fact(m) * fact(n - m) Text3.Text = Str(s)End SubPrivate
4、 Function fact(k As Integer) As Long Dim i As Integer fact = 1 For i = 1 To k fact = fact * i Next iEnd Function函数调用(三次)函数调用(三次)使用函数使用函数过程的分类过程的分类事件过程事件过程Sub过程过程通用过程通用过程子程序过程子程序过程Sub函数过程函数过程Function7.1 Sub7.1 Sub过程过程-事件过程事件过程1. 概念:概念:由控件对象通过事件触发所执行的一系列代码。由控件对象通过事件触发所执行的一系列代码。2. 说明:说明: 事件过程之前一般都有事件过程
5、之前一般都有Private Sub,表明事件过程是局部,表明事件过程是局部的,只在本窗体中有效的,只在本窗体中有效。 事件过程是否有参数由系统自动添加,不能人为改动。事件过程是否有参数由系统自动添加,不能人为改动。3. 分类:分类: 窗体事件过程窗体事件过程 控件事件过程控件事件过程Private Sub Form_事件名(参数列表) 局部变量和常数声明 语句块End SubPrivate Sub 控件名_事件名(参数列表) 局部变量和常数声明 语句块End Sub窗体的事件过程名窗体的事件过程名中不使用其具体名中不使用其具体名称,而固定用称,而固定用FormForm控件的事件过控件的事件过程
6、名中必须使程名中必须使用其具体名称用其具体名称7.1 Sub7.1 Sub过程过程-事件过程事件过程4. 窗体启动时的窗体启动时的4个相关事件个相关事件 (p.126)Initialize(初始化初始化)事件事件配置窗体,在配置窗体,在Load之前。之前。Load(加载加载)事件事件窗体加载到内存时触发。窗体加载到内存时触发。Activate(激活激活)事件事件成为被激活窗体时触发成为被激活窗体时触发GotFocus(聚焦聚焦)事件事件窗体成为当前焦点时触发窗体成为当前焦点时触发,一般是窗体一般是窗体上的控件成为焦点,而不是窗体。上的控件成为焦点,而不是窗体。执行次序:执行次序: Initia
7、lize Load Activate GotfocusInitialize Load Activate Gotfocus注意:注意:窗体的窗体的InitializeInitialize、LoadLoad事件发生在窗体被显示之前,其中可放置系统初始化命令,事件发生在窗体被显示之前,其中可放置系统初始化命令,但其中语句有所限制;但其中语句有所限制;窗体加载后,只要不被卸载,就不会再执行窗体加载后,只要不被卸载,就不会再执行InitializeInitialize、LoadLoad事件,但事件,但ActivateActivate事件事件会多次发生;会多次发生;当访问另一窗体上的当访问另一窗体上的“非
8、可视非可视”数据或调用其中定义的全局过程时,只会触发该窗体数据或调用其中定义的全局过程时,只会触发该窗体的的InitializeInitialize事件,而事件,而LoadLoad事件不触发;事件不触发;当访问另一窗体上的当访问另一窗体上的“可视可视”数据时,会同时触发该窗体的数据时,会同时触发该窗体的InitializeInitialize和和LoadLoad事件事件 在以下两种情况下,经常使用自定义过程:在以下两种情况下,经常使用自定义过程:(1)应用程序中出现较)应用程序中出现较频繁频繁处理的部分,仅仅是每次处理的数处理的部分,仅仅是每次处理的数据不同而已;据不同而已;(2)程序中比较复
9、杂的算法,独立出来,增强程序的可读性。)程序中比较复杂的算法,独立出来,增强程序的可读性。 通用过程通用过程的引入使得整个程序的结构更加清晰,模块化更的引入使得整个程序的结构更加清晰,模块化更强。强。7.1 Sub7.1 Sub过程过程通用过程通用过程1. 概念:概念:完成某一特定功能的程序段完成某一特定功能的程序段2. 说明:说明: 必须显式调用方可执行必须显式调用方可执行。3. 分类:分类: 公有过程公有过程 (Public) 私有过程(私有过程(Private)4. 通用Sub过程的定义格式: Private|Public static Sub () End Sub 说明说明 :(1)
10、(1) 以以SubSub开头,开头,End SubEnd Sub结束结束, ,中间是过程体中间是过程体包括变量声明和语句块包括变量声明和语句块;(2) (2) 以以PrivatePrivate为前缀的过程是模块级的,以为前缀的过程是模块级的,以PublicPublic为前缀的过程是应用程序为前缀的过程是应用程序级的,级的,缺省默认是缺省默认是PublicPublic;(3) Static (3) Static 选项说明过程中的局部变量是静态变量;选项说明过程中的局部变量是静态变量;(4) (4) 过程名的命名规则和变量名相同,在同一个模块中,过程名必须是唯一过程名的命名规则和变量名相同,在同一
11、个模块中,过程名必须是唯一的;的;(5) (5) 参数列表中的参数称为形式参数,可以没有,但无参数时圆括号不能省参数列表中的参数称为形式参数,可以没有,但无参数时圆括号不能省略;有多个参数时,参数之间用逗号间隔;略;有多个参数时,参数之间用逗号间隔;(6 6)参数说明格式:)参数说明格式: OptionalByVal|ByRefOptionalByVal|ByRef ()()As As 其中:其中: a) a) 若参数是数组,则在变量名后面加一对圆括号,但无维界定义若参数是数组,则在变量名后面加一对圆括号,但无维界定义; ; b) ByVal b) ByVal:指明参数传递方式是传值;:指明参
12、数传递方式是传值; c) ByRefc) ByRef:指明参数传递方式是传地址,:指明参数传递方式是传地址,为缺省值为缺省值; d) d) 若参数是字符型的,必须是不定长字符串若参数是字符型的,必须是不定长字符串; ; e) Optional e) Optional:参数是可选的,必须定义在必选参数后面。:参数是可选的,必须定义在必选参数后面。(7 7) 当过程调用结束,即执行到当过程调用结束,即执行到End SubEnd Sub语句,系统自动返回调用程序的调用语句,系统自动返回调用程序的调用语句处,语句处,执行调用语句的下一条语句执行调用语句的下一条语句;(8 8)在过程体中不能再定义过程,
13、但可以调用其他过程;在过程体中不能再定义过程,但可以调用其他过程;(9 9)可用)可用Exit SubExit Sub语句提前退出过程调用,返回调用语句。语句提前退出过程调用,返回调用语句。例例: Private Sub Exchange(x As Integer,y As Integer) Dim Temp As Integer Temp=x : x=y : y=Temp End Sub 该通用过程实现交换功能,包含两个参数,均是该通用过程实现交换功能,包含两个参数,均是ByRef形式的参数。形式的参数。调用语句(调用语句(Call语句)语句)下一条语句下一条语句Sub过程体过程体End S
14、ub主调程序主调程序被调过程被调过程主调程序主调程序被调过程被调过程5. 建立通用建立通用Sub过程过程方法一:方法一:在在“代码编辑窗口代码编辑窗口”的的“通用通用”中自行输入;中自行输入; 方法二:方法二:进入代码编辑器窗口,执行进入代码编辑器窗口,执行“工具工具”菜单的菜单的“添加过程添加过程”,在在“添加过程添加过程”对话框中输入定义过程的名称、类型和范围后单击对话框中输入定义过程的名称、类型和范围后单击“确定确定”按钮,系统会自动在代码窗口添加自定义过程的框架(过程头和过程结束语按钮,系统会自动在代码窗口添加自定义过程的框架(过程头和过程结束语句)。句)。6. Sub过程调用过程调用
15、格式一格式一:Call ()格式二格式二: 功能功能:对已定义的过程进行调用。对已定义的过程进行调用。说明说明:(1)调用的过程必须是已经定义的,否则系统会出现)调用的过程必须是已经定义的,否则系统会出现“子程序或函数未定子程序或函数未定义义”的信息提示;的信息提示;(2)实在参数可以是常量、变量或表达式、数组;)实在参数可以是常量、变量或表达式、数组;(3)实在参数的数目及类型要和定义时必选参数保持一致,否则系统会出)实在参数的数目及类型要和定义时必选参数保持一致,否则系统会出现现“参数不可选参数不可选”的信息提示,参数之间用逗号间隔;的信息提示,参数之间用逗号间隔;(4)若子程序没有参数,
16、则格式一中的括号可以省略;)若子程序没有参数,则格式一中的括号可以省略;(5)格式一和格式二的)格式一和格式二的区别区别在于:格式二的参数表无须括号,而是和过程在于:格式二的参数表无须括号,而是和过程名之间用空格隔开名之间用空格隔开;举例举例1:将键盘输入的三个数按从小到大的顺序排列输出。将键盘输入的三个数按从小到大的顺序排列输出。 程序一程序一:Private Sub Command1_Click() Dim a As Integer, b As Integer, c As Integer Dim t As Integer a = Text1.Text: b = Text2.Text: c
17、= Text3.Text If a b Then t = a a = b b = t End If If a c Then t = a a = c c = t End If If b c Then t = b b = c c = t End If Text1.Text = a: Text2.Text = b: Text3.Text = cEnd Sub程序二程序二:定义子程序定义子程序Change实现交换功能,该子程序定义了两个为实现交换功能,该子程序定义了两个为ByRef方方式的必选参数,来传递交换功能实现前的原始数据和返回交换功能实现后的结式的必选参数,来传递交换功能实现前的原始数据和返回
18、交换功能实现后的结果数据,至于交换过程中需要的临时变量果数据,至于交换过程中需要的临时变量Temp则因没有保留的价值无须定义为则因没有保留的价值无须定义为参数,仅在子程序体中定义。子程序即参数,仅在子程序体中定义。子程序即Sub过程的使用不仅可以缩短程序的长过程的使用不仅可以缩短程序的长度,还能够使程序的结构更加清楚。度,还能够使程序的结构更加清楚。Private Sub Command1_Click() Dim a As Integer, b As Integer Dim c As Integer a = Text1: b = Text2: c = Text3 If a b Then Cal
19、l Change(a, b) If a c Then Call Change(a, c) If b c Then Call Change(b, c) Text1 = a: Text2= b: Text3= cEnd SubPrivate Sub Change(x1 As Integer, x2 As Integer) Dim Temp As Integer Temp = x1 x1 = x2 x2 = TempEnd SubCall Change(a,b)语句语句也可以用也可以用Change a, b来替代。来替代。Private Sub value(a() As Integer, min A
20、s Integer) Dim i As Integer min = a(1) For i = 2 To UBound(a)If a(i) min Then min = a(i) Next iEnd Sub 举例举例2:2:定义一个通用过程用以求一维数组中的最小值定义一个通用过程用以求一维数组中的最小值7 . 2 Function 过程过程 Function过程的特点是返回一个值,因此我们通常也称之过程的特点是返回一个值,因此我们通常也称之为为自定义函数自定义函数。1. Function过程的定义过程的定义 格式格式: Private|Public Function (参数列表参数列表) As
21、End Function 说明说明: (1 1) 以以FunctionFunction开头,以开头,以End FunctionEnd Function结束,中间是函数体;结束,中间是函数体;(2 2) 函数名命名规则、参数列表的表示都和函数名命名规则、参数列表的表示都和SubSub过程相同;过程相同;(3 3) As As 数据类型数据类型:函数过程将由函数名返回一个值,值的类型由:函数过程将由函数名返回一个值,值的类型由As As 数据类型数据类型 定义;定义; (4 4) 函数体中一定要有对函数名赋值的语句函数体中一定要有对函数名赋值的语句函数名函数名= =表达式表达式,否则返回相应,否则
22、返回相应类型的初值;类型的初值; (5 5) 函数体内可有函数体内可有Exit FunctionExit Function语句语句无条件退出函数过程,返回主程序。无条件退出函数过程,返回主程序。(6 6) FunctionFunction过程不能嵌套定义,但可嵌套调用。过程不能嵌套定义,但可嵌套调用。Private Function f(Byval x As Integer) As Integer f = 3*x3-2*x2+6*x-1End Function1623)(23xxxxf举例举例1:定义函数:定义函数:函数名函数名=表达式表达式举例举例2:编写一个求编写一个求n!的函数。的函数。
23、(p131)Private Function Fact(Byval N As Integer) As Long Dim K As Integer Fact=1 If n=0 Or n=1 Then Exit Function Else For K=1 To N Fact=Fact*K Next K End IfEnd Function函数名函数名=表达式表达式函数类型函数类型传值的参数传值的参数函数类型函数类型2. 调用调用 Function 过程过程 格式格式:(实在参数表实在参数表) 功能功能:返回一个函数值。返回一个函数值。 说明说明:(1)一般情况下,函数的调用出现在赋值语句中,并且在
24、赋值号)一般情况下,函数的调用出现在赋值语句中,并且在赋值号的右侧;的右侧;(2)若函数没有参数,函数名后的)若函数没有参数,函数名后的括号不能省略括号不能省略;(3)虽然)虽然VB允许象调用允许象调用Sub过程那样调用过程那样调用Function过程,但这样过程,但这样调用时系统不返回函数值,建议大家不要使用这种调用方法。调用时系统不返回函数值,建议大家不要使用这种调用方法。Call fact(x) Fact x 这两种方法均放弃函数的返回值这两种方法均放弃函数的返回值例如:例如:Private Sub Form_Click() Dim S As Long, i As Integer For
25、 i = 1 To 10 Next i Print ”S=; SEnd SubPrivate Function Fact(n As Integer) As Long Dim i As Integer Fact = 1 For i = 1 To n Fact = Fact * i Next iEnd Function函数名函数名=表达式表达式函数调用函数调用: S = S + Fact(i)举例举例3: 3: S=1!+2!+10!Private Function min( a( ) As Integer ) As Integer Dim i As Integer min = a(1) For
26、i = 2 To UBound(a)If a(i) min Then min = a(i) Next iEnd Sub举例举例4:4:用函数实现求一维数组中的最小值用函数实现求一维数组中的最小值( (对比前例对比前例SubSub)Private Sub value(a() As Integer, min As Integer) Dim i As Integer min = a(1) For i = 2 To UBound(a)If a(i) min Then min = a(i) Next iEnd Sub 函数名函数名=表达式表达式函数类型函数类型Private Function Prime
27、(N As Integer) As BooleanDim i As IntegerPrime = False For i = 2 To N-1 If N Mod i = 0 Then Exit ForNext i If i =N then Prime = TrueEnd Function 函数名函数名=表达式表达式可省略可省略, ,因因PrimePrime的初始值就是的初始值就是falsefalse举例举例5:5:定义函数用以判断一个数是否是素数定义函数用以判断一个数是否是素数Private Function Gcd(ByVal A As Integer, ByVal B As Integer) As Integer Dim R As Integer R = A Mod B Do While R 0 A = B B = R R = A Mod B Loop Gcd =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年城市规划实施实操题目
- 2026年X年级X科高效复习巩固题集涵盖中小学阶段
- 2026年油画艺术创作与鉴赏能力认证题集
- 2026年汽车维修与保养知识考试题库
- 2026年风险管理模型构建与评估考试
- 学校食堂环境消毒制度
- 2026年智能设备安全审计与评估试题
- 2026年汽车构造原理及维修保养知识题
- 2026年医疗岗候选人医疗设备采购合同评估测试
- 2026年企业经营管理决策策略案例分析试题
- 2025年秋季散学典礼校长讲话:以四马精神赴新程携温暖期许启寒假
- 2026贵州省黔晟国有资产经营有限责任公司面向社会招聘中层管理人员2人备考考试试题及答案解析
- 2025年营养师考试练习题及答案
- 2026中国电信四川公用信息产业有限责任公司社会成熟人才招聘备考题库及答案详解一套
- 通信工程冬季施工安全培训
- 中医外科乳房疾病诊疗规范诊疗指南2023版
- 压实沥青混合料密度 表干法 自动计算
- 田口三次设计
- 《我的戒烟》阅读答案
- GB/T 7442-2007角向磨光机
- GB/T 324-2008焊缝符号表示法
评论
0/150
提交评论