第6章过程的使用课件.ppt

上传人(卖家):晟晟文业 文档编号:3861364 上传时间:2022-10-19 格式:PPT 页数:67 大小:417.30KB
下载 相关 举报
第6章过程的使用课件.ppt_第1页
第1页 / 共67页
第6章过程的使用课件.ppt_第2页
第2页 / 共67页
第6章过程的使用课件.ppt_第3页
第3页 / 共67页
第6章过程的使用课件.ppt_第4页
第4页 / 共67页
第6章过程的使用课件.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

1、第第6章章 过程的使用过程的使用 6.1 Visual Basic的工程 6.2 过程 6.3 过程的调用 6.4 参数的传递 6.5 递归过程 6.6 变量的作用范围 6.7 过程的作用范围 6.8 Shell函数 6.9 程序举例6.1 Visual Basic6.1 Visual Basic的工程的工程6.1.1 Visual Basic的文件类型的文件类型1466.1.2 工程的组成工程的组成1476.1.3 管理工程管理工程1486.1.1 VB的文件类型的文件类型1.1.工程文件(工程文件(.vbp.vbp)工程文件(工程文件(.vbp.vbp)包含了组成应用程序的所有窗体文件)包

2、含了组成应用程序的所有窗体文件(.frm.frm)、标准模块文件()、标准模块文件(.bas.bas)、类模块文件()、类模块文件(.cls.cls)及其)及其他文件,也包含了环境设置方面的信息。他文件,也包含了环境设置方面的信息。2 2窗体文件(窗体文件(.frm.frm)窗体文件包含本模块中窗体、控件的描述和属性设置,也窗体文件包含本模块中窗体、控件的描述和属性设置,也包含窗体级的常量、变量、外部过程的声明,以及事件过程和包含窗体级的常量、变量、外部过程的声明,以及事件过程和通用过程的程序代码。通用过程的程序代码。(快讲)(快讲)6.1.1 VB的文件类型的文件类型3 3窗体的二进制数据文

3、件(窗体的二进制数据文件(.frx.frx)窗体的二进制数据文件含有窗体上控件的二进制属性数据,窗体的二进制数据文件含有窗体上控件的二进制属性数据,以二进制数为其值。以二进制数为其值。4 4标准模块文件(标准模块文件(.bas.bas)标准模块文件用于存放在几个模块中都要使用的公共代码,标准模块文件用于存放在几个模块中都要使用的公共代码,包含常量、变量、类型和过程的声明,以及通用过程代码。包含常量、变量、类型和过程的声明,以及通用过程代码。5 5类模块文件(类模块文件(.cls.cls)类模块用于建立新对象,这些新对象可以包含自定义的属类模块用于建立新对象,这些新对象可以包含自定义的属性和方法

4、,类模块既包含代码又包含数据,可以被应用程序内性和方法,类模块既包含代码又包含数据,可以被应用程序内的过程调用。的过程调用。6.1.2 工程的组成工程的组成 VB应用程序应用程序(.vbp文件)文件)标准模块(标准模块(.bas文件)文件)至少一个窗体模块至少一个窗体模块(.frm文件)文件)Sub过程过程类模块(类模块(.cls文件)文件)函数过程函数过程Function()事件过程事件过程Sub过程过程函数过程函数过程Function()图图 VB应用程序的组成应用程序的组成6.1.2 工程的组成工程的组成1.窗体模块(窗体模块(.frm)窗体模块包含事件过程和通用过程,通用过程又分为窗体

5、模块包含事件过程和通用过程,通用过程又分为Sub过程和过程和Function过程。过程。2.标准模块(标准模块(.bas)标准模块没有界面只有程序代码,包含通用过程的标准模块没有界面只有程序代码,包含通用过程的Sub过程和过程和Function过程。过程。3.类模块(类模块(.cls)类模块用于建立新对象,这些新对象可以包含自定义的类模块用于建立新对象,这些新对象可以包含自定义的属性和方法,类模块既包含代码又包含数据,它可以被应属性和方法,类模块既包含代码又包含数据,它可以被应用程序内的过程调用。用程序内的过程调用。6.1.3 管理工程管理工程1.保存工程保存工程(1)保存工程)保存工程(2)

6、生成)生成exe文件文件工程资源管理器工程资源管理器6.1.3 管理工程管理工程 2.设置工程属性设置工程属性 选择选择“工程工程”菜单菜单“工程属性工程属性”菜单项则出现菜单项则出现“工程属工程属性性”对话框对话框,设置工程属性选项。,设置工程属性选项。启动对象启动对象工程类型工程类型工程名称工程名称帮助文件名帮助文件名工程帮助上下文工程帮助上下文 ID工程描述工程描述工程属性设置工程属性设置6.1.3 管理工程管理工程 3.添加工程添加工程 在已建的工程环境中通过添加新的或现有的工程构成工在已建的工程环境中通过添加新的或现有的工程构成工程组。当装入了多个工程时,工程资源管理器窗口的标题就程

7、组。当装入了多个工程时,工程资源管理器窗口的标题就变成变成“工程组工程组”。添加新工程:添加新工程:添加现有工程:添加现有工程:4.删除工程删除工程 在工程资源管理器窗口中选择需删除的工程名,选择在工程资源管理器窗口中选择需删除的工程名,选择“文文件件”菜单菜单“删除工程删除工程”菜单项,则从工程组中删除该工程。菜单项,则从工程组中删除该工程。5.向工程中添加和删除文件向工程中添加和删除文件 可以向工程中添加窗体、模块、属性页和用户控件等文件,可以向工程中添加窗体、模块、属性页和用户控件等文件,选择选择“工程工程”菜单的下拉菜单的各种添加命令向工程中添加菜单的下拉菜单的各种添加命令向工程中添加

8、文件。文件。6.2 过程过程 一个过程就是一段程序,一个模块由多个过一个过程就是一段程序,一个模块由多个过程组成,一个应用程序通过过程间的相互调用构程组成,一个应用程序通过过程间的相互调用构成。成。6.2.1 Sub过程过程 6.2.2 Function过程过程6.2.1 Sub过程过程 Vb中的中的sub过程有两种:事件过程和通用过程。过程有两种:事件过程和通用过程。1事件过程事件过程v事件事件是能够被对象(窗体和控件)识别的动作。是能够被对象(窗体和控件)识别的动作。v事件过程事件过程由由vb自行声明,为一个事件所编写的程自行声明,为一个事件所编写的程序代码事件过程。序代码事件过程。v事件

9、过程分为窗体事件过程和控件事件过程。事件过程分为窗体事件过程和控件事件过程。6.2.1 Sub过程过程语法:语法:Private Sub Form_事件名事件名(参数列表参数列表)局部变量和常数声明局部变量和常数声明语句块语句块End Sub说明:说明:v不管窗体是什么名字,但在事件过程中都使用不管窗体是什么名字,但在事件过程中都使用“Form _事事件名件名”。v窗体过程前面的声明都是窗体过程前面的声明都是Private,表示这个窗体过程只能,表示这个窗体过程只能在窗体模块中使用。在窗体模块中使用。v在在Sub和和End Sub之间的语句块,称为程序体或过程体。之间的语句块,称为程序体或过程

10、体。1事件过程事件过程(1)窗体事件过程窗体事件过程6.2.1 Sub过程过程语法:语法:Private Sub 控件名控件名_事件名事件名(参数列表参数列表)局部变量和常数声明局部变量和常数声明语句块语句块End Sub(2)控件事件过程)控件事件过程控件的事件过程名定义为控件的事件过程名定义为“控件名控件名_事件名事件名”。6.2.1 Sub过程过程(1)定义定义Private|Public Static Sub 过程名过程名(参数列表参数列表)局部变量和常数声明局部变量和常数声明语句块语句块Exit Sub语句块语句块End Sub2.通用过程通用过程 Sub过程不能嵌套定义,但是可以嵌

11、套调用。过程不能嵌套定义,但是可以嵌套调用。6.2.1 Sub过程过程参数列表参数列表:类似于变量声明,列出了从调用过程传递来的:类似于变量声明,列出了从调用过程传递来的参数值,称为形式参数(简称形参),多个形参之间则用参数值,称为形式参数(简称形参),多个形参之间则用逗号隔开,形参的定义如下:逗号隔开,形参的定义如下:ByVal|ByRef 变量名变量名()As 数据类型数据类型 部部 分分描描 述述ByVal表示该参数按值传递。表示该参数按值传递。ByRef表示该参数按地址传递(默认)。表示该参数按地址传递(默认)。变量名变量名()代表参数的变量名称。代表参数的变量名称。数据类型数据类型用

12、于说明传递给该过程的参数数据类型,默认为用于说明传递给该过程的参数数据类型,默认为Variant。可以是。可以是Byte、Boolean、Integer、Long、Currency、String、Single、Double、Date或或Object。形形 式式 参参 数数 表表6.2.1 Sub过程过程 (2)建立通用过程)建立通用过程 创建通用过程的方法有两种:一是创建通用过程的方法有两种:一是利用利用“工具工具-添加过程添加过程”对话框,二是在代码窗口中直接输入。对话框,二是在代码窗口中直接输入。添加过程对话框添加过程对话框6.2.1 Sub过程过程例如:例如:Public Sub sub

13、1()Form2.Show Form1.HideEnd Sub6.2.2 Function过程过程 Function过程与过程与Sub过程的区别:过程的区别:Function过程可以返回一过程可以返回一个值到调用的过程。个值到调用的过程。1.函数定义函数定义语法:语法:Private|Public Static Function 函数名函数名(参数列表参数列表)As 数据类型数据类型局部变量和常数声明局部变量和常数声明函数名函数名=表达式表达式Exit Function语句块语句块函数名函数名=表达式表达式 End Function6.2.2 Function过程过程2.建立函数过程建立函数过

14、程 建立函数过程的方法与建立通用过程的方法相同,选择建立函数过程的方法与建立通用过程的方法相同,选择“工具工具”菜单的菜单的“添加过程添加过程”菜单项,然后在菜单项,然后在“添加过程添加过程”对话框中输入过程名,在对话框中输入过程名,在“类型类型”选项中选项中“函数函数”类型。类型。添添 加加 过过 程程 对对 话话 框框6.2.2 Function过程过程【例】计算圆面积的【例】计算圆面积的Function过程过程cir:Function cir(r As Single)As Single Const pi As Single=3.1415926 cir=pi*r 2End Function

15、6.3 过程的调用过程的调用6.3.1 调用调用Sub过程过程6.3.2 调用调用Function过程过程6.3.1 调用调用 Sub过程过程 调用调用Sub过程的两种方法:过程的两种方法:1使用使用Call语句调用过程语句调用过程 Call语句的格式为:语句的格式为:Call 过程名过程名 (实在参数表列实在参数表列)2.将过程名作为语句使用(直接使用过程名)将过程名作为语句使用(直接使用过程名)如果省略如果省略 Call 关键字而直接将过程名作为语句使用,关键字而直接将过程名作为语句使用,也必须省略也必须省略实在参数表列实在参数表列 外面的括号,参数和过程名用外面的括号,参数和过程名用空格

16、隔开。空格隔开。过程名过程名 实在参数表列实在参数表列6.3.1 调用调用 Sub过程过程1.调用调用Sub 事件过程事件过程Sub 事件过程可以由事件自动事件过程可以由事件自动调用或者在同一模块中的其它调用或者在同一模块中的其它过程中使用调用语句来调用。过程中使用调用语句来调用。Private Sub Form_Click()Call Command1_ClickEnd Sub或者:或者:Private Sub Form_Click()Command1_ClickEnd Sub例例6-1Sub调用调用Command1_Click过程过程End SubSubEnd Sub调用调用返回返回For

17、m_Click过程过程调用事件过程调用事件过程Command1_Click过程过程6.3.1 调用调用 Sub过程过程2.调用调用Sub 通用过程通用过程 调用调用Sub 通用过程的语法与调用通用过程的语法与调用Sub 事件过程相同。不事件过程相同。不同的是,通用过程只有在被调用时才起作用,否则不会被同的是,通用过程只有在被调用时才起作用,否则不会被执行。执行。Public Sub sub1()Form2.Show Form1.HideEnd SubPrivate Sub Form_Click()Call Sub1End Sub6.3.2 调用调用Function过程过程 调用函数调用函数Fu

18、nction过程的方法和调用过程的方法和调用 VB 内部函数方法内部函数方法一样,在语句中直接使用函数名,一样,在语句中直接使用函数名,Function 过程可返回一个过程可返回一个值到调用的过程。值到调用的过程。【例【例61】运行界面】运行界面【例【例62】运行界面】运行界面6.4 参数的传递参数的传递 在调用一个有参数的过程时,首先进行的是在调用一个有参数的过程时,首先进行的是形参和实参的结合,实现调用过程的实参与被调形参和实参的结合,实现调用过程的实参与被调用过程的形参之间的数据传递。用过程的形参之间的数据传递。6.4.1 形参和实参形参和实参6.4.2 参数按值传递和按地址传递参数按值

19、传递和按地址传递6.4.3 数组参数数组参数6.4.4 对象参数对象参数6.4.1 形参和实参形参和实参1.形参和实参形参和实参 在在Sub过程和过程和Function过过程中,被调过程中的参数是程中,被调过程中的参数是形形参参。形参列表中的各参数之间。形参列表中的各参数之间用用逗号(逗号(,)分隔,形参可以是分隔,形参可以是变量名或数组名,但不能是定变量名或数组名,但不能是定长字符串变量。长字符串变量。实参实参是在主调是在主调过程中的参数,在调用过程时过程中的参数,在调用过程时实参将数据传递给形参。实参将数据传递给形参。形参列表和实参列表中的形参列表和实参列表中的对应变量名可以不同,但实参对

20、应变量名可以不同,但实参和形参的个数、顺序以及数据和形参的个数、顺序以及数据类型必须相同。类型必须相同。否则出错。否则出错。参参 数数 出出 错错6.4.1 形参和实参形参和实参Public Function Function1(ByVal a As Single,ByVal b As Single)As Single 计算直角斜边函数计算直角斜边函数 Dim c As Single c=Sqr(a 2+b 2)Function1=cEnd FunctionPrivate Sub Command1_Click()计算斜边计算斜边 Dim a1 As Single,b1 As Single a1

21、=Val(Text1.Text)b1=Val(Text2.Text)Text3.Text=Function1(a1,b1)End Sub形式参数形式参数实际参数实际参数6.4.1 形参和实参形参和实参2形参的数据类型形参的数据类型(1)实参数据类型与形参定义的数)实参数据类型与形参定义的数据类型不一致据类型不一致 对于实参数据类型与形参定义对于实参数据类型与形参定义的数据类型不一致时,的数据类型不一致时,VB会按要会按要求对实参进行数据类型转换,然后求对实参进行数据类型转换,然后将转换值传递给形参。将转换值传递给形参。(2)没有声明形参的数据类型)没有声明形参的数据类型 运行界面运行界面 在创

