第六章过程(8学时) 、教学内容 本章讨论VB6.0中Sub子过程和 Function过程的定义与调用以及过程调用 中数据传递的方式 二、目的要求 通过对本章的学习,使学生掌握子过程(Sub过程的定义、调用):掌握函数 过程( Function过程)的定义、调用:了解值传递、地址传递的传递规则。 三、教学重点与难点 教学重点:1.Sub过程及 Function过程的定义与调用 2.过程调用中数据的传递 教学难点:过程调用中数据的传递 四、教学方法 课堂教学为主。适当提问,加深学生对概念的理解 6.1Sub过程(2学时) 、教学内容 本节介绍事件过程和通用过程的区别,通用过程的定义以及通用过程的调 用 、目的要求 了解事件过程和通用过程的区别,掌握通用过程的定义以及通用过程的调 用 三、教学重点与难点 教学重点:通用过程的定义以及通用过程的调用。 教学难点:通用过程的调用 四、教学方法
第六章 过 程(8 学时) 一、教学内容 本章讨论 VB6.0 中 Sub 子过程和 Function 过程的定义与调用以及过程调用 中数据传递的方式。 二、目的要求 通过对本章的学习,使学生掌握子过程(Sub 过程的定义、调用);掌握函数 过程(Function 过程)的定义、调用;了解值传递、地址传递的传递规则。 三、教学重点与难点 教学重点:1.Sub 过程及 Function 过程的定义与调用 2.过程调用中数据的传递。 教学难点:过程调用中数据的传递。 四、教学方法 课堂教学为主。适当提问,加深学生对概念的理解。 6.1 Sub 过程 (2 学时) 一、教学内容 本节介绍事件过程和通用过程的区别,通用过程的定义以及通用过程的调 用。 二、目的要求 了解事件过程和通用过程的区别,掌握通用过程的定义以及通用过程的调 用。 三、教学重点与难点 教学重点:通用过程的定义以及通用过程的调用。 教学难点:通用过程的调用 四、教学方法
课堂教学。 五、教学过程 在ⅦB中,的Sub子过程分为:事件过程和通用过程 6.1.1事件过程 (1)窗体事件的语法 Private sub form事件名(参数列表 End Sub (2)控件事件的语法 Private sub控件名_事件名(参数列表) End sub 6.1.2通用过程(Sub过程)的定义 1.子过程的定义形式如下: [ Public Private][ Static]Sub子过程名([形参表]) [Exit Subl End sub 说明: (1)子过程名:命名规则与变量名规则相同。子过程名不返回值,而是通 过形参与实参的传递得到结果,调用时可返回多个值
课堂教学。 五、教学过程 在 VB 中,的 Sub 子过程分为:事件过程和通用过程 6.1.1 事件过程 (1)窗体事件的语法 Private Sub Form_事件名(参数列表) <语句组> End Sub (2)控件事件的语法 Private Sub 控件名_事件名(参数列表) <语句组> End Sub 6.1.2 通用过程(Sub 过程)的定义 1.子过程的定义形式如下: [Public|Private][Static] Sub 子过程名([形参表]) <语句组> [Exit Sub] <语句组> End Sub 说明: (1)子过程名:命名规则与变量名规则相同。子过程名不返回值,而是通 过形参与实参的传递得到结果,调用时可返回多个值
(2)形式参数列表:形式参数通常简称“形参”,仅表示形参的类型、个 数、位置,定义时是无值的,只有在过程被调用时,虚实参结合后才获得相应的 值 (3)过程可以无形式参数,但括号不能省 (4)参数的定义形式 ByVal| ByRef]变量名[()][As类型][,…], Byval表示当该过程被调用时,参数是按值传递的:缺省或 By Ref表示当 该过程被调用时,参数是按地址传递的。 提问1:如何编写一个交换两个整型变量值的子过程。 2.通用过程的建立 6.1.3过程的调用 1、用Call语句调用Sub过程 格式:Ca11子过程名(参数列表) 2、把过程名作为一个语句来使用 格式:子过程名[参数列表] 说明: (1)参数列表称为实参或实元,它必须与形参保持个数相同,位置与类型 一对应 (2)调用时把实参值传递给对应的形参。其中值传递(形参前有 ByVal说明) 时实参的值不随形参的值变化而改变。而地址传递时实参的值随形参值的改变而 改变。 (3)当参数是数组时,形参与实参在参数声明时应省略其维数,但括号不能 (4)调用子过程的形式有两种,用Ca11关键字时,实参必须加圆括号括起, 反之则实参之间用“,”分隔。 提问2:如何调用提问1写出的过程? 七、作业P154习题6.1、6.10
(2)形式参数列表:形式参数通常简称“形参”,仅表示形参的类型、个 数、位置,定义时是无值的,只有在过程被调用时,虚实参结合后才获得相应的 值。 (3)过程可以无形式参数,但括号不能省。 (4)参数的定义形式: [ByVal|ByRef]变量名[( )][As 类型][,…], ByVal 表示当该过程被调用时,参数是按值传递的;缺省或 ByRef 表示当 该过程被调用时,参数是按地址传递的。 提问 1:如何编写一个交换两个整型变量值的子过程。 2.通用过程的建立 6.1.3 过程的调用 1、用 Call 语句调用 Sub 过程 格式:Call 子过程名(参数列表) 2、把过程名作为一个语句来使用 格式:子过程名 [参数列表] 说明: (1)参数列表称为实参或实元,它必须与形参保持个数相同,位置与类型一 一对应。 (2)调用时把实参值传递给对应的形参。其中值传递(形参前有 ByVal 说明) 时实参的值不随形参的值变化而改变。而地址传递时实参的值随形参值的改变而 改变。 (3)当参数是数组时,形参与实参在参数声明时应省略其维数,但括号不能 省。 (4)调用子过程的形式有两种,用 Call 关键字时,实参必须加圆括号括起, 反之则实参之间用“,”分隔。 提问 2:如何调用提问 1 写出的过程? 七、作业 P154 习题 6.1、6.10
6.2 Function过程(2学时) 、教学内容:本节将介绍 Function过程的定义以及调用过程 二、教学重点: Function过程的定义以及调用过程 、教学难点: Function过程的调用过程 四、教学方法ε课堂教学为主,并适当提问、收集学生学习情况。 五、教学要求:掌握 Function过程的定义以及调用过程 六、教学过程: Visual basic函数分为内部函数和外部函数,外部函数是用户根据需要用 Function关键字定义的函数过程,与子过程不同的是函数过程将返回一个值。 6.2.1函数过程( Function过程)的定义 [ PubliclPrivate][ Static] Function函数名([<参数列表])[As<类型》] <局部变量或常数定义 <语句块〉 [函数名=返回值] [Exit Function <语句块〉 [函数名=返回值 End function 说明: (1)函数名:命名规则与变量名规则相同。 (2)在函数体内,函数名可以当变量使用,函数的返回值就是通过对函数名 的赋值语句来实现的,在函数过程中至少要对函数名赋值一次。 (3)AS类型:是指函数返回值的类型,若省略,则函数返回变体类型值 (Variant)
6.2 Function 过程 (2 学时) 一、教学内容:本节将介绍 Function 过程的定义以及调用过程 二、教学重点:Function 过程的定义以及调用过程 三、教学难点:Function 过程的调用过程 四、教学方法:课堂教学为主,并适当提问、收集学生学习情况。 五、教学要求:掌握 Function 过程的定义以及调用过程 六、教学过程: Visual Basic 函数分为内部函数和外部函数,外部函数是用户根据需要用 Function 关键字定义的函数过程,与子过程不同的是函数过程将返回一个值 。 6.2.1 函数过程(Function 过程)的定义 [Public|Private][Static]Function 函数名([])[As] [函数名=返回值] [Exit Function] [函数名=返回值] End Function 说明: (1)函数名:命名规则与变量名规则相同。 (2)在函数体内,函数名可以当变量使用,函数的返回值就是通过对函数名 的赋值语句来实现的,在函数过程中至少要对函数名赋值一次。 (3)AS 类型:是指函数返回值的类型,若省略,则函数返回变体类型值 (Variant)
(4) Exit function:表示退出函数过程,常常是与选择结构(If或 Select Case语句)联用,即当满足一定条件时,退出函数过程 (5)形参数列表:形参的定义与子过程完全相同。 提问1:如何编写一个编写一个求圆面积的函数? 6.2.2函数的调用 调用形式如下: 函数名(实参列表 说明 在调用时实参和形参的数据类型、顺序、个数必须匹配。函数调用只能出现 在表达式中,其功能是求得函数的返回值。 提问2:如何调用求圆面积的函数? 七、作业P154习题6.3-6.6 6.3参数的传递(2学时) 、教学内容:本节简要地介绍了形参与实参,可选参数与可变参数,数组和记 录参数的传递,对象参数的传送,重点讲解了参数的传递方式 二、教学重点:形参与实参、参数的传递方式。 三、教学难点:参数的传递方式 四、教学方法:课堂教学为主,注意结合例子进行讲解 五、教学要求:掌握形参与实参的定义,可选参数与可变参数的定义,数组和记 录参数的传递方式,对象参数的传送方式,尤其是参数的两种传递方式。 六、教学内容 Visual basic中不同模块(过程)之间数据的传递有两种方式: 通过过程调用实参与形参的结合实现; 使用全局变量来实现各过程中共享数据 6.3.1形参与实参
(4)Exit Function:表示退出函数过程,常常是与选择结构(If 或 Select Case 语句)联用,即当满足一定条件时,退出函数过程。 (5)形参数列表:形参的定义与子过程完全相同。 提问 1:如何编写一个编写一个求圆面积的函数? 6.2.2 函数的调用 调用形式如下: 函数名(实参列表) 说明: 在调用时实参和形参的数据类型、顺序、个数必须匹配。函数调用只能出现 在表达式中,其功能是求得函数的返回值。 提问 2:如何调用求圆面积的函数? 七、作业 P154 习题 6.3-6.6 6.3 参数的传递 (2 学时) 一、教学内容:本节简要地介绍了形参与实参,可选参数与可变参数,数组和记 录参数的传递,对象参数的传送,重点讲解了参数的传递方式 二、教学重点:形参与实参、参数的传递方式。 三、教学难点:参数的传递方式。 四、教学方法:课堂教学为主,注意结合例子进行讲解。 五、教学要求:掌握形参与实参的定义,可选参数与可变参数的定义,数组和记 录参数的传递方式,对象参数的传送方式,尤其是参数的两种传递方式。 六、教学内容: Visual Basic 中不同模块(过程)之间数据的传递有两种方式: ➢ 通过过程调用实参与形参的结合实现; ➢ 使用全局变量来实现各过程中共享数据。 6.3.1 形参与实参
1、形式参数 是指在定义通用过程时,出现在Sub或 Function语句中的变量名后面园括 号内的数,是用来接收传送给子过程的数据,形参表中的各个变量之间用逗号分 隔 2、实际参数 实际参数是指在调用Sub或 Function过程时,写入子过程名或函数名后括 号内的参数,其作用是将它们的数据(数值或地址)传送给Sub或 Function过 程与其对应的形参变量。 6.3.2参数传递(虚实结合) 参数传递指主调过程的实参(调用时已有确定值和内存地址的参数)传递给 被调过程的形参,参数的传递有两种方式:按值传递、按地址传递。形参前加 “ ByVal”关键字的是按值传递,缺省或加“ ByRef”关键字的为按地址传递。 传址与传值 传址:形参得到的是实参的地址,当形参值的改变同时也改变实参的值 传值:形参得到的是实参的值,形参值的改变不会影响实参的值 6.3.3数组作过程的参数 Visual basic允许把数组作为实参传送到过程中。数组作参数是通过传地 址方式传送。在传送数组时,除遵守参数传送的一般规则外,还应注意以下几点 1.为了把一个数组的全部元素传送给一个过程,应将数组名分别写入形参 表中,并略去数组的上下界,但括号不能省略 Private Sub Sort(ao As single) End sub 其中形参“a()”即为数组。 2.被调过程可通过 Lbound和 Ubound函数确定实参数组的上、下界 3.当用数组作形参时,对应的实参必须也是数组,且类型一致。 4.实参和形参结合是按地址传递,即形参数组和实参数组共用一段内存单
1、形式参数 是指在定义通用过程时,出现在 Sub 或 Function 语句中的变量名后面园括 号内的数,是用来接收传送给子过程的数据,形参表中的各个变量之间用逗号分 隔。 2、实际参数 实际参数是指在调用 Sub 或 Function 过程时,写入子过程名或函数名后括 号内的参数,其作用是将它们的数据(数值或地址)传送给 Sub 或 Function 过 程与其对应的形参变量。 6.3.2 参数传递(虚实结合) 参数传递指主调过程的实参(调用时已有确定值和内存地址的参数)传递给 被调过程的形参,参数的传递有两种方式:按值传递、按地址传递。形参前加 “ByVal”关键字的是按值传递,缺省或加“ByRef”关键字的为按地址传递。 传址与传值 传址: 形参得到的是实参的地址,当形参值的改变同时也改变实参的值。 传值: 形参得到的是实参的值,形参值的改变不会影响实参的值。 6.3.3 数组作过程的参数 Visual Basic 允许把数组作为实参传送到过程中。数组作参数是通过传地 址方式传送。在传送数组时,除遵守参数传送的一般规则外,还应注意以下几点: 1.为了把一个数组的全部元素传送给一个过程,应将数组名分别写入形参 表中,并略去数组的上下界,但括号不能省略。 Private Sub Sort(a() As single) …… End Sub 其中形参“a( )”即为数组。 2.被调过程可通过 Lbound 和 Ubound 函数确定实参数组的上、下界。 3.当用数组作形参时,对应的实参必须也是数组,且类型一致。 4.实参和形参结合是按地址传递,即形参数组和实参数组共用一段内存单 元
例6.1】定义了实参数组b(1to8),给它们赋了值,调用Sort0函数过 程的形式如下 Sort b( o Call Sort( bo) 实参数组后面的括号可以省略,但为便于阅读,建议一般不要省略为好。 调用时形参数组a和实参数组b虚实结合,共用一段内存单元,如图所示。 因此在Sort(过程中改变数组a的各元素值,也就相当于改变了实参数组b中 对应的元素的值,当调用结束时,形参数组a成为无定义。 b(1) (2)b(3) b(4) b(5) b(6) b(7) b(8) a(1) a(2) a(3) (4) a(8) 参数为数组时虚实结合示意图 【例6.2】在窗体层声明数组: Dim Values O As Integer 编写如下通用过程 Static Sub changeArray (Min%, Max%, pO As I For i%=Min% To max% % End Sub Static Sub PrintArray (Min%, Max%, pO As Integer) For i%=Min% To Max% Print p(i%) Next i% End Sub 编写如下事件过程:
【例 6.1】定义了实参数组 b(1 to 8),给它们赋了值,调用 Sort()函数过 程的形式如下: Sort b( ) 或 Call Sort( b() ) 实参数组后面的括号可以省略,但为便于阅读,建议一般不要省略为好。 调用时形参数组 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(4) a(5) a(6) a(7) a(8) 参数为数组时虚实结合示意图 【例 6.2】在窗体层声明数组:Dim Values () As Integer 编写如下通用过程: Static Sub changeArray (Min%,Max%,p() As Integer) For i%=Min% To Max% p(i%)=i% ^ 3 Next i% End Sub Static Sub PrintArray (Min%,Max%,p() As Integer) For i%=Min% To Max% Print p (i%) Next i% End Sub 编写如下事件过程: Sub Form_Click()
ReDim Values (1 To 5)As Integer Call changeArray (1, 5, Values O) Call PrintArray (1, 5, Values O) End Sub 【例6.3】编写一个 Function过程,求数组的最大值。 求数组最大值的通用过程如下: Private Function FindMax (ao As Integer) Dim Start As Integer, Finish As Integer Dim i As Integer Start=Lbound (a) Finish=Ubound (a) For i=Start To finish If a (i)>Max Then Max=a (i) Next i End function 该过程先求出数组的上界和下界,然后从整个数组中找出最大值。过程中的 数组是一个形式参数,可以在下面的事件过程中调用该过程 Sub Form Click O ReDim b(4)As Inte b(1)=30 b(3)=234 b(4)=874
ReDim Values (1 To 5) As Integer Call changeArray (1,5,Values ()) Call PrintArray (1,5,Values ()) End Sub 【例 6.3】 编写一个 Function 过程,求数组的最大值。 求数组最大值的通用过程如下: Private Function FindMax (a() As Integer) Dim Start As Integer,Finish As Integer Dim i As Integer Start=Lbound (a) Finish=Ubound (a) Max=a (Start) For i=Start To Finish If a (i) > Max Then Max=a (i) Next i End Function 该过程先求出数组的上界和下界,然后从整个数组中找出最大值。过程中的 数组是一个形式参数,可以在下面的事件过程中调用该过程: Sub Form_Click () ReDim b (4) As Integer b (1)=30 b (2)=80 b (3)=234 b (4)=874
c=FindMax (b O) 执行程序后,单击窗体,输出结果为:874。 6.3.5对象参数的传送 i sual basic还允许用对象(窗体或控件)作为通用过程的参数。其格式 为: Sub过程名(形参表) 语句块 [Exit Sub] 语句块 End Sub 形参表”中形参的类型通常为 Control和Form。注意,在调用含有对象 的过程时,对象只能通过传地址方式传送。因此在定义过程时,不能在其参数前 加关键字 ByVal 1.窗体参数的传送 2.控件参数的传送 例6.5】编写一个通用过程,在过程中设置字体属性,并调用该过程显 示指定的信息。 Sub Fontout (TestCtrll As Control, TestCtrl2 As Control) TestCtrll. Fontsize=16 TestCtr11. FontName="隶书” TestCtrll. Fontitalic=True TestCtrll. FontBold=True TestCtrll. FontUnderline= False
c=FindMax (b ()) Print c End Sub 执行程序后,单击窗体,输出结果为:874。 6.3.5 对象参数的传送 Visual Basic 还允许用对象(窗体或控件)作为通用过程的参数。其格式 为: Sub 过程名(形参表) 语句块 [Exit Sub] 语句块 End Sub “形参表”中形参的类型通常为 Control 和 Form。注意,在调用含有对象 的过程时,对象只能通过传地址方式传送。因此在定义过程时,不能在其参数前 加关键字 ByVal。 1. 窗体参数的传送 2. 控件参数的传送 【例 6.5】 编写一个通用过程,在过程中设置字体属性,并调用该过程显 示指定的信息。 Sub Fontout (TestCtrl1 As Control,TestCtrl2 As Control) TestCtrl1.FontSize=16 TestCtrl1.FontName=隶书 TestCtrl1.FontItalic=True TestCtrl1.FontBold=True TestCtrl1.FontUnderline= False
TestCtrl2. FontSize=l8 TestCtrl2. Font Name="Times new Roman TestCtrl2. Font italic=False TestCtrl2. FontUnderline=False End sub 上述过程有两个参数,其类型均为 Control该过程用来设置控件上所显示 的文字的各种属性。为了调用该过程,在窗体上建立两个文本框,然后编写如下 的事件过程: Private Sub Form Load o Text1.Text="欢迎光临” Text2.Text=”中国武汉光谷” End Sub Private Sub Form Click O Fontout text, text2 End sub 运行上面的程序,单击窗体,执行结果如P150页图6.9所示。 七、作业P154习题6.7-6.9 6.4过程的作用域(2学时) 、教学内容 本节介绍代码的模块以及过程的作用域 、目的要求 了解VB6.0中的三个模块的功能与结构,掌握过程的作用域 三、教学重点与难点
TestCtrl2.FontSize=18 TestCtrl2.FontName=Times new Roman” TestCtrl2.FontItalic=False TestCtrl2.FontUnderline=False End Sub 上述过程有两个参数,其类型均为 Control。该过程用来设置控件上所显示 的文字的各种属性。为了调用该过程,在窗体上建立两个文本框,然后编写如下 的事件过程: Private Sub Form_Load () Text1.Text=欢迎光临 Text2.Text=中国 武汉光谷 End Sub Private Sub Form_Click () Fontout Text1 ,Text2 End Sub 运行上面的程序,单击窗体,执行结果如 P150 页图 6.9 所示。 七、作业 P154 习题 6.7-6.9 6.4 过程的作用域 (2 学时) 一、教学内容 本节介绍代码的模块以及过程的作用域 二、目的要求 了解 VB6.0 中的三个模块的功能与结构,掌握过程的作用域。 三、教学重点与难点