VB语言程序设计过程

上传人:cn****1 文档编号:568523648 上传时间:2024-07-25 格式:PPT 页数:67 大小:1.06MB
返回 下载 相关 举报
VB语言程序设计过程_第1页
第1页 / 共67页
VB语言程序设计过程_第2页
第2页 / 共67页
VB语言程序设计过程_第3页
第3页 / 共67页
VB语言程序设计过程_第4页
第4页 / 共67页
VB语言程序设计过程_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《VB语言程序设计过程》由会员分享,可在线阅读,更多相关《VB语言程序设计过程(67页珍藏版)》请在金锄头文库上搜索。

1、过程过程第七章第七章 第第第第7 7章章章章 过程过程过程过程本章内容通用过程通用过程参数传递参数传递嵌套调用嵌套调用过程、变量的作用域过程、变量的作用域程序举例程序举例多窗体与多窗体与Sub Main过程过程Function过程过程Sub过程过程第第第第7 7章章章章 过程过程过程过程引言 在在VBVB中的两种过程:中的两种过程:(1 1)由系统提供过程)由系统提供过程系统提供的系统提供的内部函数过程内部函数过程( (如如sqrsqr函数函数) )和和事件过程事件过程(clickclick事件)。事件)。(2 2)由用户自定义过程)由用户自定义过程用户根据实际应用的需要而自行设计的过程用户根

2、据实际应用的需要而自行设计的过程, ,这样的这样的过程称为过程称为“ “通用过程通用过程” ”第第第第7 7章章章章 过程过程过程过程引言 通用过程分为两类:通用过程分为两类:函数过程:以函数过程:以函数过程:以函数过程:以FunctionFunction保留字开始的过程。保留字开始的过程。保留字开始的过程。保留字开始的过程。子程序过程:以子程序过程:以子程序过程:以子程序过程:以SubSub保留字开始的过程;保留字开始的过程;保留字开始的过程;保留字开始的过程;第第第第7 7章章章章 过程过程过程过程例例5.19 5.19 求解求解s = 1! s = 1! + 2! + 3! + + 10

3、!+ 2! + 3! + + 10!的值的值 采用两种不同解法采用两种不同解法采用两种不同解法采用两种不同解法 (1 1)解法一:采用)解法一:采用)解法一:采用)解法一:采用两重循环两重循环两重循环两重循环,外循环,外循环,外循环,外循环1010次,每次循环计算一次次,每次循环计算一次次,每次循环计算一次次,每次循环计算一次阶乘,把每次阶乘值累加起来,即得求解结果。阶乘,把每次阶乘值累加起来,即得求解结果。阶乘,把每次阶乘值累加起来,即得求解结果。阶乘,把每次阶乘值累加起来,即得求解结果。 Dim s As Long, t As Long Dim s As Long, t As Long s

4、 = 0 s = 0 For j = 1 To 10 For j = 1 To 10 计算计算计算计算1010个阶乘个阶乘个阶乘个阶乘 t = 1t = 1 计算计算计算计算1 1个阶乘前,先赋初值个阶乘前,先赋初值个阶乘前,先赋初值个阶乘前,先赋初值 For k = 1 To jFor k = 1 To j 计算计算计算计算j! j!,需要循环,需要循环,需要循环,需要循环j j次次次次 t = t * kt = t * k 连乘连乘连乘连乘j j次次次次 Next kNext k s = s + t s = s + t 把每次计算得到的阶乘值把每次计算得到的阶乘值把每次计算得到的阶乘值把每

5、次计算得到的阶乘值t t累加累加累加累加 Next j Next j Print s Print s第第第第7 7章章章章 过程过程过程过程阶乘阶乘阶乘阶乘n! (n!n! (n!123n)123n)Private Sub Form_Load( )Private Sub Form_Load( ) Show Show Dim t As Long, s As Long, Dim t As Long, s As Long, i As Integer i As Integer t = 1t = 1 For i = 1 To 5 For i = 1 To 5 t = t * i t = t * i Ne

6、xt i Next i s = t s = t 例例7.27.2 计算计算5! + 10!5! + 10! t = 1 For i = 1 To 10 t = t * i Next i s = s + t s = s + t Print 5! + 10! =; s Print 5! + 10! =; sEnd SubEnd Sub第第第第7 7章章章章 过程过程过程过程 因为计算因为计算因为计算因为计算5!5!和和和和10!10!都要用到阶乘都要用到阶乘都要用到阶乘都要用到阶乘n! (n!n! (n!123n) 123n) 所以把所以把所以把所以把计算计算计算计算n!n!编成编成编成编成Sub

7、Sub过程。过程。过程。过程。Private Sub Form_Load( )Private Sub Form_Load( ) Show Show Dim y As Long, s As Long Dim y As Long, s As Long Call Jc(5, y) Call Jc(5, y) s = y s = y Call Jc(10, y) Call Jc(10, y) s = s + y s = s + y Print 5! + 10! =; s Print 5! + 10! =; sEnd SubEnd Sub程序运行结果:程序运行结果:程序运行结果:程序运行结果: 5! +

8、 10! 5! + 10! 3628920 3628920Private Sub Jc( n As Integer, t As Long ) Dim i As Integer t = 1 For i = 1 To n t = t * i Next iEnd Sub 注意参数注意参数n及及t的调用情况的调用情况 例例7.27.2 计算计算5! + 10!5! + 10!第第第第7 7章章章章 过程过程过程过程 过程有两个重要作用:一是把一个复杂的任务分解为过程有两个重要作用:一是把一个复杂的任务分解为若干个小任务,可以用过程来表达,从而使任务更易理解,若干个小任务,可以用过程来表达,从而使任务更

9、易理解,更易实现,将来更易维护;二是代码重用,使同一段代码多更易实现,将来更易维护;二是代码重用,使同一段代码多次复用。次复用。过程的作用过程的作用第第第第7 7章章章章 过程过程过程过程 过程调用示例过程调用示例过程调用示例过程调用示例 把相同的任务编成相对独立的把相同的任务编成相对独立的把相同的任务编成相对独立的把相同的任务编成相对独立的“ “子过程子过程子过程子过程” ” 当当当当事件过程事件过程事件过程事件过程需要执行这个任务时,可使用调用语句需要执行这个任务时,可使用调用语句需要执行这个任务时,可使用调用语句需要执行这个任务时,可使用调用语句( (如如如如Call)Call)实行调用

10、。子过程执行完后,会返回实行调用。子过程执行完后,会返回实行调用。子过程执行完后,会返回实行调用。子过程执行完后,会返回事件过程事件过程事件过程事件过程中调用语句中调用语句中调用语句中调用语句CallCall的后续语句继续执行的后续语句继续执行的后续语句继续执行的后续语句继续执行调用过程调用过程 Call SubA Call SubA Call SubB 子过程子过程SubA子过程子过程SubB通用过程第第第第7 7章章章章 过程过程过程过程 例例例例7.1 7.1 7.1 7.1 SubSubSubSub过程示例过程示例过程示例过程示例 Private Sub Form_Load()Priv

11、ate Sub Form_Load() Show Show Call mysub1(30) Call mysub1(30) Call mysub2 Call mysub2 Call mysub2 Call mysub2 Call mysub2 Call mysub2 Call mysub1(30) Call mysub1(30) End SubEnd Sub 程序运行结果程序运行结果程序运行结果程序运行结果Private Sub mysub1(n) Print String(n, *)End SubPrivate Sub mysub2( ) Print *; Tab(30); *End Sub

12、Sub过程参数参数n无参数无参数第第第第7 7章章章章 过程过程过程过程Sub过程的定义 格式:格式: StaticStatic PublicPublic| |PrivatePrivateSub Sub 过程名过程名过程名过程名( (参数表列参数表列参数表列参数表列) )语句块语句块语句块语句块Exit SubExit Sub语句块语句块语句块语句块End SubEnd Sub功能:定义一个以功能:定义一个以 为名的为名的SubSub过程。过程。(1) (1) 在在VBVB中,中,SubSub过程又称为子过程。过程又称为子过程。(2)(2)在子过程中如果没有形参,调用时括号()必在子过程中如果