22、建过程时,如果没有声明形参在创建过程时,如果没有声明形参的数据类型,则默认为的数据类型,则默认为Variant型。型。6.4.1 形参和实参形参和实参3.使用可选的参数使用可选的参数 VB中被调函数参数列表中的参数也可以是可选的,使中被调函数参数列表中的参数也可以是可选的,使用用Optional 关键字来表示参数可选。关键字来表示参数可选。Private Function Divisor(Optional ByVal x As Variant,Optional ByVal y As Variant)As Integer求最大公约数子函数求最大公约数子函数 Dim r As Integer If

23、 IsMissing(x)Then x=1 If IsMissing(y)Then y=1 r=x Mod y Do While r 0 x=y y=r r=x Mod y Loop Divisor=yEnd Function6.4.1 形参和实参形参和实参 在未提供可选参数时,实际上是将该参数作为在未提供可选参数时,实际上是将该参数作为具有相应数据类型的初始值来赋值,不会出现编译具有相应数据类型的初始值来赋值,不会出现编译错误的提示。错误的提示。如果传递的参数是如果传递的参数是Variant型,可以在过程体中型,可以在过程体中 通过通过IsMissing函数来测试调用时是否传递可选参函数来测

24、试调用时是否传递可选参数。数。6.4.1 形参和实参形参和实参4.使用可变参数使用可变参数 在传递参数时,如果要求参数的数目可以变化,在传递参数时,如果要求参数的数目可以变化,使之可以接收任意多个参数,则在函数过程或使之可以接收任意多个参数,则在函数过程或Sub过程中一般采用如下语法:过程中一般采用如下语法:Sub (,ParamArray )注意注意:ParamArray后面跟后面跟Variant型的数组,型的数组,ParamArray 关键字不能与关键字不能与ByVal、ByRef或或Optional 一起使用。一起使用。6.4.1 形参和实参形参和实参例如:例如:Private Func

