null第3章 VB语言基础第3章 VB语言基础3.1 语法
规则
编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf
3.2 数据类型
3.3 常量、变量和函数
3.4 运算符和
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
达式
3.1 语法规则3.1 语法规则 每一种高级程序MATCH_
word
word文档格式规范word作业纸小票打印word模板word简历模板免费word简历
_1713510438725_1语言源程序代码的书写都有一定的规则,以便于程序的阅读,VB也不例外,其源程序代码的编写具有自己的风格。3.1 语法规则3.1 语法规则1.VB源代码不区分字母的大小写:在代码窗口中,VB对用户输入的程序代码进行自动转换,以提高程序的可读性:
VB关键字的首字母总被转换成大写,其余字母被转换成小写;
若关键字由多个英文单词组成,每个单词的首字母都将被转换成大写;
对用户自定义的变量、过程名,VB以第一次定义的为准,以后输入时VB自动向首次定义的转换;
没有定义的变体型变量,则按最后一次书写的格式自动转换,这样对统一格式不利,因此建议大家最好是先定义再使用变量。3.1 语法规则3.1 语法规则2.语句书写自由
同一行中可以写多个语句,语句间用冒号“:”分隔;
一个语句可分为若干行书写,但须在行后加续行标志(空格加下划线“_”);
代码的分隔符用空格或Tab键;
每行字符长度不超过255个字符。
3.适当添加注释有利于程序的维护和调试
以关键字Rem开头或以撇号“’”开头引导注释内容,且以撇号开头的注释还可直接出现在语句后面。
可通过“编辑”工具栏的“设置注释块”、“解除注释块”按钮,为选中的若干行语句(或文字)统一设置注释或取消注释。
注:有语法意义的标点符号,必须是英文状态的标点,而不能是中文状态的标点。3.2 数据类型3.2 数据类型数据类型的定义:在具有共性的数据集合上定义了若干封闭的运算,这就构成了一个数据类型。因此数据类型的两个要素是数据集合和其上的运算。简单地说,数据类型 = 数据集合 + 定义在其上的运算。
数据类型决定数据的存储方式,包括数据的大小、有效位、是否有小数点等。在不同的程序设计语言中,数据类型的规定和处理方法也不相同。VB中数据类型分为基本数据类型和自定义数据类型。基本数据类型是VB中已经定义的一些常用的
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
的数据类型,自定义数据类型是为了满足程序员构造特殊数据类型的需要。 3.2.1 基本数据类型3.2.1 基本数据类型1.字符串(String)数据类型
字符串是指由ASCII字符、汉字及其它可打印字符组成的文本。字符串有定长字符串和可变长字符串。当声明一个变量为String型时,按系统默认设置为可变长字符串,其长度由为它赋值的字符串决定;定长字符串可用语法“String * Size”表示,当给定长字符串变量赋值时,若字符串的长度变量的长度长,则将字符串的尾部截去;若字符串的长度比变量的长度短,则在尾部补空格。数值字符串(由数字组成的字符串)和数值型变量可以互相赋值。例如:
Dim x As Single , y AS String
x = 123.456 : y = x 'y 的值为"123.456"
x = Int(y) 'x 的值为123
3.2.1 基本数据类型3.2.1 基本数据类型2.数值(Numeric)数据类型:数值型数据类型包括整型、长整型、单精度浮点型、双精度浮点型、货币型和字节型。
(1)整型(Integer):以两个字节(16位二进制码)表示和参加运算。
十进制整数,取值范围是-32768~32767;
八进制整数,前面冠以&或&O,其取值范围是-&177777~&177777;
十六进制整数,前面冠以&H,其取值范围是-&HFFFF~&HFFFF。
(2)长整型(Long):以4个字节(32位二进制)存储。
十进制长整数,取值范围是-2147483648~+2147483647;
八进制或十六进制形式表示长整数,数字序列都应以符号“&”结尾。它们示数的绝对值范围分别是&0&~&37777777777&和&H0&~&HFFFFFFFF&。
值得注意的是,输出时,系统将自动把程序中用八进制或十六进制形式表示的整数、长整数转换成十进制数据形式输出。3.2.1 基本数据类型3.2.1 基本数据类型(3)字节型(Byte):以一个字节(8位二进制)存储无符号整型数,取值范围0~255。
(4)单精度浮点数(Single):以4个字节(32位)存储,其中符号位占1位,指数占8位,其余23位表示尾数。单精度可以精确到7位十进制数。其负数的取值范围是-3.402823E+38 ~ -1.401298E-45,正数的取值范围是1.401298E-45~3.402823E+38。指数用“E”(或“e”)表示。
(5)双精度浮点数(Double):用8个字节(64位二进制)存储,其中符号占1位,指数占11位,其余52位表示尾数。双精度可以精确到15位或16位十进制数。其负数的取值范围是-1.797693134862316E+308~-4.94065645841247E-324,正数的取值范围是4.94065645841247E-324~1.797693134862316E+308。
双精度浮点数的指数可用“D”(或“d”)表示,VB会自动转换成E。3.2.1 基本数据类型3.2.1 基本数据类型(6) 货币类型数据(Currency)
货币型是为表示金融和财务中处理钱款而设置的,以8字节(64位)存储,精确到小数点后4位。其取值范围是:
-922337203685477.5808 ~922337203685477.5807。
3.逻辑型数据(Boolean):也称为布尔型,用来表示二值状态的数据,如逻辑的真与假。Boolean 数据类型用于逻辑判断,它只有True和False两个值。当逻辑型数据转换成整型数据时,True转换为 -1,False转换为0;当其它类型数据转换为逻辑型数据时,非0值转换为True,0转换为False。3.2.1 基本数据类型3.2.1 基本数据类型4.日期 (date)数据类型:用来表示日期和时间,它是以8个字节的浮点数形式来存储的。整数部分表示距1899年12月30日的天数,小数部分表示距午夜的时间(如中午为0.5),负数表示1899年12月30日以前的日期。但使用的时候只要将按日期/时间格式书写的字符串用“#”号括起来即可。如:# 7/1/97 8:30 am #。
可对日期型数据作算术运算。加减整数为加减天数,加减小数为加减时间。
5.对象数据类型(Object):用来表示图形、OLE对象或其他对象,用4个字节(32位)来存储。
3.2.1 基本数据类型3.2.1 基本数据类型6.变体数据类型(Variant):变体是一种特殊的数据类型,是所有未定义类型的变量的缺省类型。即如果程序中的变量未定义类型,VB将视之为变体类型。它可以用来存储上面介绍的任何一种类型的数据。
此外,VB中还可以包含四个特殊的数据:
Empty(空)表示变量未指定确定的数据;
Null(虚无值)通常在数据库应用程序中使用,用来指示未知数或数据丢失;
Error(出错)指出过程中出现了一个错误条件;
Nothing(无指向)表示数据还没有指向一个具体对象;
注:在实际编程中,应该特别注意上述各种数据类型的取值范围。3.2.2 自定义数据类型3.2.2 自定义数据类型 VB提供基本数据类型,可以用它们来定义基本数据项,但是,在实际应用中,往往要处理多个数据项组成的组合项,这些数据项不是孤立的,而是可以看作有机的整体。这就要求我们能根据具体问题的需要来构造一个能表示表中一行数据的新数据类型。 定义记录类型的语法格式如下:
Type 自定义数据类型名
元素名[(下标)]As类型名
…
End Type
其中:自定义数据类型名:是要定义的数据类型的名字,由程序员自己命名。
元素名:自定义类型中的一个成员的名字。
下标:表示数组(第四章介绍)作为自定义类型的成员。
类型名:成员所属的数据类型,可以是VB的基本数据类型。3.2.2 自定义数据类型3.2.2 自定义数据类型例:定义一个用来记录上述学生信息的自定义数据类型。
Type StudType
intNo As Integer '学号
strName As String*20 '学生姓名
strSex As String*2 '性别
sngChinese As Single '语文成绩
sngMath As Single '数学成绩
sngTotal As Single '总分
End Type
定义好新数据类型后,就可用这种数据类型来定义变量。例如:
Dim Student As StudType
使用时,访问变量Student中的某个元素的方法: 变量名.元素名
例如,要访问Student变量所代表的学生的学号,应表示为:Student.intNo;要访问学生的语文课成绩应表示为:Student.sngChinese。3.3 常量、变量和函数3.3 常量、变量和函数 变量:在程序的运行过程中,其值可以改变的量称为变量。变量的本质是计算机内被命名的存储位置,在程序代码中定义一个变量,指定了一个变量名,运行时系统根据其数据类型为之分配合适的存储空间。在程序中,我们可以通过变量名来访问相应的存储单元中存放的数据,该存储单元所表示的值,我们就称之为变量的值。变量一经赋值,可以多次读出,其值保持不变,直到再次给该变量赋以新值。
常量:是在程序的运行过程中其值保持不变的量。VB中定义了许多内部常量,同时也允许用户定义常量。
函数:是指能完成某种特定的操作或运算一段子程序,并且在子程序完成后带回一个值,这个值就称为函数的返回值。VB把常用功能模块做成了内部函数,程序员可以直接使用这些函数,也可以自己编写特定功能的函数。3.3.1 标识符命名规则3.3.1 标识符命名规则 在VB0中,用户可以根据实际情况为变量、常量等对象定义标识符,即他们的名字。定义名字的目的是为了在程序中按名字来访问或调用它们。合法的标识符不仅要具有唯一性(在其作用域内),而且必须遵循以下命名规则:
以字母或汉字开头,由字母、汉字、数字或下划线组成的1--255个字符。如ab , a1, a_b都是合法标识符。而1a ,b-a 为非法的标识符。
不能使用VB的关键字。如Private 、Sub、 End、If 等都不能定义为变量或常量名。
常量或变量的名称中的字母不区分大小写。如XYZ,xyz,xYz认为是同一标识符。
为了增加程序的可读性,可以在标识符前加前缀来表明该变量或常量的数据类型参见教材表3-1。3.3.2 常量3.3.2 常量 常量分为值常量和符号常量。
1.值常量,是指直接在程序中使用的常量值。各种数据类型都有直接使用的常量,但是表示方式不同。
(1) 整型常量:十进制整型常量,如-100;八进制的整型常量是以&或&O开头,如&O256,-&100;十六进制整型常量是以&H开头,如-&H1A2B。
(2) 字符型常量:在程序代码中,用双引号括起来的字符串,称为字符串常量。如 “What is your name?”,“12345”。
特殊地,“”表示空字符串,即双引号之间没有任何字符,利用它可能清空字符串变量。
(3) 实型常量,包括单精度和双精度两种。单精度浮点数可精确到7位有效数:如3.141592(普通表示法),1.234567E+38(科学计数表示法);双精度浮点数可精确到15位有效数:如-1.23456789E+308。3.3.2 常量3.3.2 常量(4) 布尔型常量:布尔型又称为逻辑型,它只有两种可能的取值,True(表示逻辑真),False(逻辑假)。
(5) 货币类型常量:用通常的小数来表示。如:312300.3567, 3.1748。
(6) 日期型常量:日期型数据有两种表示方法:
以符号“#”括起来的任何在字面上可被认作日期和时间的字符。例如以下日期型常量都是合法的:
#January 1,1998# 表示1998年1月1日
#1 Jan,98# 表示1998年1月1日
#2001-10-1 12∶30∶00pm#。 表示2001年10月1日中午12时30分0秒
用数字序列表示,小数点左边的数字表示日期,小数点右边的数字表示时间。0为午夜,0.5为中午12点。负数代表1899年12月31日之前的日期和时间。如-2.5表示1899年12月28日12∶00∶00。3.3.2 常量3.3.2 常量2.符号常量
给某个常量值指定一个有意义的名称,这个名称就代表这个常量。符号常量有两类:一类是用户定义的常量;另一类是系统提供的VB常量。
(1) 用户定义的常量
声明常量: Const 常量名 [As 类型] = 表达式
说明:
Const:VB关键字,用来定义用户自定义的符号常量。
常量名:是用户为常量命的名,即用户定义标识符。
As类型:该项可选,用来说明常量的数据类型。若省略该项,则由系统根据表达式的求值结果,确定最合适的数据类型。
表达式:可以是数值常数,字符串常数以及由除Is以外的任意的算术运算符和逻辑运算符所构成的表达式。
在一行中说明多个常数时使用逗号分隔。3.3.2 常量3.3.2 常量在使用常量时,须注意以下几点:
① 常量名具有唯一性,并且是一个合法的标识符,其有效作用范围为常量声明语句所在的程序单元。
② 符号常量的值在定义时就固定下来了,程序代码中任何其它地方都不能再修改它的值,否则系统报错。
③ 常量声明时若不指明数据类型,有时存在多义性。如值3.01可能是单精度型,也可能是双精度型或货币型。VB将选择需要内存容量最小的表示方法处理,值3.01通常被作为单精度数处理。
(2) 系统提供的常量
VB提供了许多预先定义好的常量(系统常量),如 vbCrLf 表示:“回车+换行”,即chr(10)+chr(13);再如 VbMaximized 表示“极大化”。很显然用符号常量较为简单、直观。3.3.3 变量3.3.3 变量 在程序的运行过程中,其值可以改变的量称为变量。变量是计算机内被命名的存储位置,在程序代码中指定一个变量名,运行时系统就为之分配合适的存储空间,该存储单元中的值可以改变。
在VB语法中,变量可以不预先声明而直接使用,但是这样并非一种好的编程习惯。
推荐做法:变量在使用之前先声明(或定义),并指定改变量的数据类型,这样不仅可减少内存开销,提高运行速度,而且可以避免一些非常隐蔽的程序错误。
可以将上述推荐做法变成强制性的要求,即在窗体的通用声明段(代码窗口的最顶端)中添加Option Explicit语句,此时,程序中用到的所有变量必须先声明才能使用。3.3.3 变量3.3.3 变量1.声明变量的方法
(1)用语句声明。格式如下:
Dim /Public /Private /Static 变量名 [As 数据类型][, 变量名 [As 数据类型]…]
变量名:应遵从合法标识符的命名规则。
数据类型:可以是前面列出的任何一种,包括自定义型。
中括号中部分:是可选部分
一条Dim语句可同时定义多个变量,以逗号分隔。但每个变量应该有自己的类型声明,类型声明不能共用。
变量被声明后,VB即为变量赋缺省的初值,一般情况如下数值型变量的缺省初值为0;字符串型为空串(“”);布尔型为False ;日期/ 时间型为1899年12月30日0点0分0秒;对象型为Nothing;变体型为空Empty。3.3.3 变量3.3.3 变量【例3-1】定长与不定长字符串举例。
Private Sub Form_Click()
Dim a As String * 5 '长度5个字符
Dim b As String
a = "abc" '长度不足5个字符
b = "123abc456efg"
Print a; b
a = "abcdefgh" '长度超过5个字符
b = "这是变长字符串"
Print a; b
End Sub 运行结果3.3.3 变量3.3.3 变量 (2)用类型符(参见教材表3-1)直接声明变量。格式如下:
Dim 变量名 类型符
如:Dim item% ' 声明整型变量item
Dim shight! ' 声明单精度型变量shight
Dim strname$ ' 声明字符串型变量strname
Dim cxyz@ ' 声明货币型变量cxyz
(3)隐式声明:在窗体的通用声明段中添若无Option Explicit语句,则可以不声明变量而直接使用,但程序出错时不易查出,一般不提倡这样做。3.3.3 变量3.3.3 变量2.变量的作用范围
声明变量的位置不同以及声明时使用的关键字不同,所声明的变量的有效范围也不一样。VB中变量的有效范围有三个等级:
全局变量:在整个工程所有模块中有效。在标准模块的声明部分,用Public声明的变量为全局变量,用Private或Dim声明的变量为模块级变量。
窗体模块/标准模块级变量:只在该窗体模块或标准模块的各个过程中使用,其它模块中的代码不能引用。若在窗体中用Public声明全局变量,则在其它模块中引用时,须在变量前加声明此变量的窗体名。
过程级(局部)变量:只在一个过程内有效,在其它过程中均无效。局部变量对任何临时性计算非常有用。在过程中用Private 、Dim或Static声明的变量均为窗体模块级变量,其中Static用于定义静态变量且只能在过程中使用,Dim用于定义动态变量。
不同作用范围的3种变量声明及使用规则如教材表3-4所示。3.3.3 变量3.3.3 变量3.关于变体类型(Variant)的变量
VB中,变体类型是变量的缺省类型。以下三种方式变体类型变量的声明是等价的:
(1) 在Dim语句中使用类型关键字Variant定义,如:
Dim varExample As Variant
(2) 在Dim语句中仅定义变量名而不声明类型,如:
Dim VarA,VarB
(3) 隐式声明的变量,系统默认为变体类型变量。
在Variant变量中,可以存放任何类型的数据,包括数值、字符串、日期和时间等。向Variant类型的变量赋值时,不必进行任何转换,VB自动完成各种必要的转换。3.3.4常用内部函数3.3.4常用内部函数 程序设计中的函数是指一段小的子程序,它能完成某种特定的操作或运算,并且在子程序完成后带回一个值,这个值就称为函数的返回值。VB把常用功能模块做成了内部函数,程序员可以直接使用这些函数而不必自己再花时间去编写,利用这些函数可以大大简化代码的编制。
用户在使用这些内部函数时,只需写出它的函数名和填入函数的参数就可直接引用,并且参数必须在函数名后用括号括起来。若参数有多个,则参数之间必须用逗号隔开。若函数不带参数,则调用时直接写出函数名即可。例如,下面的几种函数调用都是合法的:
x=Sin(x) '返回x的正弦值
Print Format(Now, "hh:mm:ss") '返回当前时刻的″hh:mm:ss″格式
Print Now '返回当前系统时间日期
3.3.4常用内部函数3.3.4常用内部函数 VB的内部函数大体上可分为数学函数、转换函数、字符串函数、时间/日期函数和随机函数等。这些内部函数的详细用法请参见MSDN(Microsoft Developer Network) 联机帮助文档。
对一个常用内部函数,应掌握以下几点:
(1)函数的功能,即它能完成的操作。
(2)参数的格式,包括函数的名字,参数的个数、位置、数据类型。
(3)函数返回值的意义和数据类型。
要检验各函数的功能,可在【立即】窗口中输入“Print 函数名(参数)”并回车,则可立即显示出该函数的值。3.3.4常用内部函数3.3.4常用内部函数1.数学函数
VB中的数学函数与数学中的定义一致,但三角函数中的参数以弧度为单位。
(1) Sin()函数:计算角度的正弦值。格式:Sin(x)
(2) Cos()函数:计算角度的余弦值。格式:Cos(x)
(3) Tan()函数:计算角度的正切值。格式:Tan(x)
(4) Atn()函数:计算反正切值。格式:Atn(x)
(5) Log()函数:计算自然对数值。格式:Log(x)
(6) Exp()函数:计算以e为底的幂。格式:Exp(x)
(7) Sqr()函数:计算平方根。格式:Sqr(x)3.3.4常用内部函数3.3.4常用内部函数(8) Abs()函数:计算绝对值。格式:Abs(x)
(9) Hex()函数:将十进制数值转换为十六进制数值或字符串。格式:Hex(x)
(10) Oct()函数:将十进制数值转换为八进制数值或字符串。格式:Oct(x)
(11) Sgn()函数:判断参数的符号。
格式:Sgn(x)
参数:x为一个数值型常量或变量或表达式。
返回值:当x>0,返回值+1;当x=0,返回值0;当x<0,返回值-1。
3.3.4常用内部函数3.3.4常用内部函数2.转换函数
转换函数用于数据类型或形式的转换,包括整型、浮点型、字符串型之间以及与ASCII码字符之间的转换。
(1) Str()函数:将数值型数据转换成字符串型数据。
格式:Str(Numerical)
参数:函数中的参数只有一个, 为数值型的常量、变量或表达式。
返回值:由参数转换而来的一个字符串型常量。
例 X=5645
A=Str(X)
结果:A的值为″5645″3.3.4常用内部函数3.3.4常用内部函数(2) Val()函数:将数字字符串转换成数值型常数。
格式:Val(String)
参数:参数为字符串类型的变量或常量或表达式。
返回值:若参数字符串中包含“·”,则只将最左边的一个“·”转换成小数点;若参数字符串中包含有“+”或“-”,则只将字符串首的“+”、“-”号转换为正、负号;若参数字符串中还包含有除数字以外的其他字符,则只将字符串中其他字符以前的串转换成数值。
例 A="+3.14+2 " : B="156B"
C="25.25.2868"
X=Val(A)
Y=Val(B)
Z=Val(C)
结果:X, Y, Z 的值分别为3.14, 156, 25.253.3.4常用内部函数3.3.4常用内部函数(3) Chr()函数:将ASCII码转换成相应字符。
例 A=Chr(97)
结果:由于"a"的ASCII代码为97,故A的值为"a"。
(4) Asc()函数:求出一个字符对应的ASCII码值。
例 A=Asc("C")
结果:A的值为67,即″C″的ASCII码值。
(5) Cint()函数:将数值的小数部分进行四舍五入,然后返回一整型量。
(6) Fix()函数
(7) Int()函数
例 X=Int(6.5)
Y=Int(-7.8)
结果:X的值为6,Y的值为-83.3.4常用内部函数3.3.4常用内部函数(8) Ccur()函数:将数值型量转换成货币型量,最多保留四位小数。
(9) Lcase()函数:将大写字母转为小写字母。
(10) Ucase()函数:将小写字母转换为大写字母。
除上述转换函数外,VB 6.0中还提供了Cdbl,Clng,Csng,Cbool,Cstr等类型转换函数,其详细用法请查询MSDN联机帮助文档。3.3.4常用内部函数3.3.4常用内部函数3.字符串函数
Windows系统采用DBCS编码来处理使用象形文字字符的东亚语言。DBCS编码实际上是一套单字节与双字节的混合编码,即西文与ASCII编码一样,是单字节;中文以两字节编码。
VB中采用的是Unicode编码,全部用两个字节表示一个字符的字符集。
为了不同软件系统的需要,VB提供了StrConv函数作为Unicode与DBCS之间的转换。
(1) StrConv()函数:将字符串转换成Unicode码字符串或 DBCS码字符串。
格式:StrConv(String,vbFromUnicode|vbUnicode)
参数:要求参数String为一字符串类型常量或变量或表达式。
返回值:函数StrConv(String,vbFromUnicode)返回String的DBCS码字符串;StrConv(String,vbUnicode)则返回String的Unicode码字符串。3.3.4常用内部函数3.3.4常用内部函数(2)InStr()函数::从字符串String1中的第N个字符开始找字符串String2。
格式:InStr([N],String1,String2,[M])
参数:若省略N(注意:N省略,则不能带参数M),从头开始找;若有参数N,则从String1的左端第N个字符开始找。M=1表示查找时不区分大小写,M=0或M省略表示查找时区分大小写。
返回值:若在String1中找到String2,则返回String1中第一次和String2匹配的第一个字符的顺序号;若找不到,则函数返回0。
例 x=InStr(2, "EFEfCDEFG","EF",0)
y=InStr(2, "EFEfCDEFG″, "EF",1)
结果:x赋值为7,y赋值为3。
(3)InStrRev()函数:与InStr函数的作用相似,只是从String1的尾部开始找String2。
格式:InStrRev(String1,String2,[N],[M])3.3.4常用内部函数3.3.4常用内部函数(4)Join()函数:将数组的各元素按指定的分隔符连接成字符串。
格式:Join(Array,[D])
参数:该函数的参数为一数组,分隔符D可省略。
返回值:若省略D,则各元素值顺序连接成字符串返回;若不省略D,则按分隔符D将各元素连接成字符串返回。
例 A=Array("123","ab","c")
c=Join(A, "/")
结果:C的值为字符串"123/ab/c"。
(5)Left()函数:取出字符左边的N个字符作为一个新的字符串。
格式:Left(String,N)
例 C=Left("ABCDEFG",3)
结果:C的值为"ABC"。3.3.4常用内部函数3.3.4常用内部函数(6)Len()函数:求字符串长度(即字符串的字符个数)。
例 x=Len("AB高等教育")
结果:x的值为6。
(7)LenB()函数:求字符串存储时所占的字节数。
例 x=LenB("AB高等教育")
结果:x的值为12。
(8)Ltrim()函数:去掉字符串左边的空格。
例 C="□□□ABCD"
D=Ltrim(C)
结果:D的值为"ABCD"。
(9)Rtrim()函数:去掉字符串右边空格。3.3.4常用内部函数3.3.4常用内部函数(10)Mid()函数:从字符串的中间取子串。
格式:Mid(String,N1,N2)
参数:从第N1个取起,取N2个。
例 C=Mid("ABCDEFG",2,3)
结果:C的值为"BCD"。
(11)Right()函数:取出字符串右边的N个字符。
(12)String()函数:产生由字符串的N个首字符组成的字符串。
格式:String(N,String)
例 C=String(3, "ABCDEF")
结果:C的值为"AAA"。
(13)StrReverse()函数:将字符串反序。3.3.4常用内部函数3.3.4常用内部函数4.日期与时间函数
说明:日期与时间函数中的"Date String|N"表示参数可以是字符串表达式或数值表达式,其中″N″表示相对于1899年12月31日前后的天数。注意:日期的显示与Windows“控制面板”中设置的日期格式一致。
(1)Date()函数:提取或设置系统的当前日期。
例 Print Date ’显示当前日期
Date=“2007-04-15” ’设置当前日期
(2)DateSerial()函数:产生日期。
格式:DateSerial(year,month,date)
参数:三个整型参数分别代表年、月、日。
例 Print DateSerial(2007,4,25)
输出结果:2007-4-253.3.4常用内部函数3.3.4常用内部函数(3)DateValue()函数:产生日期。
格式:DateValue(Date String)
例 Print DateValue(″7,4,20″)
输出结果:2007-4-20
(4)Day()函数:计算日期值。
例 Print Day(Date) ’假设当前日期为2007-4-22
输出结果:22
(5)Month()函数:计算月份值。
(6)MonthName()函数:返回月份名。
格式:MonthName(N|String)
例 Print MonthName("8"), MonthName(9)
输出结果:八月 九月3.3.4常用内部函数3.3.4常用内部函数(7)Year()函数:返回日期中的年号。
格式:Year(DateString|N)
参数:DateString为一日期字符串,N表示1899年12月31日前后的天数。
例 Print Year(″2001,12,20″), Print Year(365)
输出结果:2001,1899
(8)Now()函数:返回系统日期和时间。
(9)Time()函数:返回系统中的当前时间。
(10)Hour()函数:返回系统时间的小时。
(11)Minute()函数:返回系统时间分钟。
(12)Second()函数:返回系统时间的秒。
(13)Weekday()函数:返回星期值。
(14)WeekdayName()函数:返回星期名称。3.3.4常用内部函数3.3.4常用内部函数5.判断函数
(1)IsNumeric()函数:判断表达式是否为数字型。
(2)IsEmpty()函数 :判断变量是否已被初始化。
(3)IsDate()函数:判断表达式是否为日期。
(4)IsArray()函数:判断变量是否为数组。3.3.4常用内部函数3.3.4常用内部函数6.随机函数
在测试、模拟及游戏程序中,经常使用随机数。
(1)随机函数Rnd()
格式:Rnd[(x)]
功能:产生一个大于0小于1的单精度随机数。
参数:可有参数,也可省去参数。参数x为随机数生成时的种子。
例 产生一个[lower,Upper]范围内的随机整数。
Print Int((Upper-lower+1)*Rnd+lower)
(2)Randomize语句:设置随机数种子。
例 Randmize Timer ’将系统从午夜开始到现在经过的秒数作为随机数种子。3.3.4常用内部函数3.3.4常用内部函数7.Shell函数
VB不但提供了丰富的内部函数供用户调用,而且还可以通过Shell函数来调用Windows下运行的任何可执行程序。
格式:Shell 命令字符串,[窗口类型]
命令字符串:要执行的应用程序名,包括路径,必须是可执行文件(扩展名为.COM,.EXE,.BAT)。
窗口类型:程序运行时窗口的样式,一般取1,其它取值参见VB帮助。
函数调用成功后的返回值为一个任务标识ID,它是运行程序的唯一标识。3.4 运算符和表达式3.4 运算符和表达式 运算符:表示运算的符号称为运算符,如+,-,*,/等。参加运算的数据称为操作数,如常量、变量等。
表达式:由运算符和操作数构成的式子称为表达式,目的是求出一个新的值,如x+3,y+sin(a)等。表达式是程序设计语言的基本语法单位,它表达了一种求值规则。表达式是由常量、变量、函数、运算符及括号连接而成。
不同类型的数据可进行不同的运算。因为每一个表达式有一个结果值,表达式是有数据类型的,它决定了运算结果的数据类型。
VB中的运算符可分为:算术运算符、字符串运算符、关系运算符和逻辑运算符四类,分别可构成算术表达式、字符串表达式、关系表达式和逻辑表达式。
3.4.1算术运算符与算术表达式3.4.1算术运算符与算术表达式 VB提供了8种算术运算: ^(指数)、-(负号)、*、/(乘、除)、\(整除)、Mod(取余)、+、-(加、减)。
1.指数运算“^”:指数运算用来计算乘方和方根,其运算符为“^”。计算a^b时,若左操作数为正实数,则右操作数b可为任意数值。若左操作数a为负实数,则右操作数b必须是整数。
例 10^2 '10的平方,结果为100
10^ -2 '10的平方的倒数,即1/100,结果为0.01
25^0.5 '25的平方根,结果为5
2.浮点数除法“/”与整数除法“\”:
(1) “/”。运算结果的类型由其值决定。
例 3/2 '结果等于1.5,浮点数
3.6/1.8 '结果等于2,整数3.4.1算术运算符与算术表达式3.4.1算术运算符与算术表达式 (2)“\”。整除的操作数一般为整型数。当操作数带有小数点时,VB首先对其四舍五入为整型数,然后进行整除运算。运算结果简单地截取整数部分,小数部分不作舍入处理。
例 10\4 '结果等于2
20\2.6 '结果等于6
25.63\6.78 '结果等于3
3.取余运算“Mod”:用于求余数,结果是第一个操作数整除以第二个操作数所得的余数。如果左右操作数为实数,VB首先对其四舍五入取整,然后做求余运算。运算结果的符号取决于左操作数的符号。
例 10 Mod 4 '结果等于2
20 Mod 2.6 '结果等于2
-5 Mod 2 '结果等于-1
-5 Mod –2 '结果等于-13.4.1算术运算符与算术表达式3.4.1算术运算符与算术表达式4.算术表达式中算术运算符的优先级
VB中的算术运算符优先级顺序(从高到低)如下:^ 、 - 、 * 、 / 、 \、 Mod 、 +,-。
当一个表达式中含有多种算术运算符时,按级别由高到低进行,同级运算符从左到右运算。如果表达式中含有括号,则先计算括号内表达式的值;有多层括号时,从内层括号到外层括号计算。3.4.2 字符串运算符与字符串表达式3.4.2 字符串运算符与字符串表达式 字符串连接运算符有两个:“&”,“+”,它们的作用都是将两个字符串依次连接起来,生成一个新的字符串。字符串变量、字符串常量及字符串函数通过字符串运算符组合而成的表达式,称为字符串表达式,其值为一个字符串。
例 a="Visual ",b="Basic"
则a & b或a + b的运算结果都是"Visual Basic"。
运算符“&”时应注意,运算符“&”前后应各加一个空格,以免造成错误,这是因为符号“&”还是长整型的类型符。
此外,还需注意连接符“&”与“+”的区别:
“+”:连接符两旁的操作数均应为字符型;若均为数值型或当操作数为数字字符串时则进行算术加运算;若一个为含有非数字字符的字符型数据,另一个为数值型数据则出错。
“&”:连接符两旁的操作数不管是字符型还是数值型,进行连接操作前,系统先将操作数转换成字符型,然后再连接。3.4.2 字符串运算符与字符串表达式3.4.2 字符串运算符与字符串表达式 例 "xyz"+"123" '结果为"xyz123"
"xyz" & 123 '结果为"xyz123"
"xyz"+123 '出错
"123"+123 '结果为246
因此,如果要做字符串连接,建议尽量使用“&”,而不要用“+”。
3.4.3关系运算符与关系表达式3.4.3关系运算符与关系表达式 关系运算就是比较运算,作用是将两个操作数进行大小比较,比较的结果是一个逻辑值。由关系运算符连接成的表达式称为关系表达式。关系表达式的运算结果是一个逻辑值,若关系成立,返回True,否则返回False。在VB中,True用-1表示,False用0表示。操作数可以是数值型、字符型。
3.4.3关系运算符与关系表达式3.4.3关系运算符与关系表达式 对关系运算符需注意以下规则:
(1) 如果两个操作数是数值型,则按其大小比较。但对单精度或双精度数进行比较时,因为机器的运算误差,可能会得不到希望的结果。因此应避免直接判断两个浮点数是否相等,应该是对两个数误差的判断。
例 Abs(num1-num2)<1E-6
(2) 如果两个操作数是字符串型,则从左到右逐个字符比较,比较的是字符的ASCII码值,直到出现不同的字符为止。
例 "Student"= "Student" '结果为True
"ABCDE"<>"ABCDC" '结果为True
"D"<"d" '结果为True3.4.3关系运算符与关系表达式3.4.3关系运算符与关系表达式(3) 注意这样的比较运算的结果:
”123” > ”40” '结果为False
(4) 关系运算符的优先级相同。
(5) Like运算符用来比较字符串表达式和SQL表达式中的样式,主要用于数据库查询。Is运算符用于两个对象变量引用比较。Is运算符还可在Select Case语句中使用。
(6) 赋值运算与关系运算中的“相等”运算
在VB语言中“=”是一个具有二义性的符号,既可作为赋值运算符,又可以作为关系运算符中的“相等”运算符,它的实际意义需根据它所在的上下文来判断。3.4.4逻辑运算符与逻辑表达式3.4.4逻辑运算符与逻辑表达式 逻辑运算又称布尔运算。逻辑运算符的左右操作数要求为逻辑值。用逻辑运算符连接两个或多个逻辑量组成的式子称为逻辑表达式或布尔表达式。逻辑运算的结果是逻辑值True或False。3.4.4逻辑运算符与逻辑表达式3.4.4逻辑运算符与逻辑表达式逻辑运算符 说明 优先级 说明
Not 取反 1 当操作数为假时,结果为真
And 与 2 两个操作数均为真时,结果才为真
Or 或 3 两个操作数有一个为真时,结果为真
Xor 异或 3 两个操作数为一真一假时,结果才为真
Eqv 等价 4 两个操作数相同时,结果才为真
Imp 蕴含 5 第一个操作数为真,第二个操作数为假时,结果才
为假,其余结果均为真
3.4.5表达式的运算顺序3.4.5表达式的运算顺序
1. VB中按以下的先后顺序对表达式求值。
函数运算、算术运算、关系运算、逻辑运算
例 一个数值表达式的计算顺序如下:
x / sin (5 * x) ^ 3 * 6 - 4
↑ ↑ ↑ ↑ ↑ ↑
④ ② ① ③ ⑤ ⑥
例 设i=1,j=0,x=2,y=2,则下列逻辑表达式的运算顺序及最后所得的值为:True
x =2 Or Not y>0 And (x-y)/i < >0
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
③ ⑧ ⑥ ④ ⑦ ① ② ⑤3.4.5表达式的运算顺序3.4.5表达式的运算顺序2.在算术运算中,如果不同数据类型的操作数混合运算,则VB规定运算结果的数据类型采用精度高的数据类型。即
Integer<Long<Single<Double<Currency
但当Long型数据与Single型数据运算时,结果为Double型数据。
3.书写表达式时应注意:
(1)表达式要在同一行上书写成线性序列。
(2)乘号“*”不能省略,也不能用“·”代替。
(3)括号可以改变运算顺序。表达式中只能使用圆括号,且可以嵌套,不能使用方括号和花括号。本章小结本章小结
本章介绍了VB程序设计语言的语法规则、数据类型、常量、变量和常用内部函数等基本概念和基础知识,为下一章进入编程打好基础。这一部分内容比较多,而且内容较杂,我们学习时,不必一次全部都掌握,可以先大致了解其精神实质,具体的内容可在以后的应用中去理解和灵活使用。除了VB的语法规则应该要遵守外,一些非强制性的约定,也建议读者遵守,它能提高程序的可读性,及便于于程序的调试与维护。