VB第三章VisualBasic程序设计基础

上传人:pu****.1 文档编号:570619500 上传时间:2024-08-05 格式:PPT 页数:135 大小:788KB
返回 下载 相关 举报
VB第三章VisualBasic程序设计基础_第1页
第1页 / 共135页
VB第三章VisualBasic程序设计基础_第2页
第2页 / 共135页
VB第三章VisualBasic程序设计基础_第3页
第3页 / 共135页
VB第三章VisualBasic程序设计基础_第4页
第4页 / 共135页
VB第三章VisualBasic程序设计基础_第5页
第5页 / 共135页
点击查看更多>>
资源描述

《VB第三章VisualBasic程序设计基础》由会员分享,可在线阅读,更多相关《VB第三章VisualBasic程序设计基础(135页珍藏版)》请在金锄头文库上搜索。

1、第三章第三章 Visual BasicVisual Basic程序设计基础程序设计基础主要内容主要内容3.1 标识符、程序的书写规则3.2 数据类型 3.3 常量 3.4 变量 3.5 运算符 3.6 数组 3.7 基本控制结构 3.8 常用内部函数 3.9 Visual Basic中的过程3.1 3.1 标识符、程序的书写规则标识符、程序的书写规则 一、标识符 标识符是为程序中的变量、常量、数据类型、过程、函数和类等定义的名字,利用标识符实现对上述对象的引用。VisualBasic中标识符的命名规则如下: 1.标识符必须以字母开头,后面可以是字母、数字、下划线。例如:ab_c、Mybutto

2、n、b77是合法的标识符,而$hyx、3abc就是非法的标识符。 2.标识符的长度不能超过255个字符。 3.自定义的标识符不能和VisualBasic中已有运算符、语句、函数和过程名等关键字同名。也不能与系统的方法和属性同名。 4.关键字是VisualBasic保留下来的作为程序中有固定含义的标识符,不能被重新定义。3.1 3.1 标识符、程序的书写规则标识符、程序的书写规则 VisualBasic中的关键字如表3.1所示。表3.1 VisualBasic中的关键字3.1 3.1 标识符、程序的书写规则标识符、程序的书写规则二、程序的书写规则 VisualBasic作为一种程序设计语言有自己

3、的程序书写规则。其主要规则如下: 1.程序注释 若要为程序代码添加注释,可使用单引号“”或“Rem”作为注释内容的开头,VisualBasic将在编译时忽略注释部分内容。 例如: Form1.Width=300 将窗体的宽度设置为300 Temp=Form1.Width 将窗体的宽度赋值给变量Temp Form1.Caption=”你好!” 修改窗体的标题文字 Temp=Temp+20 Rem 变量Temp赋值为自己的原值加203.1 3.1 标识符、程序的书写规则标识符、程序的书写规则 2将一行语句写成多行 使用续行符“ _”(一个空格紧跟一条下划线)将长语句分成多行。 strTemp =

4、“问君归期未有期,” & _ “巴山夜雨涨秋池,” & _ “何当共剪西窗烛,” & _ “却话巴山夜雨时,” 注意:注意:在同一行内,续行符后面不能加注释。 3将多行语句写成一行在一行中写下多条语句,可以使用“:”作为分隔符号。例:Form1.width=300:temp=Form1.width:Form1.Caption=“你好”3.1 3.1 标识符、程序的书写规则标识符、程序的书写规则 4VisualBasic代码不区分字母大小写 (1)VisualBasic的关键字,首字母总被转换成大写,其余字母被转换成小写。 (2)如果关键字有多个英文单词组成,VisualBasic将每个单词首字

5、母转换成大写。 (3)VisualBasic中用户自定义的变量、过程名等,输入时以定义为准,自动向定义形式转换。3.2 3.2 数据类型数据类型 VisualBasic中可以使用的数据类型有如下几种: 一、数值型数据类型 1.常规整型(Interger) 常规整型简称为整型,表示不带小数点和指数符号的数,其内部存储空间和范围如表3.2所示。 十进制整数只能包含数字09、正负号。十进制整型数的范围为-32768+32767。例如:10,2566,-38,0。 八进制数由数字07组成,并以&o引导,其后面的数据位数6位,其范围为&o0&o177777。 十六进数由数字09、AF或af组成,并以&H

6、引导,其后面的数据位数4位,其范围为&H0&HFFFF。 3.2 3.2 数据类型数据类型 2.长整型(Long) 长整型数的数字组成与整数相同,正号可以省略,并且在数值中不能出现逗号。长整型数内部存储空间和范围如表3.2所示。 十进制长整数的范围为-2147483648+2147483647。例如:32768,-2567898,10。 十六进制长整数以&H开头,以&结尾,其范围为&H0&HFFFFFFFF&。 八进制数长整数以&o或&开头,以&结尾,其范围为&o0&o37777777777&。3.2 3.2 数据类型数据类型 3.单精度(Single) 单精度数内部存储空间和范围如表3.2所

7、示。可表示最多7位有效数字的数,小数点可以位于这些数字的任何位置,正号可以省略。单精度数可以有定点形式和浮点形式来表示。 单精度数的定点形式是在该范围内含有小数的数。 例如:-3.4120.0 +1.234 .00069 -31.24683 单精度数的浮点形式是用科学计数法,即以10的整数次幂表示的数,以“E”来表示底数10。 例如-3.4105,120.010-5,1.2341012,0.0007810-23分别表示为: -3.4E5120.0E-51.234E+12.00078E-233.2 3.2 数据类型数据类型 4.双精度数(Double) 双精度数内部存储空间和范围如表3.2所示。

8、可表示最多15位有效数字的数,小数点可以位于这些数字的任何位置,正号可以省略。双精度数也有定点和浮点两种形式。 双精度数的定点形式是在该范围内含有小数的数。 例如: 双精度数的浮点形式是用科学计数法,以“D”来代表指数的底的数。例如:-3.1234567D52120.1234568D-45 0.23456789D+103.2 3.2 数据类型数据类型 5.货币型(Currency) 货币型数的内部存储空间和范围如表3.2所示。Currency数据类型支持小数点右面4位和小数点左面15位,它是一个精确的定点数据类型,适用于货币计算。浮点(Single和Double)数比Currency的有效范围

9、大得多,但有可能产生小的进位误差。 6.字节型(Byte) 字节型表示无符号的整数,范围为0255。除一元减法外,所有可对整数进行操作的运算符均可操作Byte数据类型。因为Byte是从0255的无符号类型,所以不能表示负数。因此,在进行一元减法运算时,VisualBasic先将Byte转换为符号整数。3.2 3.2 数据类型数据类型二、布尔型数据类型(Boolean) 布尔型主要用来进行逻辑判断,如果数据的取值只是True或False、Yes或No、On或Off,则可用Boolean型表示。当转换其他的数值类型为Boolean值时,O会转成False,而其他的值则变成True。当转换Boole

10、an值为其他的数据类型时,False成为O,而True成为-1。3.2 3.2 数据类型数据类型 三、日期型数据类型(Date) 日期型用于存储日期和时间,其可以表示的日期范围从公元100年1月1日到公元9999年12月31日,而时间可以从0:00:00到23:59:59。日期型数据必须使用一对“#”号括起来,否则VisualBasic将不能正确的识别日期: Dim Mydate as date Mydate = #12/5/96# Mydate = #1996-12-5 12:30:00 pm#3.2 3.2 数据类型数据类型四、字符型数据类型(String) 字符型用于存放字符串,字符串是