25、tion divisor(ParamArray n()通用函数求最大公约通用函数求最大公约 Dim r As Integer If UBound(n)=1 Then x=n(0):y=n(1)ElseIf UBound(n)=0 Then x=n(0):y=1 End If r=x Mod y Do While r 0 x=y y=r r=x Mod y Loop divisor=yEnd Function6.4.2 参数按值传递和按地址传递参数按值传递和按地址传递1.按值传递参数按值传递参数 定义被调过程时形参使用定义被调过程时形参使用ByVal关键字,或调用语句中关键字,或调用语句中的实参

26、是常量或表达式,就是按值传递。的实参是常量或表达式,就是按值传递。ByVal 传值传值实参实参临时单元临时单元形参形参 传值传值就是通过传送实参的值而不是传就是通过传送实参的值而不是传送地址的方法给被调用过程中的形参。系送地址的方法给被调用过程中的形参。系统把需要传送的实参复制到一个临时单元统把需要传送的实参复制到一个临时单元中,然后再把该临时的地址传送给形参。中,然后再把该临时的地址传送给形参。这样,被调用的过程并没有访问实参的地这样,被调用的过程并没有访问实参的地址,因而也就不会改变实参的值。址,因而也就不会改变实参的值。6.4.2 参数按值传递和按地址传递参数按值传递和按地址传递例如,下

27、面都是按值传递:例如,下面都是按值传递:使用使用ByVal关键字定义被调过程形参关键字定义被调过程形参 Private Function Divisor(ByVal x As Integer,ByVal y As Integer)As Integer用常量作为实参用常量作为实参 Result=Divisor(20,50)将变量变成表达式作为实参将变量变成表达式作为实参 把变量转换成表达式的最简单的方法就是把它放在括号内,把变量转换成表达式的最简单的方法就是把它放在括号内,则调用过程的语句为:则调用过程的语句为:Result=Divisor(m),(n)被调过程的定义语句:被调过程的定义语句:P

28、rivate Function Divisor(x As Integer,y As Integer)As Integer6.4.2 参数按值传递和按地址传递参数按值传递和按地址传递2.按地址传递参数按地址传递参数 在定义过程时,如果没有在定义过程时,如果没有ByVal 关键字,默认关键字,默认的是按地址传递参数,或者用的是按地址传递参数,或者用 ByRef 关键字指关键字指定按地址传递。定按地址传递。ByRef传址传址实参实参形参形参 按地址传递参数时,实参和按地址传递参数时,实参和形参共用一段存储单元,修改了形参共用一段存储单元,修改了形参的值就修改了实参的值。形参的值就修改了实参的值。6.

29、4.2 参数按值传递和按地址传递参数按值传递和按地址传递【例【例6-3】(a)运行结果运行结果ab2x1y2z(b)按地址传递按地址传递6.4.2 参数按值传递和按地址传递参数按值传递和按地址传递 按地址传递参数有几点说明:按地址传递参数有几点说明:(1)对于按地址传递的形参,如果)对于按地址传递的形参,如果在过程调用时与之结合的实参是常在过程调用时与之结合的实参是常数或表达式,则数或表达式,则VB会给形参分配一会给形参分配一个临时的内存单元,用按值传递的个临时的内存单元,用按值传递的方法处理。方法处理。(2)当形参和实参数据类型不同)当形参和实参数据类型不同时,按地址传递会提示出错。时,按地