13、没有形参,调用时括号()必须省略。须省略。 Call mysub2 Call mysub2 Call mysub2 Call mysub2 或或或或 mysub2 mysub2 mysub2 mysub2第第第第7 7章章章章 过程过程过程过程Sub过程的调用 格式:格式:Call Call 过程名过程名过程名过程名 ( (实参列表实参列表实参列表实参列表) ) 或或或或 过程名过程名过程名过程名 实参列表实参列表实参列表实参列表说明:说明: 实参的个数、类型、顺序应与相应的形参保持实参的个数、类型、顺序应与相应的形参保持一致,子过程中如果没有形参,则调用中也无一致,子过程中如果没有形参,则调

14、用中也无实参。实参。 第第2 2种调用方式与第种调用方式与第1 1种相比,结果一样,只是种相比,结果一样,只是去掉去掉CallCall和一对括号和一对括号( )( )。 例如,调用名为例如,调用名为例如,调用名为例如,调用名为mysub1mysub1mysub1mysub1的过程:的过程:的过程:的过程: Call mysub1(30) Call mysub1(30) Call mysub1(30) Call mysub1(30) mysub1 30 mysub1 30 mysub1 30 mysub1 30第第第第7 7章章章章 过程过程过程过程函数过程 StaticPublic|Priva

15、teStaticPublic|Private Function Function 函数过程名函数过程名( ( 参数列表参数列表参数列表参数列表 ) ) As As 类型类型类型类型 语句块语句块语句块语句块 函数名函数名函数名函数名 = = 返回值返回值返回值返回值 Exit Function Exit Function 语句块语句块语句块语句块 函数名函数名函数名函数名 = = 返回值返回值返回值返回值 End FunctionEnd Function功能:定义一个以功能:定义一个以 为名的为名的FunctionFunction过程过程。函数过程体函数过程体第第第第7 7章章章章 过程过程过

16、程过程函数过程说明1. 1. As As As As 类型:类型:类型:类型: 返回值的类型返回值的类型返回值的类型返回值的类型2.2.2.2.函数名函数名 = = 返回值返回值 函数过程必须返回函数值,而函数名就代表函数过程必须返回函数值,而函数名就代表函数过程必须返回函数值,而函数名就代表函数过程必须返回函数值,而函数名就代表了函数值,在函数体内至少对函数名赋值一次。了函数值,在函数体内至少对函数名赋值一次。了函数值,在函数体内至少对函数名赋值一次。了函数值,在函数体内至少对函数名赋值一次。若不赋值则默认返回值为若不赋值则默认返回值为若不赋值则默认返回值为若不赋值则默认返回值为0 0 0

17、0或空串或空值。或空串或空值。或空串或空值。或空串或空值。函数名函数名函数名函数名本身就是变量。本身就是变量。本身就是变量。本身就是变量。第第第第7 7章章章章 过程过程过程过程函数过程的调用 形式:形式: 变量名变量名变量名变量名 = = 函数过程名(实参列表)函数过程名(实参列表)函数过程名(实参列表)函数过程名(实参列表)或或 print print 函数过程名函数过程名函数过程名函数过程名 ( (实参列表实参列表实参列表实参列表) )功能:调用一个已定义的功能:调用一个已定义的FunctionFunction过程。过程。jiechen(5)jiechen(6)jiechen(7) a

18、= jiechen(5) b = jiechen(6) c = jiechen(7)Print jiechen(5) + jiechen(6) + jiechen(7)第第第第7 7章章章章 过程过程过程过程将将n!n!的的的的SubSub过程改为过程改为过程改为过程改为FunctionFunction过程。过程。过程。过程。Private Sub Form_Load( )Private Sub Form_Load( ) Show Show Dim s As Long Dim s As Long s = Jc(5) + Jc(10) s = Jc(5) + Jc(10) Print 5! +

19、10! =; s Print 5! + 10! =; sEnd SubEnd SubFunction Jc( n As Integer) As Long Dim i As Integer , t as Long t = 1 For i = 1 To n t = t * i Next i Jc = tEnd Function 例例7.37.3 计算计算5! + 10!5! + 10!Function Jc( n %) As Long Dim i As Integer Jc = 1 For i = 1 To n Jc = Jc * i Next iEnd Function第第第第7 7章章章章 过

20、程过程过程过程 因为计算因为计算因为计算因为计算5!5!和和和和10!10!都要用到阶乘都要用到阶乘都要用到阶乘都要用到阶乘n! (n!n! (n!123n) 123n) 所以把所以把所以把所以把计算计算计算计算n!n!编成编成编成编成SubSub过程。过程。过程。过程。Private Sub Form_Load( )Private Sub Form_Load( ) Show Show Dim y As Long, s As Long Dim y As Long, s As Long Call Jc(5, y) Call Jc(5, y) s = y s = y Call Jc(10, y)

21、Call Jc(10, y) s = s + y s = s + y Print 5! + 10! =; s Print 5! + 10! =; sEnd SubEnd SubPrivate Sub Jc( n As Integer, t As Long ) Dim i As Integer t = 1 For i = 1 To n t = t * i Next iEnd Sub 例例7.27.2 计算计算5! + 10!5! + 10!第第第第7 7章章章章 过程过程过程过程 把求两个数中的大数编成把求两个数中的大数编成把求两个数中的大数编成把求两个数中的大数编成FunctionFuncti