11、用双引号括起来的一串字符,如:”你好!”。使用String类型可以声明两种字符串:可变长度与固定长度的字符串。字符型变量或参数是一个可变长度的字符串,随着对字符串赋予新数据,它的长度可增可减。如果变量总是包含字符串而较少包含数值,就可将其声明为String类型。 Dim MyStr As String MyStr = VisualBasic程序设计!3.2 3.2 数据类型数据类型 五、对象型数据类型(Object) 对象型用于表示任何类型的对象,可以引用程序中对象。在引用对象时,必须利用Set语句为对象引用赋值。初学者最容易犯的一个错误就是对Object类型的变量直接赋值,例如:将窗体对象F

12、orm1赋值给Object类型变量temp。错误写法:错误写法:Sub Form_Click() Dim temp as Object temp = Form1End Sub 正确写法:Sub Form_Click() Dim temp as Object Set temp = Form1End Sub3.2 3.2 数据类型数据类型六、变体型数据类型(Variant) Variant是一种特殊的数据类型,除了定长String数据及用户定义类型外,可以包含任何数据类型的数据。当没有说明数据类型时,则变量自动为Variant型,只是Variant型数据占用的内存比其它数据类型多。我们可以使用Va

13、rType函数或TypeName函数来决定如何处理Variant中的数据。3.2 3.2 数据类型数据类型 在程序代码中,可以用Variant数据类型来替换任何数据类型,这样会更有适应性。如果Variant变量内容是数字,它可以用字符串来表示数字或是用它实际的值来表示,这将由上下文来决定,例如在下面的程序中; Dim Myvar Myvar=3716 Myvar=testvar+1 此时等号左边的Myvar为实 际的值3717 Myvar=Myvar & “how DoyouDo?” 此时等号 右边的Myvar为字符串表示的数字 “3717”3.2 3.2 数据类型数据类型 Variant变量

14、也可包含Empty、Error及Null等特殊值。 1.Empty值 Empty值用来标记尚未初始化(给定初始值)的Variant变量。在赋值之前,Variant变量具有值Empty。值Empty是异于0零长度字符串(”)或Null值的特定值。程序员可以使用 IsEmpty函数来测试一个变量是否具有Empty值: If IsEmpty (z)Then z=0 。 当Variant变量包含Empty值时,可在表达式中使用它;内含 Empty的Variant在数值的上下文中表示0,如果是用在字符串的 上下文中则表示零长度的字符串(”)。3.2 3.2 数据类型数据类型 2.Null值 Varian

15、t数值类型还可包含一特定值:Null。Null通常用于数据库应用程序,表示未知数据或丢失的数据。Null具有某些唯一的特性: (1)对包含Null的表达式,计算结果总是Null。 (2)将Null值、含Null的Variant变量或计算结果为Null的表达式作为参数传递给大多数函数,将会使函数返回Null。 测试Variant变量是否包含Null值,可以使用IsNull函数。 3.Error值 在Variant数据类型中,error是用来指示在过程中出现错误 时的特殊值。用CVErr函数将实数转换为错误值来产生error值。3.2 3.2 数据类型数据类型 七、数据类型之间的转换表3.3 Vi

16、sualBasic中的类型转换函数转换转换函函数数目目标类标类型型CBoolBooleanCByteByteCCurCurrencyCDateDateCDblDoubleCIntIntegerCLngLongCSngSingleCStrStringCVarVariantCVErrError3.3 3.3 常量常量 VisualBasic用常量表示在整个程序中事先设置的和不会改变数值的数据。在整个应用程序执行过程中,值保持不变的量就是常量。常量可分为一般常量和符号常量。一、一般常量包括:数值常量、字符常量、布尔常量和日期常量。 1.字符串常量 字符串常量就是用双引号括起来的一串字符。例如:hel

17、lo!、你好!、欢迎!、等。其中,双引号中无任何字符,也不含空格,称其为空字符串。3.3 3.3 常量常量 2.数值常量 数值常量由正负号、数字和小数点组成。VisualBasic的数值常量包括:整数、长整数、定点数、浮点数和字节数。 3.布尔常量 布尔常量只有True(真)和False(假)两个值。 4.日期常量 用两个“#”符号把表示日期和时间的值括起来表示日期常量。例如:#12/18/2000#。3.3 3.3 常量常量 二、符号常量 符号常量是指在程序中用符号表示的常量。符号常 量又分为用户定义常量和系统内部定义常量。 1.系统内部定义常量 系统内部定义常量可与应用程序的对象、方法和属

18、性一起使用,一般以vb为前缀。例如:如vbNormal(正常)、vbMaximized(最大化)、vbMinimized(最小化)等。 2.用户定义常量 用户定义常量使用Const语句来给常量分配名字、值和类型。3.3 3.3 常量常量 声明常量的语法为: Public | Private Const Public | Private Const As As = = 表达式表达式 说明:说明: 表示可以省略的参数,| 表示可以选择的参数。常量名的命名规则与建立变量名的规则一样。表达式由数值常量、字符串等常量及运算符组成,可以包含前面定义过的常量,但不能使用函数调用。例如,以下都是正确的用户定义

19、常量:Const PI as Single = 3.1415926Private Const PI as Single = 3.14159263.4 3.4 变量变量 在程序运行过程中,需要用变量来临时存储数据,并且变量中存储的这些数据是可以改变的。每个变量有惟一的名字和相应的数据类型,编程时通过变量名来引用其中存储的数据。 一、声明变量 声明变量即通知程序以后在程序中可以使用此变量。有隐式声明和显示声明:隐式声明:不加任何声明而直接使用 显示声明:每个变量必须事先做声明,才能使用。 3.4 3.4 变量变量设置强制显式声明变量的方法有以下两种: 1.在模块的声明部分中添加如下语句: Opti

20、on Explicit Option Explicit 2.选择“工具”菜单 |“选项”命令,在弹出的对话框中选择“编辑器”选项卡,将“要求变量声明”选项前的复选标记选中即可,如图3.1所示。 图3.1 “工具”菜单的“选项对话框”3.4 3.4 变量变量 二、变量的作用范围 变量的作用范围确定了能够识别并使用变量的那部分代码。按作用域不同,可分为局部变量和全局变量。不同作用范围的变量声明方式: 1.普通局部变量:只能在声明它的过程中使用,即不能在一个过程中访问另一个过程中的普通局部变量。 声明此类变量的格式如下: Dim Dim 变量名变量名 As As 数据类型名数据类型名 3.4 3.4

21、 变量变量 2.静态局部变量:这种变量也只能在声明它的过程中使用,属于局部变量。但是与普通局部变量的差别在于:静态局部变量在整个程序运行期间均有效,并且过程执行结束后,只要程序还没有结束,该变量的值就仍然存在,该变量占有的空间不被释放。声明此类变量的格式如下: Static Static 变量名变量名 As As 数据类型名数据类型名 3.模块变量:这种变量必须在某个模块的声明部分进行预声明,可以适用于该模块内的所有过程,但对其他模块内的过不能使用。一般在声明此类变量时,使用如下格式: Private Private 变量名变量名 As As 数据类型名数据类型名 3.4 3.4 变量变量 4

