vb第六章(过程)

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 End If End Function
注意: 注意:
建立Function函数过程的方法与建立Sub子过程相同 建立Function函数过程的方法与建立Sub子过程相同 例 Function函数过程的方法与建立Sub
3、Sub子过程的调用(主调过程) Sub子过程的调用(主调过程) 子过程的调用 调用格式: 调用格式:
参数列表] 子过程名 [参数列表]
参数列表: 称为实参或实在参数 实参或实在参数, 参数列表: 称为实参或实在参数,它必须与 形参保持个数相同,位置与类型一一对应。 形参保持个数相同,位置与类型一一对应。 个数相同 一一对应 参数传递:调用时把实参的值或地址传递给形参; 调用时把实参的值或地址传递给形参; 多个参数间用逗号分隔。 多个参数间用逗号分隔。
三. Function函数过程的定义及其调用 Function函数过程的定义及其调用
函数过程是带有返回值的特殊过程。 函数过程是带有返回值的特殊过程。 带有返回值的特殊过程
1、定义
[Public|Private][Static] Function 函数名([参数列表]) [AS 类型] Public|Private][Static] 局部变量或常数定义 语句块 函数名= 函数名=表达式 [Exit Function ] 语句块 函数名= 函数名=表达式
2、建立Sub子过程(有两种方法): 建立Sub子过程( Sub子过程
• 在VB中,利用“工具”菜单下的“添加过程” VB中 利用“工具”菜单下的“添加过程” 命令定义 • 利用代码窗口直接定义
在窗体/标准模块中:插入点放在现有过程之外, 在窗体/标准模块中:插入点放在现有过程之外, 之外 通用说明” 或在 “通用说明”处 键入: 过程名, 键入:Private Sub 过程名,回车
' “=”的click事件 的 事件 Private Sub Command1_Click() Dim m As Integer, n As Integer Dim fm As Long, fn As Long Dim fmn As Long m = Val(txtm): n = Val(txtn) fac m, fm ’计算 的阶乘 计算m的阶乘 计算 Call fac(n, fn) ’计算 的阶乘 计算n的阶乘 计算 Call fac(m - n, fmn) ’计算 计算m-n的阶乘 计算 的阶乘 txtResult = Str(fm / (fn * fmn)) End Sub 见 求组合数 .vbp
被调过程2 被调过程1 Call 过程2(参数列表) 2 结束 主调过程 …… Call 过程1(参数列表) …… 结束 调用点 …… 结束
例6-1,求组合数
m! C = n !( m − n )!
n m
'定义求阶乘的 定义求阶乘的Sub子过程 子过程fac 定义求阶乘的 子过程 Private Sub fac(ByVal n As Integer, f As Long) ‘过程定义 过程定义 Dim i As Integer f=1 For i = 1 To n f=f*i Next i End Sub
• 当参数是数组时,形参在参数声明时应省略其维数, 当参数是数组时,形参在参数声明时应省略其维数,但 括号不能省。 括号不能省。 • • 若形参变量的类型为String,则只能是不定长的。 若形参变量的类型为String,则只能是不定长的。 String 过程允许嵌套调用。 过程允许嵌套调用。
过程嵌套调用的执行: 过程嵌套调用的执行:
第六章 过程
一、过程与模块的概念 二、Sub子过程的定义和调用 Sub子过程的定义和调用 三、Function函数过程的定义和调用 Function函数过程的定义和调用 四、参数的传递 五、变量与过程的作用域 六、过程的递归调用 七、常用算法 八、多重窗体
一、过程与模块的概念
1. 过程 独立功能的子程序。 独立功能的子程序。 两类:系统提供的内部 两类:系统提供的内部函数过程和事件过程; 用户根据自己需要定义的通用过程。 用户根据自己需要定义的通用过程。 通用过程作用: 通用过程作用: • 程序模块化,结构清晰,易于修改和维护。 程序模块化,结构清晰,易于修改和维护。 • 可用于在程序中多处调用。 可用于在程序中多处调用。
• •
过程调用注意事项 过程调用注意事项:
• 调用子过程的形式有两种: 调用子过程的形式有两种: Call关键字 若用Call关键字时 实参必须用圆括号括起, 若用Call关键字时,实参必须用圆括号括起,且左括号 与过程名间不能有空格;若实参为空,则可省略括号。 与过程名间不能有空格;若实参为空,则可省略括号。 若用过程名则无( ), 过程名则无 若用过程名则无( ),且第一个参数与过程名间要有 空格。 空格。 例:swap a,b call swap(a,b)
实在参数

参数列表) CALL 子过程名(参数列表)
举例 . 输入两个整数,按从大到小输出。 输入两个整数,按从大到小输出。
Private Sub swap(x As Integer, y As Integer) Dim temp As Integer If x < y Then temp = x:x = y:y = temp : : End If End Sub Private Sub Command1_Click() Dim a As Integer, b As Integer a=Val(Text1.Text): b=Val(Text2.Text) If a<b Then call swap(a,b) End If Print a,b End Sub ‘过程的调用, 或swap a,b 过程的调用, 调用点 (主调过程 (主调过程) 主调过程) ‘过程定义 交换两个变量值 过程定义,交换两个变量值 过程定义 (被调过程 被调过程) 被调过程
比较函数过程与Sub 比较函数过程与Sub子过程 Sub子过程 • 不同之处: 不同之处: 函数过程通过函数名有返回值, 函数过程通过函数名有返回值,因 此定义时有返回值的类型说明。 此定义时有返回值的类型说明。 Sub子过程通过变量返回值 Sub子过程通过变量返回值 • 相同点: 相同点: 完成某种特定功能的一组程序代码。 完成某种特定功能的一组程序代码。
(Passed By Reference) )
例如: 例如:
Private Sub swap(x As Integer, y As Integer) Dim temp As Integer If x < y Then temp = x:x = y:y = temp : : End If End Sub Private Sub exl(ByVal x As Integer, y As Integer) x=x+2 y=y+x*2 Print x, y End Sub
过程调用的执行: 过程调用的执行:
主调过程中执行到过程调用语句时,转去执行被调过程, 执行结束后,返回主调过程中本次调用的调用点,继续执行 调用点的后序语句。 被调过程1 …… 结束 主调过程 …… Call 过程1(参数列表) …… 结束 调用点
过程调用注意事项 过程调用注意事项: 注意事项