22、on过程,过程名为过程,过程名为过程,过程名为过程,过程名为MaxMaxPrivate Sub Form_Load()Private Sub Form_Load() Show Show Dim a As Single, b As Single, c As Single Dim a As Single, b As Single, c As Single Dim s As Single Dim s As Single a = Val(InputBox( a = Val(InputBox(输入第一个数输入第一个数输入第一个数输入第一个数) b = Val(InputBox( b = Val(Inpu

23、tBox(输入第二个数输入第二个数输入第二个数输入第二个数) c = Val(InputBox( c = Val(InputBox(输入第三个数输入第三个数输入第三个数输入第三个数) s = max(a, b) s = max(a, b) Print Print 最大数是最大数是最大数是最大数是:; max(s, c):; max(s, c)End SubEnd SubFunction max(m!, n!) As Single If m n Then max = m Else max = n End IfEnd Function 调用调用调用调用 例例7.47.4 输入三个数,求出它们的最大

24、数输入三个数,求出它们的最大数实参传实参传给形参给形参( am)通过函数名通过函数名通过函数名通过函数名maxmax带回一个结果带回一个结果带回一个结果带回一个结果第第第第7 7章章章章 过程过程过程过程 把求两个数中的大数编成把求两个数中的大数编成把求两个数中的大数编成把求两个数中的大数编成SubSub子过程,过程名为子过程,过程名为子过程,过程名为子过程,过程名为MaxMaxPrivate Sub Form_Load()Private Sub Form_Load() Show Show Dim a As Single, b As Single, c As Single Dim a As S

25、ingle, b As Single, c As Single Dim s As Single, m As Single Dim s As Single, m As Single a = Val(InputBox( a = Val(InputBox(输入第一个数输入第一个数输入第一个数输入第一个数) b = Val(InputBox( b = Val(InputBox(输入第二个数输入第二个数输入第二个数输入第二个数) c = Val(InputBox( c = Val(InputBox(输入第三个数输入第三个数输入第三个数输入第三个数) Call max(a, b, s) Call max(

26、a, b, s) Call max(s, c, m) Call max(s, c, m) Print Print 最大数是最大数是最大数是最大数是:; m:; mEnd SubEnd SubSub max(m!, n!, t!) If m n Then t = m Else t = n End IfEnd Function 例例7.47.4 输入三个数,求出它们的最大数输入三个数,求出它们的最大数第第第第7 7章章章章 过程过程过程过程函数过程与Sub过程的区别 (1)(1)函数名函数名函数名函数名是一个变量,它有值,有类型,在函数是一个变量,它有值,有类型,在函数体中至少赋值一次,并通过它可

27、带回一个结果;体中至少赋值一次,并通过它可带回一个结果;而而SubSub过程名过程名过程名过程名,它无值,无类型,在,它无值,无类型,在SubSub过程体过程体内不能赋值,不能通过它带回结果。内不能赋值,不能通过它带回结果。注意:注意:SubSub过程若要带回结果,必须通过形参与实过程若要带回结果,必须通过形参与实参的地址传递得到结果,调用时可得到多个参数参的地址传递得到结果,调用时可得到多个参数值。值。 第第第第7 7章章章章 过程过程过程过程函数过程与Sub过程的区别 (2)(2)调用时,子过程调用是一句独立的语句。格式:调用时,子过程调用是一句独立的语句。格式:Call Call 过程名

28、过程名过程名过程名 ( (实参列表实参列表实参列表实参列表) ) 或或或或 过程名过程名过程名过程名 实参列表实参列表实参列表实参列表函数过程不能作为单独的语句加以调用,必须参与函数过程不能作为单独的语句加以调用,必须参与表达式运算。表达式运算。变量名变量名变量名变量名 = = 函数过程名(实参列表)函数过程名(实参列表)函数过程名(实参列表)函数过程名(实参列表) 或或或或 print print 函数过程名函数过程名函数过程名函数过程名 ( (实参列表实参列表实参列表实参列表) ) a = jiechen(5) b = jiechen(6) c = jiechen(7)Print jiec

29、hen(5) + jiechen(6) + jiechen(7)第第第第7 7章章章章 过程过程过程过程说明说明:(1 1)如果仅仅为实现一个动作,而无任何返回结果,)如果仅仅为实现一个动作,而无任何返回结果,只能用只能用SubSub子过程子过程实现。实现。(2 2)如果需要返回一个结果,既可用函数过程实现)如果需要返回一个结果,既可用函数过程实现也可用子过程实现。也可用子过程实现。(3 3)如果需要返回多个结果,可用函数过程实现也)如果需要返回多个结果,可用函数过程实现也可用子过程实现,同时必须结合其他的形式,如可用子过程实现,同时必须结合其他的形式,如全局变量、传地址(实参形参间的传递)等

30、。全局变量、传地址(实参形参间的传递)等。函数过程与函数过程与Sub过程过程第第第第7 7章章章章 过程过程过程过程函数过程定义的方法 自定义函数过程有两种方法:自定义函数过程有两种方法:(1) (1) 利用利用“ “工具工具” ”菜单下的菜单下的“ “添加过程添加过程” ”命令定义,命令定义,生成一个函数过程的框架。生成一个函数过程的框架。(2) (2) 利用代码窗口手工输入代码的方式建立函数过利用代码窗口手工输入代码的方式建立函数过程。程。第第第第7 7章章章章 过程过程过程过程 通用过程通用过程通用过程通用过程(Sub/Function)(Sub/Function)过程可以保存在两种模块

31、中:过程可以保存在两种模块中:过程可以保存在两种模块中:过程可以保存在两种模块中: 窗体模块窗体模块窗体模块窗体模块(.frm)(.frm)和和和和标准模块标准模块标准模块标准模块(.bas)(.bas) (1) (1) 在窗体模块中创建通用过程:在窗体模块中创建通用过程:在窗体模块中创建通用过程:在窗体模块中创建通用过程: 可以在代码窗口中直接键入来创建可以在代码窗口中直接键入来创建可以在代码窗口中直接键入来创建可以在代码窗口中直接键入来创建SubSub过程过程过程过程 选择选择选择选择“ “工具工具工具工具” ”菜单中的菜单中的菜单中的菜单中的“ “添加过程添加过程添加过程添加过程” ”命

32、令命令命令命令 (2) (2) 在标准模块中创建通用过程:在标准模块中创建通用过程:在标准模块中创建通用过程:在标准模块中创建通用过程: 选择选择选择选择“工程工程工程工程”菜单中的菜单中的菜单中的菜单中的“添加模块添加模块添加模块添加模块”命令命令命令命令 保存为一个独立的保存为一个独立的保存为一个独立的保存为一个独立的“.bas”“.bas”“.bas”“.bas”文件文件文件文件 举例:举例:举例:举例:把例把例把例把例7.37.3的函数的函数的函数的函数max(m, n)max(m, n)存放在模块文件中存放在模块文件中存放在模块文件中存放在模块文件中 创建通用过程的方法第第第第7 7

33、章章章章 过程过程过程过程参数的传递 参数传递参数传递参数传递参数传递:指主调过程的实参传递给被调过程的形参。:指主调过程的实参传递给被调过程的形参。形参形参形参形参 :是指在定义过程时出现在参数列表中的:是指在定义过程时出现在参数列表中的变量变量变量变量名或数组名名或数组名名或数组名名或数组名,这些变量名只能在过程内部使用,这些变量名只能在过程内部使用,形式参数不能是常量。形式参数不能是常量。实参实参实参实参:是调用过程中已组织好的准备传给形参的:是调用过程中已组织好的准备传给形参的常量、常量、常量、常量、变量、表达式变量、表达式变量、表达式变量、表达式或或数组控件对象数组控件对象数组控件对

34、象数组控件对象等。等。 s = max(a, b)Function max(m, n) As Single End Function 实参实参形参形参第第第第7 7章章章章 过程过程过程过程 定义过程和调用过程的示例:定义过程和调用过程的示例:调用过程:调用过程:调用过程:调用过程:Call Mysub(100, Call Mysub(100, Call Mysub(100, Call Mysub(100, 计算机计算机计算机计算机 , 1.5) 1.5) 1.5) 1.5)定义过程:定义过程:定义过程:定义过程:Sub Mysub(t As Integer,s As String,y As

35、Single)Sub Mysub(t As Integer,s As String,y As Single)Sub Mysub(t As Integer,s As String,y As Single)Sub Mysub(t As Integer,s As String,y As Single) “ “形实结合形实结合形实结合形实结合” ”是按照位置结合的,即第一个实参值是按照位置结合的,即第一个实参值是按照位置结合的,即第一个实参值是按照位置结合的,即第一个实参值(100)(100)传送传送传送传送给第一个形参给第一个形参给第一个形参给第一个形参t t,第二个实参值,第二个实参值,第二个实参

36、值,第二个实参值(“(“计算机计算机计算机计算机”)”)传送给第二个形参传送给第二个形参传送给第二个形参传送给第二个形参s s,第三个实参值,第三个实参值,第三个实参值,第三个实参值(1.5)(1.5)传送给第三个形参传送给第三个形参传送给第三个形参传送给第三个形参y y。 第第第第7 7章章章章 过程过程过程过程参数传递的方式 地址传递地址传递地址传递地址传递:缺省或加:缺省或加“ByRef”“ByRef”,形参得到的是,形参得到的是实参的地址,当形参值改变时实参的值也改变,也实参的地址,当形参值改变时实参的值也改变,也叫叫双向传递双向传递双向传递双向传递。 值传递值传递值传递值传递:在形参

37、前加:在形参前加“ByVal”“ByVal”,形参得到的是,形参得到的是实参的值,形参值的改变不会影响实参的值。也叫实参的值,形参值的改变不会影响实参的值。也叫单向传递。单向传递。单向传递。单向传递。注意注意注意注意:无论哪种传递,实际参数必须与定义过程时:无论哪种传递,实际参数必须与定义过程时的形式参数在个数、类型、顺序上保持一一对应。的形式参数在个数、类型、顺序上保持一一对应。第第第第7 7章章章章 过程过程过程过程 设置两个通用过程设置两个通用过程设置两个通用过程设置两个通用过程Test1Test1和和和和Test2Test2,分别按值传递和按地址传递,分别按值传递和按地址传递,分别按值

38、传递和按地址传递,分别按值传递和按地址传递Private Sub Form_Load()Private Sub Form_Load() Dim x As Integer Dim x As Integer Show Show x = 5 x = 5 Print Print 执行执行执行执行test1test1前,前,前,前,x=; xx=; x Call test1(x) Call test1(x) Print Print 执行执行执行执行test1test1后,后,后,后,test2test2前,前,前,前,x=; xx=; x Call test2(x) Call test2(x) Prin

39、t Print 执行执行执行执行test2test2后,后,后,后,x=; xx=; xEnd SubEnd SubSub test1(ByVal t As Integer) t = t + 5End SubSub test2(s As Integer) s = s - 5End Sub 运行结果运行结果执行执行Test1前,前,x=5执行执行Test1后,后,Test2前,前,x=5执行执行Test2后,后,x=0 例例7.5 参数传递方式示例参数传递方式示例按值传递按值传递按地址传递按地址传递第第第第7 7章章章章 过程过程过程过程传递方式示意图5 Form_Load( )test1( )

40、xt实参实参形参形参(a) 值传递值传递5xs(b) 地址传递地址传递实参和形参共享单元实参和形参共享单元0Form_Load( )test2( )510第第第第7 7章章章章 过程过程过程过程 因为计算因为计算因为计算因为计算5!5!和和和和10!10!都要用到阶乘都要用到阶乘都要用到阶乘都要用到阶乘n! (n!n! (n!123n) 123n) 所以把所以把所以把所以把计算计算计算计算n!n!编成编成编成编成SubSub过程过程过程过程, ,采用采用采用采用PrintPrint直接在窗体上输出结果。直接在窗体上输出结果。直接在窗体上输出结果。直接在窗体上输出结果。Private Sub F

41、orm_Load( )Private Sub Form_Load( ) Show Show Dim y As Long, s As Long Dim y As Long, s As Long Call Jc(5, y) Call Jc(5, y) s = y s = y Call Jc(10, y) Call Jc(10, y) s = s + y s = s + y Print 5! + 10! =; s Print 5! + 10! =; sEnd SubEnd Sub程序运行结果:程序运行结果:程序运行结果:程序运行结果: 5! + 10! 5! + 10! 3628920 362892

42、0Private Sub Jc( n As Integer, t As Long ) Dim i As Integer t = 1 For i = 1 To n t = t * i Next iEnd Sub 注意参数注意参数n及及t的调用情况的调用情况 例例7.27.2 计算计算5! + 10!5! + 10!第第第第7 7章章章章 过程过程过程过程 把求两个数中的大数编成把求两个数中的大数编成把求两个数中的大数编成把求两个数中的大数编成SubSub子过程,过程名为子过程,过程名为子过程,过程名为子过程,过程名为MaxMaxPrivate Sub Form_Load()Private Sub

43、 Form_Load() Show Show Dim a As Single, b As Single, c As Single Dim a As Single, b As Single, c As Single Dim s As Single, m As Single Dim s As Single, m As Single a = Val(InputBox( a = Val(InputBox(输入第一个数输入第一个数输入第一个数输入第一个数) b = Val(InputBox( b = Val(InputBox(输入第二个数输入第二个数输入第二个数输入第二个数) c = Val(Input

44、Box( c = Val(InputBox(输入第三个数输入第三个数输入第三个数输入第三个数) Call max(a, b, s) Call max(a, b, s) Call max(s, c, m) Call max(s, c, m) Print Print 最大数是最大数是最大数是最大数是:; m:; mEnd SubEnd SubSub max(m, n, t) If m n Then t = m Else t = n End IfEnd Function 调用调用调用调用 例例7.37.3 输入三个数,求出它们的最大数输入三个数,求出它们的最大数第第第第7 7章章章章 过程过程过程过

45、程 在一个过程在一个过程在一个过程在一个过程(Sub(Sub过程和过程和过程和过程和FunctionFunction过程过程过程过程) )中调用另外中调用另外中调用另外中调用另外一个过程。一个过程。一个过程。一个过程。 例例例例7.57.5 输入两个数输入两个数输入两个数输入两个数n n、mm,求组合数,求组合数,求组合数,求组合数C Cn nm m 的值的值的值的值 C Cn nm m = = n! m!(n-m)! 7.37.3 过程的嵌套调用过程的嵌套调用第第第第7 7章章章章 过程过程过程过程 Private Sub Form_Load()Private Sub Form_Load()

46、 Show Show m = Val(InputBox( m = Val(InputBox(输入输入输入输入mm的值的值的值的值) n = Val(InputBox( n = Val(InputBox(输入输入输入输入n n的值的值的值的值) If m n Then If m n Then MsgBox MsgBox 输入数据错误输入数据错误输入数据错误输入数据错误, 0, , 0, 检查错误检查错误检查错误检查错误 End End End If End If Print Print 组合数是:组合数是:组合数是:组合数是:; Calcomb(n, m); Calcomb(n, m) End

47、SubEnd Sub Private Function Calcomb(n, m)Private Function Calcomb(n, m) Calcomb = Jc(n) / (Jc(m) * Jc(n - m) Calcomb = Jc(n) / (Jc(m) * Jc(n - m) End FunctionEnd Function Private Function Jc(x) Private Function Jc(x) t = 1 t = 1 For i = 1 To x For i = 1 To x t = t * i t = t * i Next i Next i Jc = t

48、Jc = t End FunctionEnd Function 程序中,采用了过程的嵌套调用方式。程序中,采用了过程的嵌套调用方式。在事件过程在事件过程Form_Load()中调用了中调用了Calcomb过程,而在过程,而在Calcomb过程中调用过程中调用了三次了三次jc过程。过程。调调用用调调用用第第第第7 7章章章章 过程过程过程过程 过程的嵌套调用过程的嵌套调用a=Calcomb(n,m)b=Jc(n)事件过程事件过程Form_LoadFunction过程过程Calcomb(n,m)Function过程过程Jc(x)结束结束开始开始第第第第7 7章章章章 过程过程过程过程变量的作用域

49、作用域作用域:变量、过程随所处的位置不同,可被访:变量、过程随所处的位置不同,可被访问的范围。问的范围。应用程序应用程序(.vbp)文件文件至至少少有有一一个个或或若若干干个个窗窗体模块体模块 (.frm)文件文件其其 它它 模模 块块 如如 类类 模模 块块(.cls)文件等文件等可可以以有有一一个个或或若若干干个个标标准模块准模块 (.bas)文件文件事件过程事件过程(sub)子过程子过程(sub)函数过程函数过程(function)子过程子过程(sub)函函数数过过程程(function)自定义属性过程自定义属性过程自定义方法过程自定义方法过程自定义事件过程自定义事件过程第第第第7 7章

50、章章章 过程过程过程过程 通用过程通用过程通用过程通用过程(Sub/Function)(Sub/Function)过程可以保存在两种模块中:过程可以保存在两种模块中:过程可以保存在两种模块中:过程可以保存在两种模块中: 窗体模块窗体模块窗体模块窗体模块(.frm)(.frm)和和和和标准模块标准模块标准模块标准模块(.bas)(.bas) (1) (1) 在窗体模块中创建通用过程:在窗体模块中创建通用过程:在窗体模块中创建通用过程:在窗体模块中创建通用过程: 可以在代码窗口中直接键入来创建可以在代码窗口中直接键入来创建可以在代码窗口中直接键入来创建可以在代码窗口中直接键入来创建SubSub过程

51、过程过程过程 选择选择选择选择“ “工具工具工具工具” ”菜单中的菜单中的菜单中的菜单中的“ “添加过程添加过程添加过程添加过程” ”命令命令命令命令 (2) (2) 在标准模块中创建通用过程:在标准模块中创建通用过程:在标准模块中创建通用过程:在标准模块中创建通用过程: 选择选择选择选择“工程工程工程工程”菜单中的菜单中的菜单中的菜单中的“添加模块添加模块添加模块添加模块”命令命令命令命令 保存为一个独立的保存为一个独立的保存为一个独立的保存为一个独立的“.bas”“.bas”“.bas”“.bas”文件文件文件文件 举例:举例:举例:举例:把例把例把例把例7.37.3的函数的函数的函数的函

52、数max(m, n)max(m, n)存放在模块文件中存放在模块文件中存放在模块文件中存放在模块文件中 创建通用过程的方法第第第第7 7章章章章 过程过程过程过程变量的作用域 局部变量:局部变量:在在窗体模块窗体模块窗体模块窗体模块(.frm)(.frm)和和和和标准模块标准模块标准模块标准模块(.bas)(.bas)的的的的过程内过程内声明的变量,只能在本过程中使用。声明的变量,只能在本过程中使用。 窗体窗体/ /模块级变量模块级变量:在:在窗体模块窗体模块窗体模块窗体模块(.frm)(.frm)和和和和标准模标准模标准模标准模块块块块(.bas)(.bas) “ “通用声明通用声明” ”段

53、中用段中用DimDim语句或用语句或用PrivatePrivate语句语句 声明的变量声明的变量, ,可被本窗体可被本窗体/ /模块的任何过程访模块的任何过程访问。问。 全局变量全局变量:在:在标准模块标准模块标准模块标准模块(.bas)(.bas) “ “通用声明通用声明” ”段段中用中用PublicPublic语句声明的变量,可被本应用程序的语句声明的变量,可被本应用程序的各各窗体模块窗体模块窗体模块窗体模块(.frm)(.frm)和和和和标准模块标准模块标准模块标准模块(.bas)(.bas)任何过程或函数任何过程或函数访问。访问。第第第第7 7章章章章 过程过程过程过程 1. 局部变量

54、局部变量 在一个在一个在一个在一个过程内部过程内部过程内部过程内部用用用用DimDim或或或或StaticStatic声明的变量称为局部变量。只能声明的变量称为局部变量。只能声明的变量称为局部变量。只能声明的变量称为局部变量。只能在本过程中有效。在一个窗体中,不同过程中定义的局部变量可以在本过程中有效。在一个窗体中,不同过程中定义的局部变量可以在本过程中有效。在一个窗体中,不同过程中定义的局部变量可以在本过程中有效。在一个窗体中,不同过程中定义的局部变量可以同名。例如,在一个窗体中定义同名。例如,在一个窗体中定义同名。例如,在一个窗体中定义同名。例如,在一个窗体中定义 Private Sub

55、Command1_Click()Private Sub Command1_Click() Dim Sum As Integer Dim Sum As Integer Sum = 1 Sum = 1 . . . . . . End SubEnd Sub Private Sub Command2_Click() Private Sub Command2_Click() Dim Sum As Single Dim Sum As Single Sum = 1.5 Sum = 1.5 . . . . . . End Sub End Sub 这两个同名变量这两个同名变量Sum没有任何联系没有任何联系 第第

56、第第7 7章章章章 过程过程过程过程 在窗体模块的在窗体模块的在窗体模块的在窗体模块的“ “通用声明通用声明通用声明通用声明” ”段中声明的变量称为模块级变量,段中声明的变量称为模块级变量,段中声明的变量称为模块级变量,段中声明的变量称为模块级变量,可以在一个窗体的不同过程中使用。可以在一个窗体的不同过程中使用。可以在一个窗体的不同过程中使用。可以在一个窗体的不同过程中使用。 DimDimDimDim n As Integer n As Integer n As Integer n As Integer Private Sub Command1_Click() Private Sub Comm

57、and1_Click() Private Sub Command1_Click() Private Sub Command1_Click() n=1 n=1 n=1 n=1 End Sub End Sub End Sub End Sub Private Sub Command2_Click() Private Sub Command2_Click() Private Sub Command2_Click() Private Sub Command2_Click() n=n+1 n=n+1 n=n+1 n=n+1 End Sub End Sub End Sub End Sub 如果用如果用如果用

58、如果用PrivatePrivate或或或或DimDim来声明,则该变量只能在本窗体来声明,则该变量只能在本窗体来声明,则该变量只能在本窗体来声明,则该变量只能在本窗体( (或本或本或本或本模块模块模块模块) )中有效,在其他窗体或模块中不能引用该变量。中有效,在其他窗体或模块中不能引用该变量。中有效,在其他窗体或模块中不能引用该变量。中有效,在其他窗体或模块中不能引用该变量。 以以以以PublicPublic声明的变量,允许在其他窗体和模块中引用,声明的变量,允许在其他窗体和模块中引用,声明的变量,允许在其他窗体和模块中引用,声明的变量,允许在其他窗体和模块中引用,Form1.nForm1.n

59、 2. 模块级变量模块级变量第第第第7 7章章章章 过程过程过程过程 全局变量要在全局变量要在全局变量要在全局变量要在标准模块标准模块标准模块标准模块文件文件文件文件(.bas)(.bas)中的中的中的中的通用声明通用声明通用声明通用声明部分用部分用部分用部分用GlobalGlobal或或或或PublicPublic语句来声明。语句来声明。语句来声明。语句来声明。 全局变量可以被应用程序中任何一个窗体和模块直接访问。全局变量可以被应用程序中任何一个窗体和模块直接访问。全局变量可以被应用程序中任何一个窗体和模块直接访问。全局变量可以被应用程序中任何一个窗体和模块直接访问。 格式:格式:格式:格式

60、: Global Global 变量名变量名变量名变量名 As As 数据类型数据类型数据类型数据类型 Public Public 变量名变量名变量名变量名 As As 数据类型数据类型数据类型数据类型 3. 全局变量全局变量第第第第7 7章章章章 过程过程过程过程 生存期,即变量能够保持其值的时间生存期,即变量能够保持其值的时间生存期,即变量能够保持其值的时间生存期,即变量能够保持其值的时间 ,分为,分为,分为,分为动态变量动态变量动态变量动态变量和和和和静态变量静态变量静态变量静态变量 1. 1. 动态变量动态变量动态变量动态变量 程序运行进入变量所在的过程时,才为变量分配内存单元,退程序

61、运行进入变量所在的过程时,才为变量分配内存单元,退程序运行进入变量所在的过程时,才为变量分配内存单元,退程序运行进入变量所在的过程时,才为变量分配内存单元,退出过程时,该变量占用的内存单元自动释放,其值消失。当再次进出过程时,该变量占用的内存单元自动释放,其值消失。当再次进出过程时,该变量占用的内存单元自动释放,其值消失。当再次进出过程时,该变量占用的内存单元自动释放,其值消失。当再次进入该过程时,所有的动态变量将重新初始化。入该过程时,所有的动态变量将重新初始化。入该过程时,所有的动态变量将重新初始化。入该过程时,所有的动态变量将重新初始化。 使用使用使用使用DimDimDimDim关键字关

62、键字关键字关键字在过程中声明的局部变量属于动态变量在过程中声明的局部变量属于动态变量在过程中声明的局部变量属于动态变量在过程中声明的局部变量属于动态变量 2. 2. 静态变量静态变量静态变量静态变量 退出该过程时变量值被保留,即变量所占的内存单元没有释放。退出该过程时变量值被保留,即变量所占的内存单元没有释放。退出该过程时变量值被保留,即变量所占的内存单元没有释放。退出该过程时变量值被保留,即变量所占的内存单元没有释放。当以后再次进入该过程时,原来的变量值可以继续使用当以后再次进入该过程时,原来的变量值可以继续使用当以后再次进入该过程时,原来的变量值可以继续使用当以后再次进入该过程时,原来的变

63、量值可以继续使用 使用使用使用使用StaticStatic关键字关键字关键字关键字在过程中声明的局部变量属于静态变量在过程中声明的局部变量属于静态变量在过程中声明的局部变量属于静态变量在过程中声明的局部变量属于静态变量变量的生存期 Private Sub Command1_Click( ) Dim a As Integer a是动态变是动态变量量 Static b As Integer b是静态变量是静态变量 a = a + 1 每次进入过程每次进入过程时时 a值为值为0 b = b + 1 每次进入过程每次进入过程时时 b保持上次的值保持上次的值 End Sub第第第第7 7章章章章 过程过

64、程过程过程静态变量(局部变量)用用DimDim声明的变量声明的变量 :每次调用都对变量重新初始化;:每次调用都对变量重新初始化;过程体结束,变量的内容自动消失,存储单元释放。过程体结束,变量的内容自动消失,存储单元释放。用用Static Static 声明的变量声明的变量 :过程体结束后,不释放存储单:过程体结束后,不释放存储单元。每次调用过程,变量保持原来的值。其声明形式元。每次调用过程,变量保持原来的值。其声明形式为:为: Private Sub Command1_Click( ) Private Sub Command1_Click( ) Static Static 变量名变量名变量名变

65、量名 AS AS 类型类型类型类型 局部静态变量局部静态变量 End Sub End Sub第第第第7 7章章章章 过程过程过程过程静态变量(局部变量)Static Function Static Function 函数名函数名函数名函数名( (参数列表参数列表参数列表参数列表) As ) As 类型类型类型类型 Static Sub Static Sub 子过程名子过程名子过程名子过程名( (参数列表参数列表参数列表参数列表) )说明说明:过程名前加过程名前加StaticStatic,表示该过程内的局,表示该过程内的局部变量都是静态变量。部变量都是静态变量。第第第第7 7章章章章 过程过程过

66、程过程Static Sub Subtest()Static Sub Subtest() Dim t As Integer Dim t As Integer t=2*t+1 t=2*t+1 Print t Print tEnd SubEnd SubPrivate Sub Command1_Click()Private Sub Command1_Click() Call SubtestCall SubtestEnd SubEnd Sub运行后,运行后,3次单击命令按钮,次单击命令按钮,执行结果为:执行结果为:137 例例7.6 Static Sub语句示例语句示例将将Static SubStati

67、c Sub改为改为改为改为Private Private SubSub,运行后,运行后,3次单击命令次单击命令按钮,执行结果为:按钮,执行结果为:111PrivatePrivate第第第第7 7章章章章 过程过程过程过程在窗体模块的在窗体模块的在窗体模块的在窗体模块的“ “通用声明通用声明通用声明通用声明” ”段中以段中以段中以段中以PublicPublic声明的变量,允许声明的变量,允许声明的变量,允许声明的变量,允许在其他窗体和模块中引用,格式为:在其他窗体和模块中引用,格式为:在其他窗体和模块中引用,格式为:在其他窗体和模块中引用,格式为:Form1.nForm1.n第第第第7 7章章章

68、章 过程过程过程过程过程的作用域 窗体窗体/ /模块级模块级:加:加PrivatePrivate关键字的过程,只能在被关键字的过程,只能在被定义的本窗体或本模块的任何过程中调用。定义的本窗体或本模块的任何过程中调用。全局级全局级:加:加PublicPublic关键字(缺省)的过程,可供该关键字(缺省)的过程,可供该应用程序的所有窗体和所有标准模块中的过程调用。应用程序的所有窗体和所有标准模块中的过程调用。第第第第7 7章章章章 过程过程过程过程例 设计两个窗体,编写两段程序代码,验证全设计两个窗体,编写两段程序代码,验证全局级过程与窗体级过程的不同。局级过程与窗体级过程的不同。 Private

69、第第第第7 7章章章章 过程过程过程过程第第第第7 7章章章章 过程过程过程过程 多窗体处理多窗体处理 在多窗体程序中,每个窗体可以有自己的界面和程序代码,完在多窗体程序中,每个窗体可以有自己的界面和程序代码,完在多窗体程序中,每个窗体可以有自己的界面和程序代码,完在多窗体程序中,每个窗体可以有自己的界面和程序代码,完成不同的操作成不同的操作成不同的操作成不同的操作 1. 1. 添加窗体添加窗体添加窗体添加窗体 通过通过通过通过“ “工程工程工程工程” ”菜单中的菜单中的菜单中的菜单中的“ “添加窗体添加窗体添加窗体添加窗体” ”命令来实现命令来实现命令来实现命令来实现 2. 2. 删除窗体删

70、除窗体删除窗体删除窗体 选择选择选择选择“ “工程工程工程工程” ”菜单中的菜单中的菜单中的菜单中的“ “移除移除移除移除” ”命令命令命令命令 3. 3. 保存窗体保存窗体保存窗体保存窗体 选择选择选择选择“ “文件文件文件文件” ”菜单中的菜单中的菜单中的菜单中的“ “保存保存保存保存” ”或或或或“ “另存为另存为另存为另存为” ”命令命令命令命令 4. 4. 设置启动窗体设置启动窗体设置启动窗体设置启动窗体 在在在在“ “工程工程工程工程/ /工程属性工程属性工程属性工程属性” ”对话框中设置对话框中设置对话框中设置对话框中设置 多窗体与Sub Main过程第第第第7 7章章章章 过程

71、过程过程过程(1) Load(1) Load语句语句语句语句 格式:格式:Load Load 窗体名称窗体名称窗体名称窗体名称 例如:例如:例如:例如:Load Form2Load Form2 功能:将一个窗体装入内存。功能:将一个窗体装入内存。 说明:此时仅能引用窗体中的控件及各种属性,说明:此时仅能引用窗体中的控件及各种属性,但运行时窗体并不显示到屏幕上。但运行时窗体并不显示到屏幕上。(2) UnLoad(2) UnLoad语句语句语句语句 格式:格式:UnLoad UnLoad 窗体名称窗体名称窗体名称窗体名称 功能:清除内存中的窗体。功能:清除内存中的窗体。 有关语句和方法有关语句和方

72、法 第第第第7 7章章章章 过程过程过程过程(3) Show(3) Show方法方法方法方法 格式格式:窗体名称:窗体名称:窗体名称:窗体名称.Show.Show 例如:例如:例如:例如: Form2.ShowForm2.Show 功能:将一个窗体装入内存,并在屏幕上显示。功能:将一个窗体装入内存,并在屏幕上显示。(4) Hide(4) Hide方法方法方法方法 格式:格式:窗体名称窗体名称窗体名称窗体名称.Hide.Hide 功能:隐藏指定的窗体,即不在屏幕上显示,但仍保功能:隐藏指定的窗体,即不在屏幕上显示,但仍保存在内存中,因此它与存在内存中,因此它与UnLoadUnLoad的作用是不一

73、样的。的作用是不一样的。 有关语句和方法有关语句和方法 第第第第7 7章章章章 过程过程过程过程 创建创建创建创建3 3个窗体和个窗体和个窗体和个窗体和1 1个标准模块个标准模块个标准模块个标准模块 (1)(1)主窗体主窗体主窗体主窗体(Form1)(Form1) 本窗体上建立了本窗体上建立了本窗体上建立了本窗体上建立了“ “输入数据输入数据输入数据输入数据”(Command11) ”(Command11) 、“ “计算计算计算计算” ” (Command12) (Command12)和和和和“ “结束结束结束结束”(Command13)”(Command13)三个命令按钮三个命令按钮三个命令

74、按钮三个命令按钮 设置为启动窗体设置为启动窗体设置为启动窗体设置为启动窗体例例7.7 7.7 多窗体应用示例多窗体应用示例 计算两数之和及积计算两数之和及积启动启动窗体窗体主窗体主窗体输入两个数输入两个数计算计算定义全局变量定义全局变量第第第第7 7章章章章 过程过程过程过程Private Sub Command11_Click()Private Sub Command11_Click() 主窗体主窗体主窗体主窗体“ “输入数据输入数据输入数据输入数据” ”按钮按钮按钮按钮 Form1.Hide Form1.Hide 隐藏主窗体隐藏主窗体隐藏主窗体隐藏主窗体 Form2.Show Form2.

75、Show 显示显示显示显示“ “输入数据输入数据输入数据输入数据” ”窗体窗体窗体窗体End SubEnd SubPrivate Sub Command12_Click()Private Sub Command12_Click() 主窗体主窗体主窗体主窗体“ “计算计算计算计算” ”按钮按钮按钮按钮 Form1.Hide Form1.Hide 隐藏主窗体隐藏主窗体隐藏主窗体隐藏主窗体 Form3.Show Form3.Show 显示显示显示显示“ “计算计算计算计算” ”窗体窗体窗体窗体End SubEnd SubPrivate Sub Command13_Click()Private Sub

76、 Command13_Click() 主窗体主窗体主窗体主窗体“ “结束结束结束结束” ”按钮按钮按钮按钮 Unload Form1 Unload Form1 Unload Form2 Unload Form2 Unload Form3 Unload Form3 End EndEnd SubEnd Sub先卸载所有已先卸载所有已打开的窗体打开的窗体第第第第7 7章章章章 过程过程过程过程 (2)“(2)“输入数据输入数据输入数据输入数据” ”窗体窗体窗体窗体(Form2)(Form2) 这是在主窗体上单击了这是在主窗体上单击了这是在主窗体上单击了这是在主窗体上单击了“ “输入数据输入数据输入数

77、据输入数据” ”按钮后弹出的窗体,用按钮后弹出的窗体,用按钮后弹出的窗体,用按钮后弹出的窗体,用于输入运算数于输入运算数于输入运算数于输入运算数x x和和和和y y。窗体上建立了。窗体上建立了。窗体上建立了。窗体上建立了2 2个文本框个文本框个文本框个文本框( (Text21Text21和和和和Text22Text22) )和和和和1 1个个个个“ “返回返回返回返回” ”命令按钮命令按钮命令按钮命令按钮(Command21) (Command21) Text21Text22第第第第7 7章章章章 过程过程过程过程 (2)“(2)“输入数据输入数据输入数据输入数据” ”窗体窗体窗体窗体(For

78、m2)(Form2)代码:代码:代码:代码: Private Sub Command21_Click()Private Sub Command21_Click() “输入数据输入数据输入数据输入数据” ”窗体的窗体的窗体的窗体的“ “返回返回返回返回” ”按钮按钮按钮按钮 X = Val(Text21.Text) X = Val(Text21.Text) Y = Val(Text22.Text) Y = Val(Text22.Text) Form2.Hide Form2.Hide 隐藏隐藏隐藏隐藏“ “输入数据输入数据输入数据输入数据” ”窗体窗体窗体窗体 Form1.Show Form1.S

79、how 显示主窗体显示主窗体显示主窗体显示主窗体 End Sub End Sub第第第第7 7章章章章 过程过程过程过程 (3)“(3)“计算计算计算计算” ”窗体窗体窗体窗体(Form3)(Form3) Private Sub Command31_Click()Private Sub Command31_Click() “计算计算计算计算” ”窗体的窗体的窗体的窗体的“ “加法加法加法加法” ”按钮按钮按钮按钮 Text31.Text = X + Y Text31.Text = X + YEnd SubEnd SubPrivate Sub Command32_Click()Private S

80、ub Command32_Click() “计算计算计算计算” ”窗体的窗体的窗体的窗体的“ “乘法乘法乘法乘法” ”按钮按钮按钮按钮 Text31.Text = X * Y Text31.Text = X * YEnd SubEnd SubPrivate Sub Command33_Click()Private Sub Command33_Click() “计算计算计算计算” ”窗体的窗体的窗体的窗体的“ “返回返回返回返回” ”按钮按钮按钮按钮 Form3.Hide Form3.Hide 隐藏隐藏隐藏隐藏“ “计算计算计算计算” ”窗体窗体窗体窗体 Form1.Show Form1.Sho

81、w 显示主窗体显示主窗体显示主窗体显示主窗体End SubEnd SubText31第第第第7 7章章章章 过程过程过程过程 (4)(4)标准模块标准模块标准模块标准模块(Modulel)(Modulel) 由于在各窗体之间需要使用公共变量来传送数据,所以建立由于在各窗体之间需要使用公共变量来传送数据,所以建立由于在各窗体之间需要使用公共变量来传送数据,所以建立由于在各窗体之间需要使用公共变量来传送数据,所以建立一个标准模块一个标准模块一个标准模块一个标准模块ModulelModulel,对用到的,对用到的,对用到的,对用到的全局变量全局变量全局变量全局变量X X和和和和Y Y进行声明进行声明

82、进行声明进行声明 第第第第7 7章章章章 过程过程过程过程 程序一般从程序一般从程序一般从程序一般从启动窗体的启动窗体的启动窗体的启动窗体的Form_LoadForm_Load过程过程过程过程开始执行开始执行开始执行开始执行 有时在程序启动时不加载任何窗体,而是首先执行一段程序有时在程序启动时不加载任何窗体,而是首先执行一段程序有时在程序启动时不加载任何窗体,而是首先执行一段程序有时在程序启动时不加载任何窗体,而是首先执行一段程序代码,此时可把要执行的程序代码放在代码,此时可把要执行的程序代码放在代码,此时可把要执行的程序代码放在代码,此时可把要执行的程序代码放在Sub MainSub Mai

83、n过程中,并指定过程中,并指定过程中,并指定过程中,并指定Sub MainSub Main为为为为“ “启动对象启动对象启动对象启动对象” ”。 应用程序在运行时会先执行应用程序在运行时会先执行应用程序在运行时会先执行应用程序在运行时会先执行Sub MainSub Main过程过程过程过程 Sub Main Sub Main过程存放在标准模块中。在一个工程中只能有一过程存放在标准模块中。在一个工程中只能有一过程存放在标准模块中。在一个工程中只能有一过程存放在标准模块中。在一个工程中只能有一个个个个Sub MainSub Main过程过程过程过程 设置设置设置设置Sub MainSub Main

84、过程为过程为过程为过程为“ “启动对象启动对象启动对象启动对象” ”的方法:的方法:的方法:的方法:在在在在“ “工程属性工程属性工程属性工程属性” ”对话框的对话框的对话框的对话框的“ “通用通用通用通用” ”选项卡中,从选项卡中,从选项卡中,从选项卡中,从“ “启动对象启动对象启动对象启动对象” ”下拉列表框中选中下拉列表框中选中下拉列表框中选中下拉列表框中选中“Sub Main”“Sub Main”Sub MainSub Main过程过程第第第第7 7章章章章 过程过程过程过程 创建创建创建创建2 2个窗体和个窗体和个窗体和个窗体和1 1个标准模块个标准模块个标准模块个标准模块 例例7.

85、8 7.8 Sub Main Sub Main 过程示例过程示例第第第第7 7章章章章 过程过程过程过程第第第第7 7章章章章 过程过程过程过程标准模块 标准模块是独立于窗体的程序单位,其扩展名标准模块是独立于窗体的程序单位,其扩展名为为.bas.bas。1. 1. 全局变量声明全局变量声明 使用使用使用使用PublicPublicPublicPublic关键词对变量和常量进行声明,其作关键词对变量和常量进行声明,其作关键词对变量和常量进行声明,其作关键词对变量和常量进行声明,其作用域为整个工程。用域为整个工程。用域为整个工程。用域为整个工程。2. 2. 模块级变量声明模块级变量声明 用用用用

86、DimDimDimDim关键词声明的变量和常量,其有效范围仅关键词声明的变量和常量,其有效范围仅关键词声明的变量和常量,其有效范围仅关键词声明的变量和常量,其有效范围仅限于本模块内。限于本模块内。限于本模块内。限于本模块内。3. 3. 通用过程通用过程 用户自定义的子程序和函数。一般用用户自定义的子程序和函数。一般用用户自定义的子程序和函数。一般用用户自定义的子程序和函数。一般用PublicPublicPublicPublic关键关键关键关键词声明的通用过程和词声明的通用过程和词声明的通用过程和词声明的通用过程和Sub MainSub MainSub MainSub Main过程放在标准模块中

87、。过程放在标准模块中。过程放在标准模块中。过程放在标准模块中。 第第第第7 7章章章章 过程过程过程过程 例例例例7.97.9 将判断一个数是否为素数编成一个函数,然后通过调将判断一个数是否为素数编成一个函数,然后通过调将判断一个数是否为素数编成一个函数,然后通过调将判断一个数是否为素数编成一个函数,然后通过调用该函数求用该函数求用该函数求用该函数求50050010001000数中的所有素数,把这些素数显示在列表数中的所有素数,把这些素数显示在列表数中的所有素数,把这些素数显示在列表数中的所有素数,把这些素数显示在列表框中。框中。框中。框中。 (1) (1)分析:素数也称质数,就是只能被分析:

88、素数也称质数,就是只能被分析:素数也称质数,就是只能被分析:素数也称质数,就是只能被1 1和它本身整除,而不和它本身整除,而不和它本身整除,而不和它本身整除,而不能被其他整数整除的整数。例如能被其他整数整除的整数。例如能被其他整数整除的整数。例如能被其他整数整除的整数。例如 2 2,3 3,5 5,7 7 是质数,而是质数,而是质数,而是质数,而 4 4,6 6,8 8,9 9 则不是。判断某数则不是。判断某数则不是。判断某数则不是。判断某数mm是否是素数的算法是:对于是否是素数的算法是:对于是否是素数的算法是:对于是否是素数的算法是:对于mm,从,从,从,从k = 2k = 2,3 3,4

89、4,m-1m-1依次判别能否被依次判别能否被依次判别能否被依次判别能否被k k整除,只要有一个能整除,整除,只要有一个能整除,整除,只要有一个能整除,整除,只要有一个能整除,mm就不是素数,否则就不是素数,否则就不是素数,否则就不是素数,否则mm是素数。是素数。是素数。是素数。 7.6 程序举例程序举例列表框列表框List1List1标签标签Label1Label1命令按钮命令按钮Command1Command1第第第第7 7章章章章 过程过程过程过程Private Sub Command1_Click()Private Sub Command1_Click() 求素数求素数求素数求素数 按钮

90、按钮按钮按钮 Dim t As Integer Dim t As Integer List1.Clear List1.Clear 清除列表框中的内清除列表框中的内清除列表框中的内清除列表框中的内容容容容 For t = 500 To 1000 For t = 500 To 1000 If FnPrime(t) Then If FnPrime(t) Then 根据根据根据根据t t是否素数返回是否素数返回是否素数返回是否素数返回函函函函 数值真或假数值真或假数值真或假数值真或假 List1.AddItem t List1.AddItem t 若是素数,则存入列表若是素数,则存入列表若是素数,则存

91、入列表若是素数,则存入列表框中框中框中框中 End If End If Next t Next t Label1.Caption = 500 Label1.Caption = 50010001000数中共有数中共有数中共有数中共有 & List1.ListCount & & List1.ListCount & 个素数个素数个素数个素数 End SubEnd Sub第第第第7 7章章章章 过程过程过程过程Function FnPrime(m As Integer) As BooleanFunction FnPrime(m As Integer) As Boolean Dim k As Integ

92、er, f As Boolean Dim k As Integer, f As Boolean f = True f = True 设置设置设置设置f f来表示判断状态,初值为来表示判断状态,初值为来表示判断状态,初值为来表示判断状态,初值为TrueTrue For k = 2 To m - 1 For k = 2 To m - 1 If m Mod k = 0 Then If m Mod k = 0 Then f = False f = False End If End If Next k Next k FnPrime = f FnPrime = f 返回函数值返回函数值返回函数值返回函数值

93、End FunctionEnd Function第第第第7 7章章章章 过程过程过程过程 在窗体上建立在窗体上建立在窗体上建立在窗体上建立3 3个文本框,使之以不同效果显示文字个文本框,使之以不同效果显示文字个文本框,使之以不同效果显示文字个文本框,使之以不同效果显示文字“ “20082008年世界奥运会将在中国北京市举行年世界奥运会将在中国北京市举行年世界奥运会将在中国北京市举行年世界奥运会将在中国北京市举行” ” 第一个文本框第一个文本框第一个文本框第一个文本框Text1Text1从左到右逐字显示,直到把整行文字显从左到右逐字显示,直到把整行文字显从左到右逐字显示,直到把整行文字显从左到右

94、逐字显示,直到把整行文字显示出来;示出来;示出来;示出来; 第二个文本框第二个文本框第二个文本框第二个文本框Text2Text2使文字从左到右作水平移动;使文字从左到右作水平移动;使文字从左到右作水平移动;使文字从左到右作水平移动; 第三个文本框第三个文本框第三个文本框第三个文本框Text3Text3以闪动方式显示文字以闪动方式显示文字以闪动方式显示文字以闪动方式显示文字 设计阶段设计阶段设计阶段设计阶段 运行阶段运行阶段运行阶段运行阶段 例例7.117.11 动态文字动态文字第第第第7 7章章章章 过程过程过程过程Dim txt As String, n As Integer, k As I

95、ntegerDim txt As String, n As Integer, k As IntegerPrivate Sub Form_Load()Private Sub Form_Load() n = 0 n = 0 txt = txt = 年世界奥运会将在中国北京市举行年世界奥运会将在中国北京市举行年世界奥运会将在中国北京市举行年世界奥运会将在中国北京市举行 k = Len(txt) k = Len(txt) Text1.ForeColor = RGB(255, 0, 0) Text1.ForeColor = RGB(255, 0, 0) 红色红色红色红色 Text2.ForeColor

96、= RGB(0, 0, 0) Text2.ForeColor = RGB(0, 0, 0) 黑色黑色黑色黑色 Text3.ForeColor = RGB(0, 0, 255) Text3.ForeColor = RGB(0, 0, 255) 蓝色蓝色蓝色蓝色End SubEnd Sub第第第第7 7章章章章 过程过程过程过程Private Sub Timer1_Timer()Private Sub Timer1_Timer() n = n + 1 n = n + 1 模块级变量模块级变量模块级变量模块级变量n n是关键参是关键参是关键参是关键参数数数数 If n = k Then If n =

97、 k Then Text1.Text = Left(txt, n) Text1.Text = Left(txt, n) 逐次取逐次取逐次取逐次取n n个汉字,个汉字,个汉字,个汉字,n n每次加每次加每次加每次加 1 1 Text2.Text = Space(2 * (k - n) + Left(txt, n) Text2.Text = Space(2 * (k - n) + Left(txt, n) Else Else n = 0 n = 0 Text1.Text = Text1.Text = Text2.Text = Text2.Text = End If End If If n Mod

98、2 = 0 Then If n Mod 2 = 0 Then 以以以以2 2个定时时间为个定时时间为个定时时间为个定时时间为1 1个周期,显示及个周期,显示及个周期,显示及个周期,显示及清除交替进行清除交替进行清除交替进行清除交替进行 Text3.Text = txt Text3.Text = txt nn为偶数时显示为偶数时显示为偶数时显示为偶数时显示 Else Else Text3.Text = Text3.Text = nn为奇数时清除为奇数时清除为奇数时清除为奇数时清除 End If End IfEnd SubEnd Sub每次减少每次减少2空格空格1个汉字占个汉字占2个字符位置个字符位置每次增加每次增加1个汉字个汉字

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号