22、.全局变量:这种变量也必须在某个模块的声明部分进行预先声明,可以适用于该模块及其他模块内的所有过程,也即在整个程序内有效。一般在声明此类变量时,使用如下格式:Public Public 变量名变量名 As As 数据类型名数据类型名 表3.4 不同作用范围的3种变量声明方式作用范作用范围围局部局部变变量量模模块级变块级变量量全局全局变变量量声明方式变量的声明位置能否被本模块中其他过程访问能否被其他模块访问Dim,Static过程之中否否Dim,Private模块的声明段中能否Public模块的声明段中能能3.4 3.4 变量变量 三、变量赋值 变量赋值的格式如下: 变量名变量名 = = 表达式

23、表达式 可以使用一个表达式的数值来给某个变量赋值。一个普通的常量、变量均属于简单的表达式。例如,给一个变量Temp赋值,可以使用如下几种方式: Temp = 7 Temp = Var1 Temp = Var2 + 13.5 3.5 运算符运算符 VisualBasic中的运算符包括赋值运算符、数学运算符、位运算符、关系运算符和逻辑运算符。 一、赋值运算符 VisualBasic中的赋值运算符是“=”号,其一般格式如下:变量变量 = = 值值 其中“变量”可以是变量、数组的元素或对象属性。“值”可以是常量、变量、表达式或函数返回值。 赋值运算符左边必须是变量或对象的属性,不能是数值、常量和表达式

24、。 3.5 3.5 运算符运算符 二、算术运算符 表3.5 算术运算符运运算符算符说说明明指数运算符-负号运算符* /乘法和除法运算符整除运算符Mod求模运算符+ -加法和减法运算符&连接字符串运算符3.5 3.5 运算符运算符 三、关系运算符 关系运算就是确定两个表达式之间的关系。其优先级低于数学运算符,各个关系运算符的优先级是相同的,结合顺序从左到右。关系运算符与运算数构成关系表达式,关系表达式最后结果为布尔值True和False,如果比较的双方有任何一个是NULL,结果是NULL。表3.6列出了VisualBasic中主要的关系运算符。3.5 3.5 运算符运算符3.5 3.5 运算符运

25、算符 四、连接运算符 连接运算就是将两个表达式连接一起。用来进行连接运算的运算符有两个“&”和“+”。“&”运算符用来强制两个表达式字符串连接,而“+”运算则有些不同,如果两个表达式都为字符串,则将两个字符串连接;如果一个是字符串而另一个是数字则进行相加操作。3.5 3.5 运算符运算符 五、逻辑运算符逻辑运算符 逻辑运算符通常用来表示比较复杂的关系。VisualBasic中的逻辑运算符如表3.8所示。3.5 3.5 运算符运算符 六、日期运算符日期运算符 日期型数据是一种特殊的数值型数据,日期型数据之间可以进行加“+”和减“-”运算。 1.两个日期型数据相减,结果是一个数值型数据,即两个日期

26、相差的天数。例:#10/17/2005# - #10/1/2005#,结果为16。 2.一个日期型数据与一个数值型数据n相加,结果为当前日期型数据n天以后的日期值。例如:#11/1/2005# +16,结果为#11/17/2005#。 3.一个日期型数据与一个数值型数据n相减,结果为当前日期型数据n天以前的日期值。例如:#11/27/2005# -10,结果为#11/17/2005#。3.5 3.5 运算符运算符 七、运算符的优先顺序 所有关系运算符的优先顺序都相同,而算术运算符号和逻辑运算符则必须按照下列优先顺序进行处理:指数运算()负号(-)乘法和除法(*、/)整数除法() 求模运算(Mo

27、d) 加法和减法(+、-) 字符串连接(&) 关系运算符(=、=) 逻辑运算(Not、And、Or)3.6 3.6 数组数组 一、数组的概念 数组是具有相同的内部数据类型的顺序索引元素的集合,数组中的每个元素都具有唯一的索引标识号。 一个数组中的所有元素具有相同的数据类型。当数据类型为 Variant 时,各个元素能够包含不同类型的数据(对象、字符串、数值等)。 在 Visual Basic 中有两种类型的数组:静态数组(总是保持同样的大小)和动态数组(在运行时大小可以改变的数组)。3.6 3.6 数组数组 一、静态数组 1声明静态数组 有三种方法声明静态数组,用哪一种方法取决于数组应有的有效