30、址传递会提示出错。(3)按地址传递参数比按值传递参数更节)按地址传递参数比按值传递参数更节省内存空间,程序运行效率更高。省内存空间,程序运行效率更高。编译出错编译出错6.4.3 数组参数数组参数【例【例6-5】程序代码如下:】程序代码如下:Option Base 1Private Sub Command1_Click()单击计算按钮单击计算按钮 Dim Score1(8)As Single,Score2(8)As Single Dim i As Integer,j As Integer 输入分数输入分数 Score1(1)=98:Score2(1)=84 Score1(2)=82:Score2

31、(2)=86 Score1(3)=76:Score2(3)=79 Score1(4)=66:Score2(4)=72 Score1(5)=88:Score2(5)=84 Score1(6)=82:Score2(6)=76 Score1(7)=75:Score2(7)=79 Score1(8)=60:Score2(8)=70 Text1.Text=Int(Average(Score1)*100)/100 Text2.Text=Int(Average(Score2)*100)/100End Sub数组作为参数向过程传递,数数组作为参数向过程传递,数组传递只能是组传递只能是按地址传递按地址传递。6.

32、4.3 数组参数数组参数子函数子函数Average计算平均成绩,形参计算平均成绩,形参s为数组。为数组。Private Function Average(s()As Single)As Single 求平均成绩子函数求平均成绩子函数 Dim i As Integer Dim Aver As Single,Sum As Single For i=1 To 8 Sum=Sum+s(i)Next Aver=Sum/8 Average=AverEnd Function6.4.4 对象参数对象参数 在在VB中对象也可以作为形参,即对象可以作为参数向过中对象也可以作为形参,即对象可以作为参数向过程传递,对

