第2章VisualBasic编程基础.ppt
2.1 数据类型2.2 常量与变量2.3 运算符和表达式2.4 Visual Basic的内部函数2.5 基本输入输出,第2章 Visual Basic编程基础,2.1 数据类型,数据类型决定数据的存储方式,包括数据的大小、有效位、是否有小数点等。在不同的程序设计语言中,数据类型的规定和处理方法也不相同。VB中数据类型分为基本数据类型和自定义数据类型。基本数据类型是VB中已经定义的一些常用的标准的数据类型,自定义数据类型是为了满足程序员构造特殊数据类型的需要。,2.1.1 基本数据类型,表2-1 Visual Basic的基本数据类型,1、数值型数据(Numeric),能进行算术运算的数据类型。数值型数据一般分为整型数和浮点数两类。整型数分为整数(Integer)和长整数(Long),浮点数分为单精度浮点数(Single)和双精度浮点数(Double)。有时也把货币型数据(Currency)和字节型数据(Byte)划归数值型数据。,2、字符串(String)数据类型 字符串型数据是指一切可打印的字符和字符串,它是用双引号括起来的一串字符,包括ASCII字符、汉字及其它可打印字符组成的文本。在VB中有两种类型字符串:变长字符串和定长字符串。变长字符串的长度不确定,可以是0231个范围内的字符,而定长字符串长度一定,可以是0231个范围内的字符。,当声明一个变量为String型时,按系统默认设置为可变长字符串,其长度由为它赋值的字符串决定;定长字符串可用语法“String*Size”表示,当给定长字符串变量赋值时,若字符串的长度变量的长度长,则将字符串的尾部截去;若字符串的长度比变量的长度短,则在尾部补空格。数值字符串(由数字组成的字符串)和数值型变量可以互相赋值。例如:Dim x As Single,y AS String x=123.456:y=x y 的值为123.456 x=Int(y)x 的值为123,3、日期型数据(Date),由年、月、日组成的日期信息或由时、分、秒组成的时间信息。占8个字节内存。书写格式为“mm/dd/yyyy”或“mm-dd-yyyy”。表示的日期从公元100年1月1日9999年12月31日,时间范围为0:00:0023:59:59。,4、逻辑型数据(Boolean),逻辑型数据只有两个值:真(True)和假(False),用2字节二进制数存储,经常用来表示逻辑判断的结果。,5、对象(Object)类型的数据,对象类型的数据主要是以变量形式存在的,Object变量通过32位(4字节)来存储,该地址可以引用应用程序中的对象。利用Set语句,声明为Object的变量可以被赋值并被任何对象所引用。,6.变体数据类型(Variant)变体是一种特殊的数据类型,是所有未定义类型的变量的缺省类型。即如果程序中的变量未定义类型,VB将视之为变体类型。它可以用来存储上面介绍的任何一种类型的数据。此外,VB中还可以包含四个特殊的数据:Empty(空)表示变量未指定确定的数据;Null(虚无值)通常在数据库应用程序中使用,用来指示未知数或数据丢失;Error(出错)指出过程中出现了一个错误条件;Nothing(无指向)表示数据还没有指向一个具体对象;注:在实际编程中,应该特别注意上述各种数据类型的取值范围。,2.1.2 自定义数据类型,VB提供基本数据类型,可以用它们来定义基本数据项,但是,在实际应用中,往往要处理多个数据项组成的组合项,这些数据项不是孤立的,而是可以看作有机的整体。这就要求我们能根据具体问题的需要来构造一个能表示表中一行数据的新数据类型。,在VB中,用户可以根据需要利用Type语句定义自己的数据类型,语法格式如下:Type(下标)As End Type其中:数据类型名:是要定义的数据类型的名字,由程序员自己命名。元素名:自定义类型中的一个成员的名字。下标:表示数组(第四章介绍)作为自定义类型的成员。类型名:成员所属的数据类型,可以是VB的基本数据类型。,例:定义一个用来记录学生信息的自定义数据类型。Type StudTypeintNo 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。,2.1.3枚举类型,当一个变量只有几种可能的值时,可以使用枚举的方法将变量的值一一列出来,变量的值就只限制在列出的几种值中。采用这样的方法定义的变量类型称为枚举类型。,Private|Public Enum 类型名称,成员名=常数表达式,End Enum,例如颜色的定义,2.2 常量与变量,变量:在程序的运行过程中,其值可以改变的量称为变量。变量的本质是计算机内被命名的存储位置,在程序代码中定义一个变量,指定了一个变量名,运行时系统根据其数据类型为之分配合适的存储空间。在程序中,我们可以通过变量名来访问相应的存储单元中存放的数据,该存储单元所表示的值,我们就称之为变量的值。变量一经赋值,可以多次读出,其值保持不变,直到再次给该变量赋以新值。常量:是在程序的运行过程中其值保持不变的量。VB中定义了许多内部常量,同时也允许用户定义常量。,2.2.1 常量和变量的命名规则 在Visual Basic中常量和变量的命名要遵循以下的规则:以字母或汉字开头,由字母、数字或下划线组成,长度小于等于255个字符。不能使用Visual Basic中的关键字。关键字又称保留字,是在语法上有固定意义的字母组合。主要包括:命令名、函数名、数据类型名、运算符、Visual Basic系统提供的标准过程等。在联机帮助系统中可以找到全部关键字。Visual Basic中不区分常量名或变量名的大小写。为了便于区分,常量名一般全部用大写字母表示。变量名一般首字母大写,其余用小写字母表示。为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型。缩写前缀的约定见表2-1中的前缀列所示。例如:strMystring、intCount、sng最大值、lngX_y_z 等都是合法的变量名。标识符,标识符是指用户自己定义的名字,包括自定义的常量名、变量名、控件名、自定义的过程名和函数名等。用户通过标识符对相应的对象进行操作。标识符除控件名和窗体名以外,不能使用关键字。变量名、过程名、函数名应在255个字符以内;控件名、窗体名、模块名应在40个字符以内。,2.2.2 常量,1直接常量 直接常量:在程序代码中,以直接明显的形式给出的数据。根据使用的数据类型,直接常量分为:字符串常量、数值常量、布尔常量、日期常量。,1、字符串,用双引号括起来的一个字符序列。例:“计算机文化基础理论”“student”字符串中所包含的字符个数叫字符串长度。,注意:空字符串用表示,而 则表示有一个空格的字符串;另外在字符串中必须用两个连续的双引号来表示字符串有一个双引号。如字符串:abc计算机abc,在VB中表示为abc计算机abc。,2、数值,数值型数据一般分为整型数和浮点数两类。整型数分为整数(Integer)和长整数(Long),浮点数分为单精度浮点数(Single)和双精度浮点数(Double)。有时也把货币型数据(Currency)和字节型数据(Byte)划归数值型数据。,整数是不带小数点和指数符号的数。(1)整型(Integer):以两个字节(16位二进制码)表示和参加运算。十进制整数:VB中用n%来表示整数,其中%为整数的类型符,可以省略。如-123%、123%都表示整数。取值范围是-3276832767八进制整数:前面冠以&或&O,其取值范围是-&177777&177777十六进制整数:前面冠以&H,其取值范围是-&HFFFF&HFFFF,(2)长整型(Long):以4个字节(32位二进制)存储。十进制长整数:VB中用n&来表示长整数,其中&为长整数的类型符。如-1234&、987654&都表示长整数。取值范围是-2147483648+2147483647八进制或十六进制形式表示长整数,数字序列都应以符号“&”结尾。它们示数的绝对值范围分别是&0&37777777777&和&H0&HFFFFFFFF&值得注意的是,输出时,系统将自动把程序中用八进制或十六进制形式表示的整数、长整数转换成十进制数据形式输出。,浮点数也称为实型数或实数,由符号、指数和尾数组成(3)单精度浮点数(Single)以4个字节(32位)存储,其中符号位占1位,指数占8位,其余23位表示尾数。单精度可以精确到7位十进制数。其负数的取值范围是-3.402823E+38-1.401298E-45,正数的取值范围是1.401298E-453.402823E+38。指数用“E”(或“e”)表示。如:-4.5 12.5E5,(4)双精度浮点数(Double)用8个字节(64位二进制)存储,其中符号占1位,指数占11位,其余52位表示尾数。双精度可以精确到15位或16位十进制数。其负数的取值范围是-1.797693134862316E+308-4.94065645841247E-324,正数的取值范围是4.94065645841247E-3241.797693134862316E+308。如:12.5D5 双精度浮点数的指数可用“D”(或“d”)表示,VB会自动转换成E。,5)货币型(Currency),货币型数据是专门用来表示货币数量的数据,它属于定点实数或整数,用8位字节存储小数点前有15位,小数点后有4位,其余的数字被舍去,其表示形式为在数字后加上“”。,6)字节型(Byte),字节型数据用1个字节的无符号二进制数存储,取值范围为0255。,3、日期型数据(Date),任何在字面上可以被认作日期的文本都可以赋值给日期变量,且日期文字必须用符号“#”括起来,如#January 15,2002#,#1985-10-1 9:45:00 PM#都是合法的日期型数据。日期型数据有两种表示方法:1)以符号“#”括起来的任何在字面上可被认作日期和时间的字符。例如以下日期型常量都是合法的:#January 1,1998#表示1998年1月1日#1 Jan,98#表示1998年1月1日#2001-10-1 123000pm#。表示2001年10月1日中午12时30分0秒2)用数字序列表示,小数点左边的数字表示日期,小数点右边的数字表示时间。0为午夜,0.5为中午12点。负数代表1899年12月31日之前的日期和时间。如-2.5表示1899年12月28日120000。,4、逻辑型数据(Boolean),逻辑型数据只有两个值:真(True)和假(False),用2字节二进制数存储,经常用来表示逻辑判断的结果。,当把数值型数据转换为逻辑型数据时,0会转换为Flase,其它非0值转换为 True。反之,当把逻辑型数据转换为数值型时,Flase转换为0,True转换为-1。,2.符号常量 给某个常量值指定一个有意义的名称,这个名称就代表这个常量。符号常量有两类:一类是用户定义的常量;另一类是系统提供的VB常量。(1)用户定义的常量 声明常量:Const 常量名 As 类型=表达式 说明:Const:VB关键字,用来定义用户自定义的符号常量。常量名:是用户为常量命的名,即用户定义标识符。As类型:该项可选,用来说明常量的数据类型。若省略该项,则由系统根据表达式的求值结果,确定最合适的数据类型。表达式:可以是数值常数,字符串常数以及由除Is以外的任意的算术运算符和逻辑运算符所构成的表达式。在一行中说明多个常数时使用逗号分隔。,在使用常量时,须注意以下几点:常量名具有唯一性,并且是一个合法的标识符,其有效作用范围为常量声明语句所在的程序单元。符号常量的值在定义时就固定下来了,程序代码中任何其它地方都不能再修改它的值,否则系统报错。常量声明时若不指明数据类型,有时存在多义性。如值3.01可能是单精度型,也可能是双精度型或货币型。VB将选择需要内存容量最小的表示方法处理,值3.01通常被作为单精度数处理。(2)系统提供的常量 VB提供了许多预先定义好的常量(系统常量),如 vbCrLf 表示:“回车+换行”,即chr(10)+chr(13);再如 VbMaximized 表示“极大化”。很显然用符号常量较为简单、直观。,2.2.3 变量,在程序执行过程中,其值可以改变的量称为变量。变量一般要先声明,再使用。变量是程序中数据的临时存放场所。在代码中可以只使用一个变量,也可以使用多个变量,变量中可以存放单词、数值、日期以及属性。由于变量能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用。变量可以保存程序运行时用户输入的数据(如使用InputBox函数在屏幕上显示一个对话框,然后把用户键入的文本保存到变量中)、特定运算的结果以及要在窗体上显示的一段数据等。简而言之,变量是用于跟踪几乎所有类型信息的简单工具。,1、变量(1)用类型说明符直接声明变量 可以把类型说明符直接放在变量的尾部来声明一个变量的类型,例如:MyName$声明了一个字符串型变量 Max%声明了一个整型变量 Price!声明了一个单精度浮点型变量 在使用变量的时候,既可以保留类型说明符,也可以省略类型说明符。例如对于上面定义的变量可以如下引用:MyName$=赵勇 MyName=王佳,(2)用Dim语句定义变量 用Dim定义变量的语法格式如下:Dim As 数据类型,变量名 As 数据类型例如:Dim Var1 As Integer 定义了一个整型变量 Dim Address As String 定义了一个字符串型变量 Dim MyName As String*10 定义了一个定长字符串型变量,说明:一个Dim语句可以声明多个变量,每个变量都要用As子句声明其数据类型。例如:Dim Var1 As Integer,Var2 As Double 定义了一个整型变量和一个双精度浮点型变量“As 数据类型”部分可省略。若省略了该部分,则该变量被看作变体类型。例如:Dim Var1,Var2 As Double Var1为变体型变量,Var2为双精度浮点型变量可以用类型说明符来直接定义变量类型。在使用变量的时候,既可以保留类型说明符,也可以省略类型说明符。例如:Dim Var%定义了一个整型变量 Var=2 等价与Var1%=2 除了用Dim语句声明变量外,还可以用Static、Private、Public声明变量(在变量的作用域介绍)。在用Static、Private、Public声明变量时,依然遵循上面说明的特性。,(3)用DefType语句定义变量 可以用DefType语句定义变量,其语法格式为:DefType 字母范围,字母范围 说明:DefType语句只能在模块的声明部分定义,只对它所在的模块起作用。Type是类型标志,可以是Int(整型)、Lng(长整型)Sng(单精度浮点型)、Dbl(双精度浮点型)、Cur(货币型)、Str(字符串型)、Byte(字节型)、Bool(布尔型)、Date(日期型)、Obj(对象型)、Var(变体型)。字符范围用“字母-字母”的形式表示。用DefType语句定义的字母可以作为该类型的变量名,而且以该字母开头的缺省声明的变量都作为该类型的变量。所谓缺省声明,就是没有用类型说明符或Dim等显式定义数据类型的变量。例如,在窗体中写入如下代码:DefInt A,M-N 在窗体模块的声明部分定义 Private Sub Form_Click()num1=2.1 缺省声明了一个变量 Print num1 End Sub,多个DefType语句定义的字母范围不能重复,否则会出现错误。如果显式定义了变量,则变量的数据类型是其显式定义的数据类型。例如,在窗体中写入如下代码:DefInt A,M-N 在窗体模块的声明部分定义 Private Sub Form_Click()Dim num1 As Single 显式声明变量num1 num1=2.1 Print num1 End Sub 在上面的例子中,虽然定义了DefType语句,但后面又显式定义了num1变量为Single类型,所以num1是一个单精度浮点型变量,其值为2.1。,2.变量的初始化 用户一旦显式声明了一个变量,系统将给变量一个初始值。对于不同类型的数据,变量的初始值如下:所有数值型变量(整型,长整形、单精度浮点型、双精度浮点型、字节型)的初始值为0。布尔型变量的初始值为False。日期型变量的初始值为00:00:00。变长字符串变量的初始值为空串(不含任何字符的字符串,即),定长字符串的初始值为其长度个空格。变体型变量的初始值为空值(Empty)。,2.3 运算符和表达式,运算符:表示运算的符号称为运算符,如+,-,*,/等。参加运算的数据称为操作数,如常量、变量等。表达式:由运算符和操作数构成的式子称为表达式,目的是求出一个新的值,如x+3,y+sin(a)等。表达式是程序设计语言的基本语法单位,它表达了一种求值规则。表达式是由常量、变量、函数、运算符及括号连接而成。不同类型的数据可进行不同的运算。因为每一个表达式有一个结果值,表达式是有数据类型的,它决定了运算结果的数据类型。VB中的运算符可分为:算术运算符、字符串运算符、关系运算符和逻辑运算符四类,分别可构成算术表达式、字符串表达式、关系表达式和逻辑表达式。,2.3.1算术运算符与算术表达式,表2-3 算术运算符,1.指数运算“”用来计算乘方和方根,其运算符为“”。计算ab时,若左操作数为正实数,则右操作数b可为任意数值。若左操作数a为负实数,则右操作数b必须是整数。例 102 10的平方,结果为100 10-2 10的平方的倒数,即1/100,结果为0.01 250.5 25的平方根,结果为5,2.浮点数除法“/”与整数除法“”(1)“/”。运算结果的类型由其值决定。例 3/2 结果等于1.5,浮点数 3.6/1.8 结果等于2,整数(2)“”。整除的操作数一般为整型数。当操作数带有小数点时,VB首先对其四舍五入为整型数,然后进行整除运算。运算结果简单地截取整数部分,小数部分不作舍入处理。例 104 结果等于2202.6 结果等于625.636.78 结果等于3,3.取余运算“Mod”用于求余数,结果是第一个操作数整除以第二个操作数所得的余数。如果左右操作数为实数,VB首先对其四舍五入取整,然后做求余运算。运算结果的符号取决于左操作数的符号。例 10 Mod 4 结果等于2 20 Mod 2.6 结果等于2-5 Mod 2 结果等于-1-5 Mod 2 结果等于-1,4.算术表达式中算术运算符的优先级 VB中的算术运算符优先级顺序(从高到低)如下:、-、*、/、Mod、+、-。当一个表达式中含有多种算术运算符时,按级别由高到低进行,同级运算符从左到右运算。如果表达式中含有括号,则先计算括号内表达式的值;有多层括号时,从内层括号到外层括号计算。,2.3.2 字符串运算符与字符串表达式,字符串连接运算符有两个:“&”,“+”,它们的作用都是将两个字符串依次连接起来,生成一个新的字符串。字符串变量、字符串常量及字符串函数通过字符串运算符组合而成的表达式,称为字符串表达式,其值为一个字符串。例 a=Visual,b=Basic 则a&b或a+b的运算结果都是Visual Basic。运算符“&”时应注意,运算符“&”前后应各加一个空格,以免造成错误,这是因为符号“&”还是长整型的类型符。此外,还需注意连接符“&”与“+”的区别:“+”:连接符两旁的操作数均应为字符型;若均为数值型或当操作数为数字字符串时则进行算术加运算;若一个为含有非数字字符的字符型数据,另一个为数值型数据则出错。“&”:连接符两旁的操作数不管是字符型还是数值型,进行连接操作前,系统先将操作数转换成字符型,然后再连接。,例 xyz+123 结果为xyz123 xyz&123 结果为xyz123 xyz+123 出错 123+123 结果为246 因此,如果要做字符串连接,建议尽量使用“&”,而不要用“+”。,2.3.3关系运算符与关系表达式,关系运算就是比较运算,作用是将两个操作数进行大小比较,比较的结果是一个逻辑值。由关系运算符连接成的表达式称为关系表达式。关系表达式的运算结果是一个逻辑值,若关系成立,返回True,否则返回False。在VB中,True用-1表示,False用0表示。操作数可以是数值型、字符型。,对关系运算符需注意以下规则:(1)如果两个操作数是数值型,则按其大小比较。但对单精度或双精度数进行比较时,因为机器的运算误差,可能会得不到希望的结果。因此应避免直接判断两个浮点数是否相等,应该是对两个数误差的判断。例 Abs(num1-num2)1E-6(2)如果两个操作数是字符串型,则从左到右逐个字符比较,比较的是字符的ASCII码值,直到出现不同的字符为止。例 Student=Student结果为True ABCDEABCDC结果为True Dd结果为True,(3)注意这样的比较运算的结果:”123”40”结果为False(4)关系运算符的优先级相同。(5)Like运算符用来比较字符串表达式和SQL表达式中的样式,主要用于数据库查询。Is运算符用于两个对象变量引用比较。Is运算符还可在Select Case语句中使用。(6)赋值运算与关系运算中的“相等”运算 在VB语言中“=”是一个具有二义性的符号,既可作为赋值运算符,又可以作为关系运算符中的“相等”运算符,它的实际意义需根据它所在的上下文来判断。,2.3.4逻辑运算符与逻辑表达式,逻辑运算又称布尔运算。逻辑运算符的左右操作数要求为逻辑值。用逻辑运算符连接两个或多个逻辑量组成的式子称为逻辑表达式或布尔表达式。逻辑运算的结果是逻辑值True或False。,日期运算符有“+”和“-”两个,如表所示,2.3.5时间运算符与时间表达式,2.3.6表达式的运算顺序,1.VB中按以下的先后顺序对表达式求值。函数运算、算术运算、关系运算、逻辑运算例 一个数值表达式的计算顺序如下:x/sin(5*x)3*6-4 例 设i=1,j=0,x=2,y=2,则下列逻辑表达式的运算顺序及最后所得的值为:True x=2 Or Not y0 And(x-y)/i 0,2.在算术运算中,如果不同数据类型的操作数混合运算,则VB规定运算结果的数据类型采用精度高的数据类型。即 IntegerLongSingleDoubleCurrency但当Long型数据与Single型数据运算时,结果为Double型数据。3.书写表达式时应注意:(1)表达式要在同一行上书写成线性序列。(2)乘号“*”不能省略,也不能用“”代替。(3)括号可以改变运算顺序。表达式中只能使用圆括号,且可以嵌套,不能使用方括号和花括号。,2.4 VB的常用内部函数,程序设计中的函数是指一段小的子程序,它能完成某种特定的操作或运算,并且在子程序完成后带回一个值,这个值就称为函数的返回值。VB把常用功能模块做成了内部函数,程序员可以直接使用这些函数而不必自己再花时间去编写,利用这些函数可以大大简化代码的编制。用户在使用这些内部函数时,只需写出它的函数名和填入函数的参数就可直接引用,并且参数必须在函数名后用括号括起来。若参数有多个,则参数之间必须用逗号隔开。若函数不带参数,则调用时直接写出函数名即可。例如,下面的几种函数调用都是合法的:x=Sin(x)返回x的正弦值Print Format(Now,hh:mm:ss)返回当前时刻的hh:mm:ss格式Print Now 返回当前系统时间日期,VB的内部函数大体上可分为数学函数、转换函数、字符串函数、时间/日期函数和随机函数等。这些内部函数的详细用法请参见MSDN(Microsoft Developer Network)联机帮助文档。对一个常用内部函数,应掌握以下几点:(1)函数的功能,即它能完成的操作。(2)参数的格式,包括函数的名字,参数的个数、位置、数据类型。(3)函数返回值的意义和数据类型。要检验各函数的功能,可在【立即】窗口中输入“Print 函数名(参数)”并回车,则可立即显示出该函数的值。,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),(8)Abs()函数:计算绝对值。格式:Abs(x)(9)Hex()函数:将十进制数值转换为十六进制数值或字符串。格式:Hex(x)(10)Oct()函数:将十进制数值转换为八进制数值或字符串。格式:Oct(x)(11)Sgn()函数:判断参数的符号。格式:Sgn(x)参数:x为一个数值型常量或变量或表达式。返回值:当x0,返回值+1;当x=0,返回值0;当x0,返回值-1。,(12)取整函数Cint()函数:将数值的小数部分进行四舍五入,然后返回一整型量。Fix()函数:返回数的整数部分Int()函数:返回不大于给定数的最大整数例 X=Int(6.5)Y=Int(-7.8)结果:X的值为6,Y的值为-8,(1)删除字符串前后空格函数 Ltrim()函数:去掉字符串左边的空格例 C=ABCD D=Ltrim(C)结果:D的值为ABCD。Rtrim()函数:去掉字符串右边空格 Trim()函数:去掉字符串左右边空格(2)字符串长度测试函数 Len()函数:求字符串长度(即字符串的字符个数)。例 xLen(AB高等教育)结果:x的值为6。LenB()函数:求字符串存储时所占的字节数。例 xLenB(AB高等教育)结果:x的值为12。,2.字符串函数,(3)求子串函数Left()函数:取出字符左边的N个字符作为一个新的字符串。格式:Left(String,N)例 C=Left(ABCDEFG,3)结果:C的值为“ABC”。Right()函数:取出字符串右边的N个字符Mid()函数:从字符串的中间取子串。格式:Mid(String,N1,N2)参数:从第N1个取起,取N2个。例 C=Mid(ABCDEFG,2,3)结果:C的值为BCD。,(4)String()函数:产生由字符串的N个首字符组成的字符串格式:String(N,String)例 C=String(3,ABCDEF)结果:C的值为AAA。(5)大小写字母转换函数 Lcase(C)函数:返回以小写字母组成的字符串 Ucase(C)函数:返回以大写字母组成的字符串(6)Space$(N):返回由指定数目空格字符组成的字符串,(7)查找字符串函数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。InStrRev()函数:与InStr函数的作用相似,只是从String1的尾部开始找String2。格式:InStrRev(String1,String2,N,M),(9)StrConv()函数:将字符串转换成Unicode码字符串或 DBCS码字符串。格式:StrConv(String,vbFromUnicodevbUnicode)参数:要求参数String为一字符串类型常量或变量或表达式。返回值:函数StrConv(String,vbFromUnicode)返回String的DBCS码字符串;StrConv(String,vbUnicode)则返回String的Unicode码字符串。,3.转换函数 转换函数用于数据类型或形式的转换,包括整型、浮点型、字符串型之间以及与ASCII码字符之间的转换。(1)Asc()函数:求出一个字符对应的ASCII码值。例 A=Asc(C)结果:A的值为67,即C的ASCII码值。(2)Chr()函数:将ASCII码转换成相应字符。例 A=Chr(97)结果:由于a的ASCII代码为97,故A的值为a。,(3)Str()函数:将数值型数据转换成字符串型数据。格式:Str(Numerical)参数:函数中的参数只有一个,为数值型的常量、变量或表达式。返回值:由参数转换而来的一个字符串型常量。例 X5645 A=Str(X)结果:A的值为5645,(4)Val()函数:将数字字符串转换成数值型常数。格式:Val(String)参数:参数为字符串类型的变量或常量或表达式。返回值:若参数字符串中包含“”,则只将最左边的一个“”转换成小数点;若参数字符串中包含有“+”或“-”,则只将字符串首的“+”、“-”号转换为正、负号;若参数字符串中还包含有除数字以外的其他字符,则只将字符串中其他字符以前的串转换成数值。例 A=+3.14+2:B=156BC=25.25.2868X=Val(A)Y=Val(B)Z=Val(C)结果:X,Y,Z 的值分别为3.14,156,25.25,4.日期与时间函数 说明:日期与时间函数中的Date StringN表示参数可以是字符串表达式或数值表达式,其中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-25,(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(NString)例 Print MonthName(8),MonthName(9)输出结果:八月 九月,(7)Year()函数:返回日期中的年号。格式:Year(DateStringN)参数: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()函数:返回星期名称。,2.4.5 其它函数 在测试、模拟及游戏程序中,经常使用随机数。1、随机函数Rnd()格式:Rnd(x)功能:产生一个大于0小于1的单精度随机数。参数:可有参数,也可省去参数。参数x为随机数生成时的种子。例 产生一个lower,Upper范围内的随机整数。Print Int(Upper-lower+1)*Rnd+lower),2、Randomize函数当一个应用程序不断地重复使用随机函数rnd,同一序列的随机数可能会反复出现,用Randomize函数可以消除这种情况。格式:Randomize(x)功能:Randomize使用参数x初始化Rnd函数的随机数生成器,赋给它新的种子值。如果省略x,则使用系统计时器返回的值作为新的种子值。如果不使用 Randomize,则第一次调用 Rnd 函数(无参数)时,它将使用相同的数字作为种子值,随后使用最后生成的数值作为种子值。,3.Shell函数:格式:Shell(“命令文件名”,窗体模式)功能:执行一个可执行文件(.COM、.EXE、.BAT)。返回一个 Variant(Double),如果成功的话,代表这个程序的任务 ID,若不成功,则会返回 0。说明:命令文件名:必要参数,绝对路径,要执行的程序名;窗体模式:可选参数,表示程序运行时窗口的样式。,2.5.1 赋值语句,格式:let变量名=表达式 let对象名.属性=表达式说明:1、关键字let通常省略2、“=”赋值号与数学中等号“=”的意义不同,与关系运算符中相等“=”作用完全不同3、“=”两边的类型必须一致或相容4、在VB中,如果变量没有被赋值而直接引用,则数值型变量为0,字符型变量为空串,逻辑型变量为false5、不能在同一赋值语句中给多个变量赋值,2.5 基本输入输出,2.5.2 数据的输出,1、Print方法,其格式为:对象名.Print 表达式列表,|;功能:在相应的对象上显示文本或表达式的值。说明:“对象名”可以是窗体、图形框、打印机等。如果省略,则在当前窗体上输出。“表达式列表”可以一个或多个任意数值、字符串常量、变量或表达式。若“表达式列表”缺省,则输出一个空行。当输出多个表达式或字符串时,各输出项之间可用分隔符(逗号、分号或空格)隔开。如果输出的各表达式之间用逗号分隔,则按标准输出格式(每一行以14个字符宽度划分为一个区段,每个数据项占一个区段的位置)显示。这种输出格式排列整齐,适用于数值显示的情况。如果输出的各表达式之间用分号分隔,则按紧凑输出格式在输出:对于数值型数据,前面有一个符号位,后面有一个空格;对于每个字符串,各个数据项之间没有间隔,适用于用若干个字符串显示连续的结果。在Print语句的末尾使用了逗号或分号,则表明显示数据不换行,下一个Print语句仍在该行输出。如果Print语句的末尾没使用逗号或分号,则自动换行。,2、格式函数Format$Format$用于把数值和日期型的数据按指定的格式输出。Format$的一般格式如下:Format(,格式字符串)功能:按格式字符串指定的格式将表达式以字符串形式返回。说明:格式字符串有VB规定的格式控制符组成,用于控制输出的格式。格式控制符包括:,0,、,$,+,-,E+,E-。如果省略格式字符串,则把数值表达式的值转换成字符串。在这种情况下Format函数的功能与Str函数基本相同,惟一的差别是当把正数转换成字符串时,Str函数在字符串前面留有一个空格,而Format函数则不留空格。,3、使用标签和文本框输入输出,例2.1 设计一个窗体,求矩形的面积。如图2-1所示。其中有3个标签、3个文本框和1个命令按钮。,2.5.3 用户交互的函数和过程,1、输入函数InputBox为了输入数据,增加人机交互界面,