形式参数
][Static]Sub 子过程名( [Public|Private][Static]Sub 子过程名([参数列表])
过程体
End Sub
说明: 说明:

过程名: 过程名:
注 意
(与变量命名规则相同) 与变量命名规则相同)
不要与VB 关键字同名 不要与VB 关键字同名 不要与WINDOWS API函数 函数重名 不要与WINDOWS API函数重名 不能与同一级别的变量重名 不能与同一级别的变量重名
2. 模块 将不同类型的代码组织到一起而提供的一种结构。 将不同类型的代码组织到一起而提供的一种结构。 (1)窗体模块(.frm): 每个窗体对应一个窗体模块 窗体模块(.frm) (2)标准模块(.bas):多窗体中共享的代码 标准模块(.bas):多窗体中共享的代码 ):
可保存通用过程、相关说明(全局变量、 可保存通用过程、相关说明(全局变量、 模块级变量) 模块级变量) 工程”+“添加模块 添加模块” “ 工程”+“添加模块”
2、Function函数过程的调用: Function函数过程的调用: 函数过程的调用 调用格式: 调用格式:
变量名=函数过程名([参数列表]) 变量名=函数过程名([参数列表]) ([参数列表 注意: 注意:必须给实参加括号
如无实参, 如无实参,括号也可省略
例如: 例如: 调用例6 调用例6-3,求两个圆面积之和 Sum=Cir(20)+Cir(30)
例6-2 求圆面积的函数过程: 求圆面积的函数过程:
Private Function Cir(ByVal r As Single) As Single Const PI = 3.1415926 Cir = PI * r * r End Function
例6-3 求N阶乘的函数过程: 阶乘的函数过程:
函数体
End Function
说明: 说明:
• 函数体中一般至少要有一个“函数名=表达式” 函数体中一般至少要有一个“函数名=表达式” 的语句给函数名赋值 如果没有“函数名=表达式”,则返回对应类型 如果没有“函数名=表达式” 的缺省值 • 在函数体内,可以像使用简单变量一样使用函 在函数体内, 数名 • Function函数过程不能嵌套定义 Function函数过程不能嵌套定义
通用过程
函数过程 (Function) • 通用过程 子过程 (Sub) (有返回值) 有返回值) (没有返回值) 没有返回值)
属性过程 (Property) 事件过程 (Event)
按作用域分通用过程: 按作用域分通用过程: 公有过程(Public): 公有过程(Public):可被应用程序任意过程调用 私有过程(Private): 私有过程(Private):只能被同一模块中的过程调用
(3)类模块(.cls):创建新的对象类的属性、 类模块(.cls):创建新的对象类的属性、 ):创建新的对象类的属性 事件、方法等 事件、
百度文库
VB应用程序的结构
二. Sub 子过程的定义及其调用
1、定义Sub子过程 (被调过程) 定义Sub子过程 被调过程) Sub
局部变量或常数定义 语句块 [Exit Sub ] 语句块
例如:调用例6 求阶乘的函数过程, 例如:调用例6-3求阶乘的函数过程,求例 6-1中的组合数。 中的组合数。 Private Sub Command1_Click() Dim m As Long Dim n as Integer m = Val(txtm) n= Val(txtn) txtResult = Fact(m) / (Fact(n) * Fact(m - n)) End Sub
100之间的孪生素数 素数值相差2) 之间的孪生素数( 例6-5 求1-100之间的孪生素数(素数值相差2)
:
• 参数列表形式: 参数列表形式:
[ ByVal ] 变量名 [ ( ) ] [ As 类型 ] _ [ , [ByVal] 变量名 [ ( ) ] [ As 类型 ] … ]
参数也称为形参 无参过程名后的( )不可缺省 也称为形参, 无参过程名后的 不可缺省 形参 ByVal 参数是值传递(Passed By Value), 参数是值传递( ) 缺省ByVal:引用传递(ByRef),即地址传递 :引用传递( ),即地址传递 缺省 ), • Sub子过程不能嵌套定义 Sub子过程不能嵌套定义
相关文档
最新文档