计算机技术基础(VB)学习内容 第一节 Function过程 一、Function过程的定义 1.Function过程的格式 [Public|Private][Static]Function<函数过程名> 2.说明 (1)Public:缺省值。使用Public时表示所有模块的所有其他过程都可以调用该Function过程。 (2)Private:使用Private时表示只有本模块中的其他过程才可以调用该Function过程。 (3)Static:使用Static时表示将过程中的所有局部变量说明为静态变量。 (4)<函数过程名>:Function过程的名称,遵循变量的命名规则。 (5)<形参表>:表示在调用时要传递给Function过程的参数变量列表。多个变量之间用逗号隔开。 <形参表> <形参表>格式: [ByVal|ByRef]<变量名>[( )][As<类型>] ByVal:表示该参数按值传递。 ByRef:缺省值。表示该参数按地址传递。 <变量名> <变量名>:遵循变量命名规则的任何变量名或数组名。 ( ):当参数为数组时使用。 (6)As<类型>:声明函数值的类型。 (7)Exit Function语句:从Function过程中退出。 (8)Function过程通过赋值语句: <函数过程名> <函数过程名>=<表达式> 将函数的返回值赋给<函数过程名>。 (9)Function过程的定义不能嵌套。 Function过程的建立: 直接在代码窗口中输入。 在代码窗口:工具→添加过程。 【例9-1】编写一个计算n!的Function过程。 Function Fact(N As Integer) As Long 【例9-2】编写一个Function过程,计算下面表达式的值。
Function F(X,Y,Z) F=Sqr(Abs(X^3+Y^3+Z^3)) End Function 二、Function过程的调用 直接在表达式中调用。 格式:<函数过程名>([<实参表>]) <实参表> <实参表>:常量、变量或表达式,各参数之间用逗号分隔。如果是数组,在数组名之后必须跟一对空括号。 【例9-3】利用Function过程计算阶乘,求组合数。设计界面如下图。
'定义求阶乘的函数Fact 【例9-4】编写Function过程求最大公约数,并通过命令按钮的单击事件过程调用该函数过程。
Function hcf(m As Integer,n As Integer)As Integer 【例9-5】编写一个Function过程,返回指定个数的字符串,字符串以A开始,例如,当指定个数5时,函数返回字符串"ABCDE"。运行时单击按钮调用该函数过程,实现在窗体上按指定的行数输出如下图所示的图形。
'CreateStr函数返回N个字符 第二节 Sub过程 一、Sub过程的定义 1.Sub过程的格式 [Private|Public][Static]Sub<过程名>[(<形参表>)] 2.说明 (1)Exit Sub用于退出Sub过程。 (2)<过程名> <过程名>不具有值的意义,在Sub过程中不能给<过程名>赋值,也不能给<过程名>定义类型。 (3)Sub过程通过<形参表>中的参数返回值。 (4)Sub过程的建立方法与Function过程的建立方法相同。 【例9-6】编写计算n!的Sub过程。 分析:参数表中应有一个参数n,还应有另一个参数F用来返回阶乘值。 【例9-7】编写Sub过程,打印以下图形。 分析:打印以上图形,不需要返回值,因此无需引入参数。 Sub a()
【例9-8】编写Sub过程,求三个数中的最大数和最小数。 分析:首先要设置三个参数,如x、y、z,用于接收三个原始数据,另外引入两个参数max和min,用于返回最大和最小数。 Sub s(x,y,z,max,min) 二、Sub过程的调用 格式一:Call<过程名>[(<实参表>)] 格式二:<过程名>[<实参表>] 说明: (1)<过程名>:要调用的Sub过程名; (2)<实参表>:可以是常量、变量或表达式,各参数之间用逗号分隔。如果是数组参数,则要在数组名之后跟一对空括号。 (3)用Call语句调用一个Sub过程时,如果过程本身没有参数,则省略<实参表>和括号。 (4)格式二省略了Call关键字,同时<实参表>两边也不能带括号。 【例9-9】将求组合数一题改成用Sub过程实现 Sub Fact(N As Integer,F As Long) 【例9-10】编写一个Sub过程,计算K个数的和,即1+2+…+K,并通过命令按钮的单击事件调用该过程计算S=1+(1+2)+(1+2+3)+…+(1+2+…+N)。 分析:编写一个Sub过程计算1+2+…+K, 设参数K、S,参数S用于返回该和值。 Sub A1(K As Integer,S As Integer) 第三节 过程的嵌套 在一个过程执行期间又调用另一个过程,称为过程的嵌套调用。
第四节 参数的传递 调用过程与被调用过程之间的一种数据通讯方法。 数据的传递可以是单向的,也可以是双向的。 一、形参和实参 形参:出现在Sub或Function语句中。 实参:出现在调用程序中。 例如,定义如下一个过程: Sub SubTest(n As Integer,Sum As Single) … End Sub 调用语句:
说明: 在传递参数时,形参表与实参表中对应参数个数、类型、位置顺序必须一一对应。 形参表中的参数可以是: 除固定长度字符串之外的合法变量名、数组名() 实参表中的参数可以是:常量、变量、表达式、数组名() 形参与实参的结合有两种方式: 按值传递和按地址传递。 二、按值传递和按地址传递 1.按值传递 实参把其值传递给形参而不传递实参的地址。 数据的传递是单向的。 (1)当实参为常量或表达式时,数据传递总是单向的。 例如:Call SubTest(10,1+2) (2)实参是变量时,要实现按值传递需要在形参之前通过关键字ByVal来实现。 例如:Sub SS(ByVal X,ByVal Y,ByVal Z) 运行时,单击命令按钮在窗体上打印: 1 2 3 2.按地址传递 指将实参的地址传给形参,使形参和实参具有相同的地址,即形参与实参共享同一存储单元。 (1)当实参为变量或数组时,形参使用关键字ByRef定义(或省略)表示要按地址传递。 (2)当参数是数组时,数组名之后必须使用一对空的圆括号。 按地址传递可以实现调用过程与子过程之间数据的双向传递。 例:Sub SS(ByRef X,ByRef Y,ByRef Z)
运行时,单击命令按钮在窗体上打印: 2 3 4 【例9-11】编写一个计算乘幂的Function过程,用来计算x的y次幂,其中y>0。单击窗体时调用该过程打印51、52、53、54、55的值。 Function Power(x As Single,ByVal y As Integer) 思考:如果取消过程Power中参数y前的关键字ByVal,则会出现什么情况? 第五节 代码模块 一、窗体模块 包含: 事件过程 通用过程 通用声明 二、标准模块 不对应于某个窗体、完全是纯代码。 包含: 全局常量、变量、全局过程 标准模块级常量、变量、通用过程 注:不能包含事件过程 添加:工程→添加模块→选“新建”标签→打开“添加模块”对话框 三、类模块 在类模块中编写代码建立新对象。 四、过程的作用域 过程的建立位置不同,允许被访问的范围也不同。 作用域:模块级、全局级 1.模块级过程:在过程前如果加Private关键字,则这种过程只能被其所在的模块中的其他过程所调用。 2.全局过程:在过程前如果加Public关键字(或省略),则这种过程可以被其他模块中的过程所调用。 3.过程的作用域:见P156 例:设窗体Form1中有按钮:Command1、Command2
设窗体Form2中有按钮:Command1、Command2 Private Sub Command1_Click()
第六节 变量的作用域与生存期 变量的作用域:指变量的有效范围。 变量的生存期:指变量的作用时间。 一、变量的作用域 将变量分为:局部变量 模块级变量 全局变量
1.局部变量 声明 不声明 Dim A As Integer 'A每次执行过程时被初始化 Static C As Single 'C在应用程序执行期间保持不变 作用范围 仅在声明的过程中起作用 其他过程中即使有同名变量,也不是指同一变量。 例:
2.模块级变量 声明 在模块的通用声明段中用以下方法声明的变量。 Private '在模块运行时被初始化 Dim '在模块运行时被初始化 作用范围 在该模块的所有过程中都起作用 其他模块不能访问这些变量 3.全局变量 声明 在模块的通用声明段中用以下方法声明的变量 Public '应用程序运行时被初始化 作用范围:应用程序的所有过程
二、变量的生存期 静态变量:在应用程序执行期间保留不变 动态变量:在所在的模块(过程)运行时被初始化 Static Sub SS1() '局部变量I,S为静态变量
例:
本章小结 1.函数过程的定义和调用 定义: [Public|Private][Static]Function <函数名>[(<形参表>)][As<类型>] 形参表:变量、数组名() 调用:函数名(<实参表>) 出现在表达式可以出现的位置 2.Sub过程的定义和调用 定义: [Private|Public][Static]Sub<过程名>([<形参表>]) 调用: (1)Call<过程名>([<实参表>]) (2)<过程名> <过程名>[<实参表>] 注意:Sub过程调用与函数过程定义与调用的区别 3.过程之间的参数传递 按值传送:实际参数为常数、表达式、ByVal 变量 按地址传送:实际参数变量、ByRef 变量、数组名() 4.过程的作用域 模块级过程;全局级过程 5.变量的作用域 局部变量;模块级变量;全局变量 6.变量的生 |
|