28、范围: (1)建立全局数组,在模块的声明段用 Public 语句声明数组。(2)建立模块级数组,在模块的声明段用 Private或Dim语句声明数组。(3)建立局部数组,在过程中用Dim语句声明数组。3.6 3.6 数组数组 2语法Public/Private/Dim Public/Private/Dim 数组名(数组名( 维数定义维数定义 ) As As 数据类型数据类型 说明:说明:(1)数组名:必需的,遵循标准的变量命名约定。 (2)维数定义:可选的。数组变量的维数,最多可以定义 60 维的多维数组。“维数定义”参数使用下面的语法: To To 1 ,下界下界2 To 2 To . .

29、. 2 . . . 如果不显式指定“下界”,则数组的下界由 Option Base 语句控制。如果没有 Option Base 语句则下界为 0。 数据类型:可选的,数组中各元素的类型。3.6 3.6 数组数组 3.设定上下界 声明数组时,在数组名之后跟一个用括号括起来的上界。上界不得超过 Long 数据类型的范围(-2,147,483,648 到 2,147,483,647)。例如,下列数组声明可出现在模块的声明段: Dim Counters(14)As Integer 15 个元素。 Dim Sums(20)As Double 21 个元素。 为建立全局数组,直接用 Public 取代 D

30、im。(1)在过程之中的声明使用 Dim:(2)用关键字 To 显式提供下界(为 Long 类型): Dim Counters(1 To 15)As Integer3.6 3.6 数组数组 4多维数组 可用 Visual Basic 声明多维数组。 例如,下面的语句声明一个过程内的 10 10 二维数组。 Static MatrixA(9, 9)As Double 可用显式下界来声明两个维数或两个维数中的任何一个: Static MatrixA(1 To 10, 1 To 10)As Double 可以将所有这些推广到二维以上的数组。 例如:Dim MultID(3, 1 To 10, 1 T

31、o 15) 这个声明建立了三维数组,大小为 4 10 15。元素总数为三个维数的乘积 600。3.6 3.6 数组数组 5、数组的使用 在建立(声明)一个数组之后,就可以使用数组。引用数组元素的时候要注意以下几点: (1)数组声明语句不仅定义数组、为数组分配存储空间,而且(2)还能对数组进行初始化,使得数值型数组的元素值初始化为0,(3)字符型数组的元素值初始化为空等等。(4)(2)引用数组元素的方法是在数组名后的括号中指定下标如: t=A(5):s=B(3,4)(3)引用数组元素时,数组名、数组类型和维数必须与数组声明时一致。(4)引用数组元素时,下标值应在数组声明时所指定的范围之内。(5)

32、在同一过程中,数组与简单变量不能同名。3.6 3.6 数组数组例:随机产生10个两位整数,找出其中最大值、最小值和平均值,如图3.2所示。 图3.2 数组应用实例 3.6 3.6 数组数组设计步骤如下: 1.建立应用程序用户界面与设置对象属性。 2.编写代码。 首先在模块通用段声明数组:Dim a(1 to 10) as integer 随机整数的生成由窗体的Load事件代码完成: Private Sub Form_Load() Dim p As String : p = : Randomize For i = 1 To 10 a(i) = Int(Rnd * 90) + 10 p = p &

33、 Str(a(i) & , Next i Label4.Caption = LTrim(Left(p, Len(p) - 1) End Sub3.6 3.6 数组数组 求最大、最小以及平均值由“确定”按钮Command2的Click事件代码完成:Private Sub Command2_Click() Dim max As Integer, min As Integer, s As Single min = 100: max = 10: s = 0 For i = 1 To 10 If a(i) max Then max = a(i) If a(i) =0 Then y=x+13.73.7基本

34、控制结构基本控制结构 (2)需要执行多条语句。 语法为:If If 条件条件 ThenThen 若干语句若干语句 end If end If 例如: If intage23 Then Print “您已经超龄,无法入选国奥队!” Print “感谢您对中国足球的关怀!” end If3.73.7基本控制结构基本控制结构 2.IfThenElse结构 使用IfThenElse结构可以从两个程序流程分支中选择一个分支执行。 语法为: If If 条件条件 ThenThen 语句序列语句序列1 1 Else Else 语句序列语句序列2 2 End If End If例如:求两个数中最大数 If x

35、 y Then MaxOfTwo = x Else MaxOfTwo = y End If3.73.7基本控制结构基本控制结构 当执行到IfThenElse结构时,VisualBasic会首先测试条件1。如果它为False,VisualBasic就测试条件2,依次类推,直到找到一个为True的条件。当它找到一个为True的条件时,VisualBasic就会执行相应的语句序列,然后执行End If语句后面的代码。 3.73.7基本控制结构基本控制结构例如:编写程序,随着用户不断单击窗体,更改窗体的标题: Private sub Form_Click() static Index as Integ

36、er Index = Index + 1 If Index = 1 Then Form1.Caption = “床前明月光” ElseIf Index = 2 Then Form1.Caption = “疑是地上霜” ElseIf Index = 3 Then Form1.Caption = “举头望明月” ElseIf Index = 4 Then Form1.Caption = “低头思故乡” Else Index = 0 end If End Sub3.73.7基本控制结构基本控制结构 3.IIF函数 IIf函数的语法结构为: IIf( IIf(,) 当条件表达式的值为真时,函数返回值为

37、真部分,否则返回假部分。例如:输入x,计算y的值,其中:x+1 (x=0) y= 2x-1 (x=0, x+1, 2*x-1) Text2.Text=y End Sub3.73.7基本控制结构基本控制结构 4.Select Case结构 Select Case结构可以很好的完成多重判定任务,这种结构不但清楚易懂,而且执行也比较快速。Select Case结构的语法为:Select CaseSelect Case测试条件测试条件 Case Case 表达式表达式1 1 语句序列语句序列11 Case Case 表达式表达式2 2 语句序列语句序列22 : : Case ElseCase Else

38、 语句序列语句序列nnEnd SelectEnd Select3.73.7基本控制结构基本控制结构 下面我们使用SelectCase结构改写上一个例子: Private Sub Form_Click() Static Index As Integer: Index = Index + 1 Select Case Index Case 1 Form1.Caption = “床前明月光” Case 2 Form1.Caption = “疑是地上霜” Case 3 Form1.Caption = “举头望明月” Case 4 Form1.Caption = “低头思故乡” Case Else Ind

39、ex = 0 end select : End Sub3.73.7基本控制结构基本控制结构 Select Case语句的表达式结果表列可以有四种格式: (1)表达式结果:此种格式表达式结果表列中只有一个数值或字符串供用户与表达式的值进行比较。例如:Case 1或者Case char等。 (2)表达式结果1,表达式结果2,表达式结果n:此种格式在某一个表达式结果表列中有多个数值或字符串供用户与表达式的值进行比较,多个取值之间用逗号间隔。 (3)表达式结果1 To 表达式结果2:此种格式在表达式结果表列中提供了一个数值或字符串的取值范围,可以将此范围内的所有取值与表达式的值进行比较。 (4)Is

40、关系运算符 数值或字符串:此种格式使用了关键字“Is”,其后只能使用各种关系运算符:“=”、“”、“=”和“”等。 3.73.7基本控制结构基本控制结构 三、循环结构 所谓循环结构,表示在执行语句时,需要对其中的某个或某部分语句重复执行多次。对于此类情况可以利用各种循环结构来实现。VisualBasic支持的循环结构有:For循环、While循环和Do循环语句结构。 1. 1. For循环 For循环属于计数型循环,程序按照此种结构中指明的循环次数来执行循环体部分。3.73.7基本控制结构基本控制结构 格式为:For For 循环变量循环变量 = = 初始值初始值 To To 终值终值 Ste

41、p Step 步长步长 循环体循环体 Exit For Exit For 循环体循环体 Next Next 循环变量循环变量格式说明:(1)循环变量:用于统计循环次数的变量,变量为数值型变量。(2)初始值:用于设置循环变量的初始取值,为数值型变量。(3)终值:用于设置循环变量的最后取值,为数值型变量。(4)步长:用于决定循环变量每次增加的数值。 3.73.7基本控制结构基本控制结构 (5)循环体:需要重复执行的部分。 (6)Exit For:在某些情况下,需要中途退出For循环时使用。 (7)Next 循环变量:用于结束一次For循环。 For语句时的执行过程是:先令循环变量取为初始值,然后检

42、验循环变量的取值是否超出终值:若步长为正值,则检验循环变量是否大于终值;若步长为负值,则检验循环变量的取值是否小于终值。若循环变量没有超出终值,则执行一次内部的循环体,然后将循环变量加上步长赋值给循环变量本身,再与终值进行比较。3.73.7基本控制结构基本控制结构 例如:编写一个函数,求从1到N(正整数)的所有正整数之和。Private Function Sum1ToN(N As Integer) As Integer Dim s,i As Integer For i=1 To N s=s+i Next i Sum1ToN=sEnd Function 3.73.7基本控制结构基本控制结构 还有

43、一个集合For循环语句。格式为: For Each For Each 集合中元素集合中元素 in in 集合集合 循环体循环体 Next Next 元素元素 该语句对集合中的每个元素进行一次循环,直到集合中无更多的元素时,执行Next后面的语句。 例如,以下事件过程列出窗体上的所有控件。 Private Sub Form_Click() Dim Control As Object For Each Control In Me.Controls Print Control.Name Next Control End Sub3.73.7基本控制结构基本控制结构 2.While循环 While循环用

44、于对条件进行判断,如果条件成立,可以循环执行循环体,直到条件不成立循环结束。 格式为: While While 条件条件 循环体循环体 Wend Wend 此种循环的执行过程为:首先判断条件是否成立,若条件成立,则执行循环体内的语句,执行完后再继续判断条件,重复上述过程;否则,若条件不成立,则结束循环,执行循环后的语句。 3.73.7基本控制结构基本控制结构 4.格式输出函数 用格式输出函数Format()可以使数值、日期或字符型数据按指定的格式输出。Format函数的语法格式为: Format( Format( , )说明:说明: (1)可以是数值型、日期型或字符型的表达式。 (2)是一个字

45、符串常量或变量,由专门格式说明字符组成。说明字符决定数据项显示格式和长度。 (3)当是字符串常量的时候,放在双引号中。 (4)格式输出函数Format()返回一个Variant类型的值。3.73.7基本控制结构基本控制结构 3.Do循环 Do循环也是按照条件是否成立来决定是否执行相应的循环体部分。格式一: DoDo 语句体语句体 满足某条件时满足某条件时 Exit DoExit Do 语句体语句体 Loop WhileLoop While或或Until Until 条件条件 3.73.7基本控制结构基本控制结构 格式二: Do While Do While或或Until Until 条件条件

46、语句体语句体 满足某条件时满足某条件时 Exit DoExit Do Loop Loop 这两种格式既有共同点又有明显的差异。共同点为: (1)均可以有一定的循环条件,但循环体部分为空 (2)均可以从中间用“Exit Do”语句退出循环。 (3)均可以没有循环条件。 (4)均可以嵌套使用,而且可以互相嵌套。 (5)均有两种判断条件的格式。 3.73.7基本控制结构基本控制结构 不同点为: (1)第一种格式中的判断条件“While或Until 条件”的位置在整个循环体的最后;而第二种格式中的判断条件“While或Until 条件”的位置在整个循环体的起始位置。 (2)第一种格式的执行过程为:先执

47、行一遍循环体,在碰到Loop后的条件时再进行判断,根据不同的判断条件格式执行不同的判断过程,决定是继续执行循环体,还是退出循环。而第二种格式的执行过程为:先对条件进行判断,仍然要根据不同的判断条件格式执行不同的判断过程。 3.73.7基本控制结构基本控制结构 例如:前面求从1到N(正整数)的所有正整数之和的函数可以使用Do循环的两种格式改写为:Private Function Sum1ToN(N As Integer) As Integer Dim s,i As Integer If N=1 Then Sum1ToN =1 Else i =1 Do s = s+i : i=i+1 Loop (

48、i=n) Sum1ToN = s End IfEnd Function3.73.7基本控制结构基本控制结构 Private Function Sum1ToN (N As Integer) As Integer Dim s,i As Integer i =1 Do While (i=N) s = s+i : i = i+1 Loop Sum1ToN = s End Function3.73.7基本控制结构基本控制结构 4.中途跳出语句 在VisualBasic中,有以下几种中途跳出语句: (1)Exit For:用于中途跳出For循环,可以直接使用,也可以用条件判断语句加以限制,在满足某个条件时

49、才能执行此语句,跳出For循环。例如:在For循环内部添加语句“If 条件 Then Exit For”。 (2)Exit Do:用于中途跳出Do循环,同上类似,既可以直接使用,也可以用条件判断语句限制使用。 (3)Exit Sub:用于中途跳出Sub过程,既可以直接使用,也可以用条件判断语句限制使用。 (4)Exit Function:用于中途跳出Function过程,可以直接使用,也可以用条件判断语句限制使用。3.8 3.8 常用内部函数常用内部函数 在VisualBasic中,有两类函数:内部函数和用户定义函数。一、数学运算函数一、数学运算函数 表3.11 常用数学运算函数函函数数说说明

50、明Sin返回孤度的正弦Cos返回弧度的余弦Atn返回用弧度表示的反正切值Tan返回弧度的正切Abs返回数的绝对值Exp返回e的指定次幂Log返回一个数值的自然对数Sgn返回数的符号值Sqr返回数的平方根Int返回不大于给定数的最大整数Fix返回数的整数部分 二、字符串函数表3.12 常用字符串函数函数函数说明明Ltrim返回删除字符串左端空格后的字符串Rtrim返回删除字符串右端空格后的字符串Trim返回删除字符串前导和尾承受空格后的字符串Left返回从字符串左端开始的指定数目的字符Right返回从字符串右端开始的指定数目的字符mid返回从字符串指定位置开始的指定数目的字符Len返回字符串的长

51、度Instr返回字符串在给定的字符串中出现的开始位置Space返回由指定数目空格字符组成的字符串String返回包含一个字符重复指定次数的字符串LCase返回以小写字母组成的字符串UCase返回以大写字母组成的字符串Str返回把数值型数据转换为字符型后的字符串val把一个数字字符串转换为相应的数值3.8 3.8 常用内部函数常用内部函数3.8 3.8 常用内部函数常用内部函数 3.日期和时间函数表3.13 常用日期和时间函数函函数数说说明明Now返回系统日期和时间(yy-mm-dd hh:mm:ss)Date返回当前日期(yy-mm-dd)Day返回月中第几天(131)Weekday返回是星期

52、几(17)Month返回一年中的某月(112)Year返回年份(yyyy)Hour返回小时(023)Minute返回分钟(059)Second返回秒(059)Timer返回从午夜算起已过的秒数Time返回当前时间(hh:mm:ss)3.8 3.8 常用内部函数常用内部函数 4.格式输出函数 用格式输出函数Format()可以使数值、日期或字符型数据按指定的格式输出。Format函数的语法格式为: Format( Format( , )说明:说明: (1)可以是数值型、日期型或字符型的表达式。 (2)是一个字符串常量或变量,由专门的格式说明字符组成。这些说明字符决定了数据项的显示格式和长度。 (

53、3)当是字符串常量的时候,必须放在双引号中。 (4)格式输出函数Format()返回一个Variant类型的值。3.8 3.8 常用内部函数常用内部函数 表3.14 常用的数值型格式说明字符字符字符说说明明例子例子#数字占位符。显示一位数字或什么都不显示。如果表达式在格式字符串中#的位置上有数字存在,那么就显示出来;否则,该位置就什么都不显示。Format(123.45,”#.#”)返回:123.450数字占位符。显示一位数字或是零。如果表达式在格式字符串中0的位置上有一位数字存在,那么就显示出来;否则,就以零显示。Format(123.45,”0000.000”)返回:0123.450.小数

54、点占位符,千分位符号占位符Format(1234.5,”#,#.#”)返回:1,234.5%百分比符号占位符。表达式乘以100。而百分比字符(%)会插入到格式字符串中出现的位置上Format(0.12345,”0.00%”)返回:12.35%3.8 3.8 常用内部函数常用内部函数 表3.15 常用的时间日期型格式说明字符字符字符说说明明例子例子dddddd以完整日期表示法显示日期毓数(包括年、月、日)Format(Date,”dddddd”)返回:2002年7月5日mmm以全称来表示月(January-December)Format(Date,”mmmm”)返回:Mayyyyy以四位数来表示

55、年Format(Date,”yyyy”)返回:2002Hh以有前导零的数字来显示小时(0023)Nn以有前导零的数字来显示分(0059)Ss以有前导零的数字来显示秒(0059)Format(Time,”Hh:Nn:Ss”)返回:20:56:01tttt以完整时间表示法显示(包括时、分、秒),用系统识别的时间格式定义的时间分隔符进行格式化。缺省的时间格式为h:mm:ssFormat(Time,”tttt”)返回:20:57:06AM/PM在中午前以12小时配合大写AM符号来使用;在中午和11:59P.M.间以12小时配合大写PM来使用Format(Time,”ttttAM/PM”)返回:20:5

56、7:46PM3.8 3.8 常用内部函数常用内部函数 表3.16 常用的字符型格式说明字符字符字符说说明明例子例子字符占位符。显示字符或是空白。如果字符串在格式字符串中的位置有字符存在,那么就显示出来;否则,就在那个位置上显示空白。除非有惊叹号字符(!)在格式字符串中,否则字符占位符将由右而左被填充Format(“Abab”,”)返回:” Abab”&字符占位符。显示字符或什么都不显示。如果字符串在格式字符串有字符&存在,那么就显示出来;否则,就什么都不显示。除非有惊叹号在格式字符串中,否则,字符占位各个地区之间将由右而左被填充。Format(“Abab”,”&”)返回:”Abab”强制小写。

57、将所有字符以小写格式显示Format(“Abab”,”强制大写。将所有字符以大写格式显示。Format(“Abab”,”)返回:” ABAB”!强制由左而右填充字符占位符。缺省值是由右而左填充字符占位符Format(“Abab”,”!”)返回:”Abab ”3.8 3.8 常用内部函数常用内部函数 5.输入函数InputBox 将用户从输入的数据作为函数的返回值返回到程序中。 在使用该函数时,可以返回的两种类型数据: (1)数值型数据,函数格式如下:InputBox(prompt,title,default,xpos,ypos,helpfile,contextInputBox(prompt,t

58、itle,default,xpos,ypos,helpfile,context) ) (2)字符串型数据,函数格式如下:InputBox$(prompt,title,default,xpos,ypos,helpfile,contextInputBox$(prompt,title,default,xpos,ypos,helpfile,context) 说明: (1)Prompt:字符串型变量,用于表示出现的对话框中的提示信息。 3.8 3.8 常用内部函数常用内部函数 (2)Title:为字符串型变量,用于表示对话框的标题信息,即对话框的名称。 (3)Default:为字符串型变量,用于显示在输

59、入区内默认的输入信息。 (4)xpos:为整型数值变量,用于表示对话框与屏幕左边界的距离值,即该对话框左边界的横坐标,单位是缇(twip,1英寸=1440缇)。 (5)ypos:也是一个整型数值变量,用于表示对话框与屏幕上边界的距离值,即该对话框上边界的纵坐标,单位也是缇(twip)。 (6)Helpfile:为字符串变量或字符串表达式,用于表示所要使用的帮助文件的名字。 (7)Context:为一个数值型变量或表达式,用于表示帮助主题的帮助号。 3.8 3.8 常用内部函数常用内部函数 例如:以下事件过程执行出现如图3.4所示的信息输入框。 Private Sub Command1_Clic

60、k() Dim Str As String Str = InputBox(输入1到10之间的整数:, 数据输入, 1) End Sub图3.4 信息输入框3.8 3.8 常用内部函数常用内部函数 6、输出函数MsgBox MsgBox函数可以用对话框的形式向用户输出一些必要信息,还可以让用户在对话框内进行相应的选择,然后将该选择结果传输给程序。 MsgBox函数使用格式为:MsgBox(prompt,buttons,title,helpfile,context)MsgBox(prompt,buttons,title,helpfile,context) 其中的title、helpfile和con

61、text参数与Inputbox函数中的同名参数类似,下面主要介绍前两个参数。 (1)Prompt参数:用于显示对话框的提示信息,通知用户应该做什么选择,或者直接确认信息。 (2)Buttons参数:用于控制对话框中按钮的数目及形式、使用的图标的样式、哪个按钮为默认按钮以及强制对该对话框做出反应的设置。 3.8 3.8 常用内部函数常用内部函数 MsgBox函数的返回值是一个整数数值,此数值的大小与用户选择的不同按钮有关。在前面介绍buttons参数时,曾经提到了可能出现的7种按钮:确认、取消、终止、重试、忽略、是和否。函数的返回值分别与这7种按钮相对应,为从1到7的七个数值。具体对应情况如表3

62、.18所列。表3.18 MsgBox函数返回值返回常量返回常量返回返回值值操作操作说说明明vbOK1选择了OK按钮vbCancel2选择了Cancel按钮vbAbort3选择了Abort按钮vbRetry4选择了Retry按钮vbIgnore5选择了Ignore按钮vbYes6选择了Yes按钮vbNo7选择了No按钮3.8 3.8 常用内部函数常用内部函数 7.随机数语句和函数 在测试、模拟和游戏程序中,经常要使用随机数,随机数语句和函数如表3.19所示。表3.19 随机数函数和语句函函数数和和语语句句说说明明RanDomize语句产生随机数的种子Rnd函数产生01之间的随机数3.8 3.8

63、常用内部函数常用内部函数 8.测试函数 表3.20 测试函数函函数数名名说说明明IsArray( )测试变量是否为数组IsDate( )测试是否为日期IsEmpty( )测试是否已被初始化IsError( )测试是否发生错误IsNull( )测试是否为空IsNumeric( )测试是否为数值型数据IsObject( )测试是否为对象3.9 VisualBasic3.9 VisualBasic中的过程中的过程 将程序分割成较小的逻辑部件就可以简化程序设计任务,我们称这些部件为过程。它们可以变成增强和扩展 Visual Basic 的构件。过程可用于压缩重复任务或共享任务,例如,压缩频繁的计算、文

64、本与控件操作和数据库操作。用过程编程有两大好处: (1)过程可使程序划分成离散的逻辑单元,每个单元都比无过程的整个程序容易调试。 (2)一个程序中的过程,往往不必修改或只需稍作改动,便可以成为另一个程序的构件。 3.9 VisualBasic3.9 VisualBasic中的过程中的过程 一、过程的种类一、过程的种类在VisualBasic中存在下列几种过程: (1)Sub 过程:又称为子过程,这种过程不返回值。子过程又包括事件过程和通用过程。 (2)Function 过程:又称为函数过程,这种过程可以返回值。 (3)Property 过程:又称为属性过程,这种过程可以返回并指定值,以及设置对

65、象引用。 3.9 VisualBasic3.9 VisualBasic中的过程中的过程 1事件过程 当用户对VisualBasic的一个对象发出一个动作时,Windows会通知VisualBasic产生一个事件,Visual Basic会自动地调用与该事件相关的事件过程。事件过程的名字是由VisualBasic自动给出的,它是由对象名和事件名组成,如Form_click。 2通用过程 通用过程告诉应用程序如何完成一项指定的任务。通用过程不与任何特定的事件相联系,所以,一旦确定了通用过程,就必须由别的过程来调用,它可以存储在窗体或标准模块中。3.9 VisualBasic3.9 VisualBa

66、sic中的过程中的过程 二、定义和调用通用过程 定义通用过程的方法有两种: 1.在“代码”编辑窗口中输入Private|PublicStaticSub Private|PublicStaticSub ( (形参表形参表) Exit Sub Exit Sub End SubEnd Sub说明:说明:(1)可以将通用过程放入标准模块、类模块和窗体模块中。 3.9 VisualBasic3.9 VisualBasic中的过程中的过程 (2)如果使用Static(静态)关键字,则该过程中的所有局部变量的存储空间只分配一次,且这些变量的值在整个程序运行期间都存在,即在每次调用该过程时,各局部变量的值一直

67、存在;如果省略Static,过程每次被调用时重新为其变量分配存储空间,当该过程结束时释放其变量的存储空间。 (3)过程名:通用过程的名称,遵循标准的变量命名约定。 (4)语句序列:是VisualBasic的程序段,语句序列中可以用一个或多个Exit Sub语句从过程中退出。 (5)形参表中出现的参数称为形式参数,简称为形参。它声明了从调用过程传递进来的值。它代表在调用时要传递给通用过程的参数的变量列表。多个变量则用逗号隔开。 3.9 VisualBasic3.9 VisualBasic中的过程中的过程 2.使用“添加过程”对话框 使用“添加过程”对话框建立过程的方法为 (1)打开要添加过程的代

68、码编辑窗口。 (2)选择“工具”菜单 |“添加过程”命令,弹出“添加过程”对话框,如图3.6所示。 (3)在“名称”文本框中输入过程名。从“类型”组中选择过程类型。从“范围”组中选择范围,相当于使用Public或Private关键字。 (4)单击“确定”按钮。3.9 VisualBasic3.9 VisualBasic中的过程中的过程 2.使用“添加过程”对话框 (1)打开要添加过程的代码编辑窗口。 (2)选择“工具”菜单 |“添加过程”命令,弹出“添加过程”对话框,如图3.6所示。 (3)在“名称”文本框中输入过程名。从“类型”组中选择过程类型。从“范围”组中选择范围,相当于使用Public

69、或Private关键字。 (4)单击“确定”按钮。图3.6 “添加过程”对话框3.9 VisualBasic3.9 VisualBasic中的过程中的过程 三、定义和调用函数过程 1.函数过程的定义 定义函数过程的语法是:Private|PublicStaticFunction Private|PublicStaticFunction ( () As As = Exit Function Exit Function =End FunctionEnd Function3.9 VisualBasic3.9 VisualBasic中的过程中的过程 说明:说明: (1)函数名:即Function过程的

70、名字。As指定Function过程返回值的类型,可以是Integer,Long,Single,Double,Currency,String或Boolean。如果没有As子句,缺省的数据类型为Variant。 (2)表达式:表达式值是函数返回的结果。在语法中通过赋值语句将值赋给函数名,该值就是Function过程返回的值。如果在Function过程中省略“=”,则该过程返回一个默认值:数值函数过程返回0,字符串函数过程返回空字符串。因此,为了能使一个Function过程完成所指定的操作,通常要在过程中为赋值。 (3)是程序段,语句序列中可以用一个或多个Exit Function语句从函数中退出。

71、Function语法中其他部分的含义与Sub相同。3.9 VisualBasic3.9 VisualBasic中的过程中的过程 例:已知直角三角形两直角边的值,计算第三边(斜边):Function Hypotenuse (A As Integer, B As Integer) As String Hypotenuse = Sqr (A 2 + B 2)End Function例:计算任意整数n的阶乘的function过程fact:Function fact(x As Integer) As Long Dim p As Long,i As Integerp=1For i=1 to xp=p*iN

72、ext iFact=pEnd Function3.9 VisualBasic3.9 VisualBasic中的过程中的过程 2.函数过程的调用 Function过程的调用比较简单,可以像使用VisualBasic内部函数一样来调用Function过程,即在表达式中写上它的名字。 Text2.text= Hypotenuse(3,6) Text1.text=fact(5) 还可像调用Sub过程那样调用Function过程。下面的代码调用了同一个Function过程: Call Hypotenuse(3,6) Hypotenuse 3,6 3.9 VisualBasic3.9 VisualBasi

73、c中的过程中的过程 例:求3到10的阶乘之和。 求阶乘的函数过程在前面已经列出,这里只给出命令按钮“计算”的Click事件代码:Private Sub Command1_Click() Dim sum As Long, i As Integer For i = 3 To 10 sum = sum + fact(i) Next i Label2.Caption = sum End Sub图3.6 求3到10的阶乘之和 四、过程和函数的参数 当将变量传递到过程时,称变量为参数。在“参数列表”中的参数的语法为:Optional ByVal | ByRef ParamArray Optional By

74、Val | ByRef ParamArray 参数名参数名( ) ( ) As As 数据类型数据类型 = = 缺省值缺省值 说明:说明: (1)Optional:可选项。表示参数不是必需的。 (2)ByVal:可选项。表示该参数按值传递。 (3)ByRef:可选项。表示该参数按地址传递。ByRef是Visual Basic的缺省选项。 (4)ParamArray:可选项。只用于“参数列表”的最后一个参数,指明最后这个参数是一个 Variant元素的可选数组。 3.9 VisualBasic3.9 VisualBasic中的过程中的过程 (5)参数名:必需的。代表参数的变量的名称;遵循标准的变

75、量命名约定。 (6)数据类型:可选的。传递给该过程的参数的数据类型。 (7)缺省值:可选的。任何常数或常数表达式。只对 Optional 参数合法。 1.按地址传递参数 在VisualBasic中,参数默认是按地址传递的。所谓按地址传递参数,就是使过程按照变量的内存地址去访问实际变量的内容。结果,将变量传递给过程时,通过过程可永远改变变量值。 3.9 VisualBasic3.9 VisualBasic中的过程中的过程 例:过程test通过地址将变量x传入,在过程中改变了x的值,当返回时x的数值已经改变,如图3.7所示。Sub test(i As Integer) i = i + 1 End

76、Sub Private Sub Form_Click() Dim x As Integer : x = 4 Print 执行test过程前:x= & x test x : Print 执行test过程后:x= & x End Sub3.9 VisualBasic3.9 VisualBasic中的过程中的过程图3.7 按照地址传递参数 2.按值传递参数 按值传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所作变动只影响副本而不会影响变量本身。用ByVal 关键字指出参数是按值来传递的。例:将test过程改为按值传递参数,运行应用程序,结果如图3.8所示。 Sub Test(ByVal

77、i As Integer) i = i + 1 End Sub3.9 VisualBasic3.9 VisualBasic中的过程中的过程图3.8 按值传递参数 3.使用可选的参数 在过程的参数列表中列入Optional关键字,就可以指定过程的参数为可选的。如果指定了可选参数,则参数表中此参数后面的其它参数必是可选的,并且用Optional关键字来声明。 3.9 VisualBasic3.9 VisualBasic中的过程中的过程 下面代码提供所有可选参数,运行结果如图3.9所示。Dim strName As StringDim strAddress As StringSub ListText

78、1(x As String, Optional y As String) List1.AddItem x If Not IsMissing(y) Then List1.AddItem y End IfEnd Sub Private Sub Command1_Click() strName = yourname 未提供第二个参数。 strAddress = 12345 Call ListText1(strName, strAddress) End Sub Sub ListText2(Optional x As String, Optional y As Variant) List2.AddIte

79、m x List2.AddItem y End Sub Private Sub Command2_Click() strName = yourname Optional strAddress = 12345 提供了两个参数。 Call ListText2(strName, strAddress)End Sub3.9 VisualBasic3.9 VisualBasic中的过程中的过程 3.9 VisualBasic3.9 VisualBasic中的过程中的过程图3.9 可选参数试验 3.9 VisualBasic3.9 VisualBasic中的过程中的过程 4.使用不定数量的参数 一般说来,

80、过程调用中的参数个数应等于过程说明的参数个数。但是使用 ParamArray 关键字,过程将接受任意个数的参数。 ParamArray 关键字只用于“参数列表”中的最后一个参数,指明最后这个参数是一个 Variant元素的可选数组。 例如:我们可以利用ParamArray关键字来编写一个求任意多个数总和的Sum函数,此程序的运行结果如图3.10所示。图3.10 使用不定量的参数 3.9 VisualBasic3.9 VisualBasic中的过程中的过程 五.过程的嵌套与递归调用 在一个过程(Sub过程或Function过程)中调用另外一个过程,称为过程的嵌套调用;而过程直接或间接地调用其自身

81、,则称为过程的递归调用。 l.过程的嵌套 Visual Basic虽然不能嵌套定义过程,但可嵌套调用过程,也就是主程序可以调用子过程,如图3.11所示。主程序调用P_Exp1End SubP_Exp1调用P_Exp2End SubP_Exp2End Sub图3.11 过程的嵌套 3.9 VisualBasic3.9 VisualBasic中的过程中的过程 例:输入参数n,m,求组合数Cmn n!/m!(n - m)!的值。 求阶乘函数过程Fact的代码: Private Function Fact(x) p = 1 For i = 1 To x p = p * i Next i Fact =

82、p End Function 求组合数用Function过程Comb的代码: Private Function Comb(n, m) Comb = Fact(n)/(Fact(m) * Fact(n - m) End Function 3.9 VisualBasic3.9 VisualBasic中的过程中的过程 等号按钮Commandl的Click事件的代码: Private Sub Command1_Click() m = Val(Text1.Text) n = Val(Text2.Text) If m n Then MsgBox 请保证参数的正确输入。 Exit Sub End If Te

83、xt3.Text = Format(comb(n, m), ) End Sub图3.12 用嵌套调用组合数 3.9 VisualBasic3.9 VisualBasic中的过程中的过程 2.过程的递归 递归算法是指一个过程直接或间接调用自己本身,即自己调用自己。例:利用递归方法来计算n!。窗体的设计及对象属性的设置如图3.13所示。首先定义一个求阶乘的递归函数fact。Private Function fact(n) As Double If n 0 Then fact = n * fact(n - 1) Else fact = 1 End IfEnd Function 3.9 VisualB

84、asic3.9 VisualBasic中的过程中的过程 等号按钮Commandl的Click事件的代码: Private Sub Command1_Click() Dim n As Integer : Dim m As Double n = Val(Text1.Text) If n 10 Then MsgBox 非法数据 Exit Sub End If m = fact(n) Text2.Text = Format(m, ) End Sub图3.13 用递归方法求阶乘 3.9 VisualBasic3.9 VisualBasic中的过程中的过程 6.过程的作用范围 过程也有作用的范围(作用域)

85、,在VisualBasic中,过程的作用域分为模块级(或称文件级)和全局级(或称工程级)。 1.模块级过程 模块级过程是在某个模块(文件)内定义的过程。如果在Sub或Function前加关键字Private,则该过程只能被在本模块(文件)中定义的过程调用。即其作用域为本模块(文件)。 2.全局级过程 全局级过程是在定义过程时,在Sub或Function前加关键字Public(可以默认)。全局级过程可被整个应用程序所有模块(文件)中定义的过程调用。即其作用域为整个应用程序(工程)。 3.9 VisualBasic3.9 VisualBasic中的过程中的过程 3.调用其他模块中的过程 (1)调用

86、窗体中的过程。所有窗体模块的外部调用必须指向包含此过程的窗体模块。如果在窗体模块(Form1)中包含某个子过程(SomeSub(参数列表),则可使用下面的语句调用Form1中的过程: Call Form1.SomeSub(Call Form1.SomeSub(参数列表参数列表) ) (2)调用类模块中的过程。与窗体中调用过程类似,在类模块中调用过程,也应该调用与过程一致并且指向类实例的变量。 例如:DemoClass是类Classl的实例,SomeSub是DemoClass中的子过程。 Dim DemoClass as New Class1 DemoClass.SomeSub (3)调用标准模

87、块中的过程。 3.9 VisualBasic3.9 VisualBasic中的过程中的过程例、全局级过程的调用,如图3.14所示。 Form1窗体模块中的过程代码如下: Public Function mian_ji(x As Single, y As Single) As Single mian_ji = x * y End Function Private Sub command1_click(index As Integer) Dim a As Single, b As Single Dim n As Integer a = Val(Text1(0).Text):b = Val(Text

88、1(1).Text) n = index If n = 0 Then Label2(0).Caption = mian_ji(a, b) Else Label2(1).Caption = zhou_chang(a, b) End If End Sub Private Sub Form_Load() Form2.Show End Sub 3.9 VisualBasic3.9 VisualBasic中的过程中的过程Form2窗体模块中的过程代码如下:Private Sub command1_click(index As Integer) Dim a As Single Dim b As Singl

89、e Dim n As Integer a = Val(Text1(0).Text) b = Val(Text1(1).Text) n = index If n = 0 Then Label2(0).Caption = Form1.mian_ji(a, b) Else Label2(1).Caption = zhou_chang(a, b) End IfEnd Sub标准模块Module1中的过程代码:Public Function zhou_chang(x As Single, y As Single) As Single zhou_chang = 2 * (x + y)End Functio

90、n 3.9 VisualBasic3.9 VisualBasic中的过程中的过程图3.14 不同窗体对过程的调用 本章小结本章小结 1.标识符 标识符是为程序中的变量、常量、数据类型、过程、函数和类等定义的名字,利用标识符实现对上述对象的引用。Visual Basic中标识符的命名规则如下: (1)标识符必须以字母开头,后面可以是字母、数字、下划线。 (2)标识符的长度不能超过255个字符。 (3)自定义的标识符不能和VisualBasic中已有运算符、语句、函数和过程名等关键字同名。也不能与系统的方法和属性同名。 (4)关键字是VisualBasic保留下来的作为程序中有固定含义的标识符,不

91、能被重新定义。本章小结本章小结 2.程序的书写规则 VisualBasic的程序书写规则如下: (1)程序注释。 (2)将一行语句写成多行。 (3)将多行语句写成一行。 (4)VisualBasic代码不区分字母大小写。 3.数据类型、常量和变量 4.运算符和表达式 VisualBasic中的运算符包括赋值运算符、数学运算符、位运算符、关系运算符和逻辑运算符。本章小结本章小结 5.数组 6.结构化程序设计的基本结构 3种程序的基本结构:顺序结构、选择结构和循环结构。 7.常用内部函数 在VisualBasic中有两类函数:内部函数和用户定义函数。 8. VisualBasic过程的种类 在VisualBasic中存在下列几种过程: (1)Sub 过程:又称为子过程,这种过程不返回值。 (2)Function 过程:又称为函数过程,这种过程返回值。 (3)Property 过程:又称为属性过程,这种过程可以返回并指定值,以及设置对象引用。

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

最新文档


当前位置:首页 > 办公文档 > 工作计划

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