10自定义过程和函数

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

End Sub
❖ 例:编写程序打印Fibonacci数列
1 1 2 3 5 8 13 21 34 形成此数列的规律为:它的头两个数为1,从第 三个数开始其值是它前面的两个数之和
1
n=1
Fibo= 1
n=2
fibo(n-1)+fibo(n-2) n>2
过程的嵌套
VB中的过程都是平行的、相互独立的,在一 个过程体内不能包含另一个过程。VB过程的嵌套是 指在一个过程体中调用另一个过程。
定义时,缺省传递方式,在调用时, 若为变量、数组,则进 行地址传递 值 传 递:定义时,在形参前加ByVal,该参数为地址传递。 定义时,缺省传递方式,在调用时 ,若为常量、表达式,则 进行值传递.
❖ Sub xx( ByRef a As Long, b As Long, ByVal c As long)
Dim var As Integer var=200 Print var End Sub
❖ 两个过程都有变量var,但它们是互不相干的两个变量。单
击Command1输出100,单击Command2输出200。
窗体和模块级全局变量 Form or Module Global Variable
❖ 在窗体或模块中的所有过程和函数内有效。 ❖ 窗体级全局变量必须在窗体的通用General段的声明Declare
当用户对一个对象发出一个动作时,会产生一个事件, 然后自动地调用与该事件相关的事件过程。 ❖ 通用过程:
指由其它过程显式调用的代码模块,通用过程由用户自 己创建。在一个过程中,通用过程可以被其他过程调用。通 用过程又分为子过程和函数过程。
自定义通用过程
定义子过程的语句格式 [<Private|Public>][Static] Sub <过程名>([形参表])
❖ 函数过程产生一个值,函数返回值的类型就是自定义函 数的类型如果没有给自定义函数名赋值,则返回值默认, 即数值型为0,字符型为空串,可变型为空值 As <类型> 为“函数过程”值的类型
❖ 与第二种自定义过程调用的区别
<自定义函数名>(实际参数) <自定义过程名> 实际参数
过程中的参数传递
当子过程或函数过程被调用时,调用语句中的 实际参数就与过程定义语句中的形式参数一一对应 起来,并以某种方式把实际参数值传递给形式参数, 供过程使用。这个过程称为过程参数传递。
❖ 功能:定义一个函数过程,执行该过程的结果是返回表达 式的值。
❖ 说明:函数名将返回表达式的值。
函数与过程比较
❖ Sub aa(R as integer) A=3.1415*R^2 Print “面积为”;A
End Sub ❖ Function aa(R as integer)
A=3.1415*R^2 Print “面积为”;A aa = A End function
无参数过程调用
❖ Private Sub Command1_Click() Call Hello
End sub ❖ Private Sub Command1_Click()
Hello End sub
有参数过程调用
❖ Private Sub Command1_Click() Dim R as single R = Val(Text1.Text) Call aa(R)
❖例:定义变量示例。多次按调用命令按钮 cmdOperat,在标签lblLocalVar中显示局部变量 的值,标签lblStaticVar中显示静态变量的值。
Private Sub CmdOperat_Click ( ) Dim X As Integer Static XStatic As Integer X=X+1 XStatic = XStatic + 1 lblLocalVar.Caption = X lblStaticVar.Caption = Xstatic
过程
过程是构成程序的一个模块,往往用来完成一个相对独 立的功能。过程可以使程序更清晰、更具有结构性。Visual Basic6.0提供了四种过程:
❖Sub过程 ❖Function函数 ❖Property属性过程 ❖Even事件过程
Sub过程
VB中,Sub过程分为事件过程和通用过程 ❖ 事件过程:
If n > 1 Then
fact = n * fact(n - 1)
Else
fact = 1
End If
End Function
Private Sub Form_Click()
Dim x As Integer
x = Val(InputBox("input n "))
Print x; "!="; fact(x)
递归调用
❖ 一个过程直接或间接调用自己本身,自己调用自己 ,在递归 调用中,其中的每一步均要用到上一步的结果。
❖ 递归求解的条件: 给出终止条件和相应状态; 给出递归的表达式,该表达式要在有限次数内达到终止 条件。
❖ 例:求n!
ห้องสมุดไป่ตู้
n× (n-1) n>1
F(n)= 1
n=1
Function fact(n As Integer) As Long
调用Function函数过程
❖ Function函数过程的调用与VB内部函数的调用方法相同, 在表达式中直接使用函数名即可。
❖ s=0 For X=1 to 100 step 10 s=s+aa(x) Next x Print s
❖ 例:用Function函数过程求S=A!+B!+C!
说明
❖ 在Function … End Function 之间至少有一个语句是给 函数过程名赋值的语句 即 函数过程名 = 表达式
说明
❖ 值 传 递:主程序 过程 主程序和子程序中使用同样或不同的参数变量名,在
内存中均分配不同的存贮单元,子程序中改变了参数变量 的值,不会影响主程序的参数变量值。 ❖ 地址传递:主程序 过程
主程序和子程序中使用同样或不同的参数变量名,在 内存中均分配相同的存贮单元子程序中改变了参数变量的 值,就会影响主程序的参数值。
中申明:
Dim 变量名As 数据类型 Const 常量名 = 值
❖ 模块级全局变量必须在模块内用Global语句申明。语法为:
Global 变量名As 数据类型 Global Const 常量名 = 值
❖ 例:输入学生的姓名、语文成绩、算术成绩,单击“计算” 按钮,在平均后显示该学生的平均成绩;单击“清除”按钮, 清除4个文本框的显示,准备输入下一个学生的数据;单击 “总分”按钮,在“全班总平均成绩”的框中显示全班的总 平均成绩;单击“结束”按钮,结束程序。
Visual Basic程序设计
——自定义过程和函数
本节主要讲述:
1. 自定义过程Sub的过程名的命名规则、创建和调用 * 2. 自定义函数Function的函数名命名的规则、创建和
调用 * 3. 自定义过程和函数的建立步骤(上机操作) 4. 参数的传递 5. 递归调用 6. 变量、过程的作用域*
形参与实参的对应关系
实际参数
调用过程:
call test1( 18,
s(),
rr,
bm)
定义过程:
sub test1( r as integer, a() as single, cc as string, x as single)
形式参数
参数传递
当过程或函数被调用时,调用语句中的实际参数与定义语 句中的形式参数一一对应,并以某种方式进行传递 地址传递:定义时,在形参前加ByRef,该参数为地址传递。
形式参数与实际参数
❖ 形式参数
是指在定义通用过程时,出现在Sub或Function语句 中的变量名,是接受传递给子过程值的变量,形参表中的 各个变量之间用逗号分隔。
❖ 实际参数
是 指 在 调 用 Sub 或 Function 过 程 时 , 传 递 给 Sub 或 Function过程的常量、变量或表达式。实参表可由常量、 表达式、有效的变量名、数组名(后跟左、右括号)组成, 实参表中各参数用逗号分隔。
End Sub ❖ Private Sub Command2_Click()
Dim R as single R = Val(Text1.Text) aa R End Sub
说明
❖ 过程名与变量名的命名规则相同 ❖ 自定义过程名不能与自定义函数名相同 ❖ 形参之间用“,”分隔 ❖ 调用自定义过程时,过程名、实际参数数目、类型、排列顺
End Sub
在Visual Basic程序中的变量和常量都有确 定的作用范围。这是模块化程序设计的必要条件。 变量和常量只在确定的范围内有效,不同范围内 有效的变量和常量可以同名,相互不干扰。VB程 序中的变量和常量被分为不同的作用范围。
局部变量 Local Variable
❖ 在过程和函数内有效。不同过程或函数中可以有同 名的变量,在一个过程中给变量赋值不影响另一过 程中同名的变量.
调用Sub过程
❖ Sub过程不能返回一个值,因此不能在表达式中调用Sub 过程。调用Sub过程必须是一个独立的语句。 调用格式1:Call <过程名>([<实参表>]) 调用格式2: <过程名> [<实参表>]
❖ 说明: 过程名是Sub过程的名称; 实参表是传递给Sub过程的变量或常量,之间用“,” 分隔。数组参数用数组名后跟()表示。 若省略Call关键字,必须取消实参表前后的圆括号,实 参表与过程名之间用空格分隔。
申明变量
❖ 申明变量用Dim语句或Static语句。申明变量的作用是申明 变量的数据类型,而未确定变量的值。变量将在过程或函 数的程序代码中被赋值。
❖ Dim <变量名> [As <类型>] [,<变量名2> [As <类型2> ]]… ❖ Static <变量名> [As <类型>] [,<变量名2> [As <类型2> ]]…
Static语句
❖ 用Static语句申明静态变量,在调用过程时,静 态变量的值是上一次调用该过程时保留的值。
❖ Static语句与Dim语句的区别
当执行一个过程结束时, Static变量的值会保留, 下次调用此过程时,变量的初值是上次调用结束时被保留 的值,而Dim申明的变量在过程结束时不保留,每次调用 时需要重新出初始化
工程级全局变量 Project Global Variable
❖ 在整个工程中的所有窗体或模块内有效 ❖ 工程级全局变量可以在程序的任意地方申明。语法
为: Public 变量名As 数据类型 Public Const 常量名 = 值
序均与定义时相同。 ❖ 事件过程是在特定对象的发生特定事件时才被启动;自定义
过程可以被其他过程用过程名来调用,所以只在被过程调用 时才启动。
❖ 例:利用自定义过程求S=A!+B!+C!
自定义Function函数过程
❖ 格式: [Private|Public][Static]Function < 函 数 名 >([< 形 参 表 >])[As <类型>] …… <函数名>=<表达式> End Function
❖ 在过程或函数内用Dim语句申明或未加申明直接使 用的变量都是局部变量。
❖ 在窗体上建立了两个命令按钮Command1和Command2, 编写事件过程:
Private Sub Command1_Click( ) Dim var As Integer var=100 Print var
End Sub Private Sub Command2_Click( )
…… [Exit Sub]
…… End Sub 功能:定义一个能够完成某一特定功能的子过程
建立自定义过程
❖ 在“代码编辑器”窗口中直接输入 ❖ 使用“添加过程”对话框
举例
❖ 无参数过程 Sub Hello Print “热烈欢迎!” End Sub
❖ 编写过程,已知半径,求圆的面积。 Sub aa(R as single) A=3.1415*R^2 Print “面积为”;A End Sub
相关文档
最新文档