33、象的传递只能是程传递,对象的传递只能是按地址传递按地址传递。对象作为形参变量。对象作为形参变量的类型声明为的类型声明为Control或控件类型。或控件类型。【例【例67】(a)窗体窗体FormCover的运行界面的运行界面 (b)窗体窗体Form1的运行界面的运行界面(自学)(自学)6.5 递归过程递归过程 过程具有递归调用的功能,过程具有递归调用的功能,递归调用递归调用是指在过程中直是指在过程中直接或间接地调用过程本身。递归调用在完成阶乘运算、级接或间接地调用过程本身。递归调用在完成阶乘运算、级数运算、幂指数运算等方面特别有效,很多数学模型和算数运算、幂指数运算等方面特别有效,很多数学模型和

34、算法设计本身就是递归的。法设计本身就是递归的。递归分为两种类型,一种是递归分为两种类型,一种是直接递归直接递归,即在过程中调用,即在过程中调用过程本身;过程本身;一一种是种是间接递归间接递归,即间接地调用一个过程。,即间接地调用一个过程。注意:注意:递归结构构成了另外一种形如循环的结构。递归结构构成了另外一种形如循环的结构。6.5 递归过程递归过程f过程过程调用调用f过程过程过程过程f1调用调用f2过程过程过程过程f2调用调用f1过程过程显然显然:上述例子会无限递归上述例子会无限递归(无限执行无限执行)。所以,在。所以,在递归调用时都有条件限制。递归调用时都有条件限制。即即:条件成立,调用递归

