x 第6章过程、模块与类] 6.1VB的过程 62VB的代码模块 63VB的标准模块 64VB的类
[第6章 过程、模块与类] 6.1 VB的过程 6.2 VB的代码模块 6.3 VB的标准模块 6.4 VB的类
61VB的过程 →三种过程 ●Sub(子程序)过程 Function(函数)过程 ● Property(属性)过程 What are the differences?
6.1 VB的过程 ⚫ Sub (子程序)过程 ⚫ Function(函数) 过程 ⚫ Property (属性)过程 →三种过程 What are the differences?
1.子过程(Sub) 子过程的语法是: [ Private Public Friend] [static Sub name [(arglist) statements Exit Subl Statements End sub ●作用域不同([ Private Public Friend]) ●生命期不同([ Static])
1. 子过程(Sub) ⚫ 作用域不同([Private | Public | Friend]) ⚫ 生命期不同([Static]) 子过程的语法是: [Private | Public | Friend] [Static] Sub name [(arglist)] [statements] [Exit Sub] [statements] End Sub
其中的 arglist参数的语法 Optional [By Val ByRef [ParamArray varname[O [As type][ defaultvalue Notice Sub过程可以是递归的(后面会告诉你) Sub过程不能出现在等号的右侧 Exit sub语句任何位置都可以有
[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue] 其中的 arglist 参数的语法 : Notice: Sub 过程可以是递归的(后面会告诉你) Sub 过程不能出现在等号的右侧 Exit Sub 语句任何位置都可以有
x For example *我们创建这样一个应用程序,它包含一个按钮,当用户在 窗体上单击时,计算机的喇叭会发出3声“嘟”的声音如果 用户在按钮上单击,喇叭响五下 我们定义一个控制计算机操作的过程,命名为 Beep Sound, 喇叭的次数作为参数有调入者传入,参数命名为n 过程 Beep Sound如下 Sub Beep sound(n as Interger) Dim i As Interger, j As Long For i=1 to n Beep
For example *我们创建这样一个应用程序,它包含一个按钮,当用户在 窗体上单击时,计算机的喇叭会发出3声“嘟”的声音;如果 用户在按钮上单击,喇叭响五下. 我们定义一个控制计算机操作的过程,命名为BeepSound, 喇叭的次数作为参数有调入者传入,参数命名为n. 过程BeepSound如下: Sub BeepSound(n As Interger) Dim i As Interger, j As Long For i= 1 to n Beep
x Forj=0to1000000 Next End Sub 我们可以用 Call Beep Sound(5)或 Beep Sound5调用 Beep Sound 所以我们可以在窗体Form1和按钮 Command的 Click事件过程 中调用 BeepSound过程(如下:) Private Sub Command1 click() Call Beepsound(5) End Sub Private Sub Form Click( Beep sound 3 End Sub
For j= 0 to 1000000 Next Next End Sub 我们可以用 Call BeepSound(5) 或BeepSound 5 调用BeepSound, 所以我们可以在窗体Form1和按钮Command1的Click事件过程 中调用BeepSound过程(如下:) Private Sub Command1_click( ) Call BeepSound(5) End Sub Private Sub Form_Click() BeepSound 3 End Sub
我们可以通过此图来了解这一操作 事件过程 调用 Command1 Click 返回通用过程 Beep Sound 调用 事件过程 Form Click 返回 由上可知,子过程分为两种:通用过程和事件过程
我们可以通过此图来了解这一操作: 事件过程 Command1_Click 事件过程 Form_Click 通用过程 BeepSound 调用 返回 调用 返回 由上可知,子过程分为两种:通用过程和事件过程
x 点补充(课本P164) 可以使用 Option Explicit语句来强制显式定义变量。 为了更清楚地说明这个问题,我们运行下例 Option explicit Public X As single Private Sub Form Load Dim X As Integer’如果注释掉有什么效果? X=Ⅹ+0.1 Debug. Print"X=";Ⅹ Debug Print TypeName(X) End Sub 建议使用Qppi语句来强创显式定义变量★x 水k
一点补充:(课本P164) 可以使用 Option Explicit 语句来强制显式定义变量。 为了更清楚地说明这个问题,我们运行下例: 'Option Explicit Public X As Single Private Sub Form_Load() ‘Dim X As Integer ’如果注释掉有什么效果? X = X + 0.1 Debug.Print "X="; X Debug.Print TypeName(X) End Sub 建议使用Option Explicit 语句来强制显式定义变量
2.函数过程 Visual basic包含内置的或内部的函数,如Sqr、Cos或 Chr。此外,还可用 Function语句编写自己的 Function过程 函数过程的语法是: [ Public Private Friend] [static] Function name [(arglist)] [As type statements」 name expression] Exit Function statements」 Iname= expression End Function
2. 函数过程 Visual Basic 包含内置的或内部的函数,如 Sqr、Cos 或 Chr。此外,还可用 Function 语句编写自己的 Function 过程。 函数过程的语法是: [Public | Private | Friend] [Static] Function name [(arglist)] [As type] [statements] [name = expression] [Exit Function] [statements] [name = expression] End Function
作用域不同( Private Public| friend]) 生命期不同([ Static]) ●但是 arglist语法较简单:可选的。代表在调用时要传递给 Function过程的参数变量列表。多个变量应用逗号隔开 一点注意若 Function过程会改变某个数学表达式中变 量的值,则应避免在此表达式中使用该函数。例如: X(Sum(,J)+1)Sum(l, J) Function Sum(A As Integer, B As Integer)As String A=A+2 Sum=A+B End Function 结果如何?怎么修改?
⚫ 作用域不同([Private | Public | Friend]) ⚫ 生命期不同([Static]) ⚫ 但是arglist语法较简单:可选的。代表在调用时要传递给 Function 过程的参数变量列表。多个变量应用逗号隔开。 一点注意:若 Function 过程会改变某个数学表达式中变 量的值,则应避免在此表达式中使用该函数。例如: I=2 J=3 X=(Sum (I,J)+1)/Sum(I,J) Function Sum (A As Integer, B As Integer) As String A=A+2 Sum=A+B End Function 结果如何?怎么修改?