35、,否则结束。条件成立,调用递归,否则结束。6.5 递归过程递归过程过程的嵌套调用:过程的嵌套调用:r主程序主程序srrrs子过程子过程1rst子过程子过程2rst子过程子过程36.5 递归过程递归过程【例【例68】计算阶乘】计算阶乘n!可以表示为:可以表示为:)1()1(*)1(1)(nnnnFunnFun运运 行行 界界 面面6.5 递归过程递归过程5!的运算过程:的运算过程:?5!54!43!32!21!1213246524120逐层调用逐层调用逐层返回逐层返回到达终止条件,逐层调用结束到达终止条件,逐层调用结束6.6 变量的作用范围变量的作用范围6.6.1 过程级、模块级和全局变量过程级

36、、模块级和全局变量6.6.2 静态变量静态变量6.6.3 使用同名的变量使用同名的变量6.6.1 过程级、模块级和全局变量过程级、模块级和全局变量1过程级变量过程级变量 过程级变量是在过程中声明的也称为过程级变量是在过程中声明的也称为局部变量局部变量,其作用,其作用范围仅限于本过程,无法在其他过程中访问或改变该变量范围仅限于本过程,无法在其他过程中访问或改变该变量的值。用的值。用dim或或static来声明。来声明。2模块级变量模块级变量 模块级变量是在窗体模块或标准模块顶部模块级变量是在窗体模块或标准模块顶部“通用通用”声明声明段定义的变量,模块级变量对该模块的所有过程都有效,在段定义的变量

37、,模块级变量对该模块的所有过程都有效,在模块中的任何过程都可以访问该变量,但其它模块的过程则模块中的任何过程都可以访问该变量,但其它模块的过程则不能访问该变量。不能访问该变量。用用dim或或private来声明。来声明。6.6.1 过程级、模块级和全局变量过程级、模块级和全局变量【例【例6-10】使用文本框显示变量的范围。】使用文本框显示变量的范围。运行界面运行界面6.6.1 过程级、模块级和全局变量过程级、模块级和全局变量3.全局变量全局变量 全局变量的作用范围可以是应用全局变量的作用范围可以是应用程序的所有过程,也称为公用变量。程序的所有过程,也称为公用变量。全局变量可以在模块顶部的全局变

38、量可以在模块顶部的“通用通用”声明段用声明段用Public关键字声明。关键字声明。语法:语法:Public 变量名变量名 As 数据类型数据类型 在代码窗口分别声明在代码窗口分别声明a为全局变为全局变量,量,b为模块级变量,为模块级变量,c为过程级变为过程级变量,其变量的的声明语句如图所示。量,其变量的的声明语句如图所示。声声 明明 变变 量量6.6.1 过程级、模块级和全局变量过程级、模块级和全局变量【例【例6-11】(a)Form1运行界面运行界面 (b)Form2运行界面运行界面 注意注意:常数、固定长度字符串、数组、自定义类型与:常数、固定长度字符串、数组、自定义类型与 Declare

39、 语句不能是窗体对象模块中的语句不能是窗体对象模块中的 Public 成员。成员。6.6.2 静态变量静态变量 局部变量可以分为动态变量和局部变量可以分为动态变量和静态变量。静态变量。动态变量动态变量:在本过程执行期间分:在本过程执行期间分配内存的变量,当一个过程执行配内存的变量,当一个过程执行完毕,变量所占的内存被释放,完毕,变量所占的内存被释放,变量的值就不存在了。变量的值就不存在了。用用Dim来来声明声明静态变量静态变量:在过程结束后仍保留值的变量,即其占用的内存:在过程结束后仍保留值的变量,即其占用的内存单元未释放。当以后再次进入该过程时,变量原来的值可以单元未释放。当以后再次进入该过

40、程时,变量原来的值可以继续使用。继续使用。用用static来声明。来声明。运行结果运行结果6.6.2 静态变量静态变量程序代码如下:程序代码如下:Private Function Sum(n As Integer)计算求和子函数计算求和子函数 Static f As Integer f=f+n Sum=fEnd FunctionPrivate Sub Form_Click()单击窗体单击窗体 Dim i As Integer For i=1 To 5 Print&i&=&Sum(i)Next iEnd Sub【例【例6-13】使用函数调用的方法计算】使用函数调用的方法计算n,在函数中使用静态,

41、在函数中使用静态变量。变量。运运 行行 结结 果果6.6.3 使用同名的变量使用同名的变量1.不同模块中的全局变量同名不同模块中的全局变量同名 如果不同模块中的全局变量使用同一名字,则通过引用如果不同模块中的全局变量使用同一名字,则通过引用“模块名模块名.变量名变量名”来引用变量。来引用变量。2.全局变量与局部变量同名全局变量与局部变量同名 当全局变量与局部变量同名时,全局变量和局部变量在当全局变量与局部变量同名时,全局变量和局部变量在不同的范围内有效。在过程内部局部变量有效;而在过程外不同的范围内有效。在过程内部局部变量有效;而在过程外全局变量有效。全局变量有效。6.6.3 使用同名的变量使

42、用同名的变量3.窗体的属性、控件名与变量同名窗体的属性、控件名与变量同名 窗体的属性、控件、符号常数和过程都被视为窗体窗体的属性、控件、符号常数和过程都被视为窗体模块中的模块级变量。模块中的模块级变量。在窗体模块内和窗体中控件同名的局部变量将遮住在窗体模块内和窗体中控件同名的局部变量将遮住同名控件。因此必须引用窗体名称或同名控件。因此必须引用窗体名称或 Me 关键字来限定控关键字来限定控件,才能设置或得到该控件的属性值。件,才能设置或得到该控件的属性值。6.7 过程的作用范围过程的作用范围6.7.1 调用其他模块的过程调用其他模块的过程6.7.2 静态过程静态过程6.7.3 Sub Main过

43、程过程6.7.1 调用其他模块的过程调用其他模块的过程1.局部过程和全局过程局部过程和全局过程 过程的作业范围是通过定义语句来声明的。语法:过程的作业范围是通过定义语句来声明的。语法:Private|Public Static Sub 过程名过程名(参数列表参数列表)Private|Public Static Function 函数名函数名(参数列表参数列表)As 数据类型数据类型6.7.1 调用其他模块的过程调用其他模块的过程2.调用其他模块的过程调用其他模块的过程(1)调用其他窗体模块中的过程)调用其他窗体模块中的过程 调用其他窗体中的全局过程,必须以窗体名为调用的前调用其他窗体中的全局过

44、程,必须以窗体名为调用的前缀,即缀,即“窗体名窗体名.过程名过程名”。(2)调用其他标准模块中的过程)调用其他标准模块中的过程 调用其他标准模块中的过程,如果过程名是唯一的则调用其他标准模块中的过程,如果过程名是唯一的则不必在调用时加模块名。不必在调用时加模块名。(3)调用其他类模块的过程)调用其他类模块的过程 调用类模块中的全局过程,要求用指向该类的某一实调用类模块中的全局过程,要求用指向该类的某一实例作前缀。例作前缀。6.7.2 静态过程静态过程 在过程定义中也可以添加在过程定义中也可以添加“Static”关键字来声明过程,关键字来声明过程,或选择或选择“工具工具”菜单菜单“添加过程添加过

45、程”菜单项,在出现的对话菜单项,在出现的对话框中选择框中选择“所有本地变量为静态变量所有本地变量为静态变量”,如图所示。,如图所示。6.7.2 静态过程静态过程 在过程名前加上在过程名前加上StaticStatic关键字,表明该过程中的变量关键字,表明该过程中的变量(无论它们是怎么声明的)都是静态变量。(无论它们是怎么声明的)都是静态变量。Private Private StaticStatic Sub Test()Sub Test()测试静态变量子过程测试静态变量子过程 Dim Dim x x As Integer As Integer Static Static y y As Intege

46、r As Integer x=x+1 x=x+1 y=y+1 y=y+1 Print x=&x,Print x=&x,Print y=&y Print y=&yEnd SubEnd Sub6.7.3 Sub Main过程过程 Sub Main过程称为过程称为启动过程启动过程,当应用程序启动时不希望加载任何窗当应用程序启动时不希望加载任何窗体,或者在装载窗体前对一些条件进体,或者在装载窗体前对一些条件进行初始化,可以通过在标准模块中创行初始化,可以通过在标准模块中创建一个建一个Sub Main 的子过程,运行工的子过程,运行工程时先运行程时先运行Sub Main 子过程。子过程。设置设置 Sub

47、 Main 过程为启动对象过程为启动对象的方法是选择的方法是选择“工程工程”菜单菜单“工程工程属性属性”菜单项,在菜单项,在“工程属性工程属性”属性属性页中的页中的“通用通用”选项卡中选项卡中“启动对象启动对象”框选定框选定“Sub Main”,如图所示。,如图所示。设置启动对象设置启动对象6.8 Shell函数函数 VB不但可以调用各种过程,而且可以调用各种可执行文不但可以调用各种过程,而且可以调用各种可执行文件。件。Shell函数用来调用一个可执行文件,所有在函数用来调用一个可执行文件,所有在Windows环境下可以运行的可执行文件都可以在环境下可以运行的可执行文件都可以在VB中被调用。中

48、被调用。语法:语法:Shell(命令字符串,(命令字符串,窗口类型窗口类型)常量常量值值描述描述vbHide0窗口被隐藏,且焦点会移到隐式窗口。窗口被隐藏,且焦点会移到隐式窗口。VbNormalFocus1窗口具有焦点,且会还原到它原来的大小和位置。窗口具有焦点,且会还原到它原来的大小和位置。VbMinimizedFocus2窗口会以一个具有焦点的图标来显示。窗口会以一个具有焦点的图标来显示。VbMaximizedFocus3窗口是一个具有焦点的最大化窗口。窗口是一个具有焦点的最大化窗口。VbNormalNoFocus4窗口会被还原到最近使用的大小和位置,而当前活动的窗窗口会被还原到最近使用的

49、大小和位置,而当前活动的窗口仍然保持活动。口仍然保持活动。VbMinimizedNoFocus6窗口会以一个图标来显示。而当前活动的的窗口仍然保持窗口会以一个图标来显示。而当前活动的的窗口仍然保持活动。活动。窗口类型设置表窗口类型设置表(自学)(自学)6.9 程序举例程序举例【例【例614】输入一个十进制数,将其转换成二进制、八进】输入一个十进制数,将其转换成二进制、八进制或十六进制数。制或十六进制数。运行界面运行界面界面设计:用组合框界面设计:用组合框Combo1输入输入“转换进制转换进制”,用文本框,用文本框Text1输入要转换的十进制数,输入要转换的十进制数,单击单击“计算计算”按钮按钮

50、Command1计算进制转换,计算进制转换,并将结果显示在文本框并将结果显示在文本框Text2中。运行的界面如图所示。中。运行的界面如图所示。(自学)(自学)6.9 程序举例程序举例【例【例615】使用选择法将学生成绩按从高到低排序,并显使用选择法将学生成绩按从高到低排序,并显示出学生姓名和成绩。示出学生姓名和成绩。选择法排序选择法排序第一轮两两比较找第一轮两两比较找出最大的数,记录下最大元素的位出最大的数,记录下最大元素的位置置Max,然后与第一个元素,然后与第一个元素a0对对换;第二轮将从换;第二轮将从a1开始的数中找开始的数中找出最大的数与出最大的数与a1对换;对换;每比每比较一轮找出未

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第6章过程的使用课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|