《VB语言基础》PPT课件.ppt
第三章 V B 语言基础,Visual Basic 编程风格,作为高级程序设计语言,VB 也有着一定源程序代码书写规则:(1)源代码不区分字母的大小写 关键字的首字母自动转换为大写;由多个英文单词构成的关键字,每个单词首字母也自动大写;用户自定义的变量、过程名以第一次定义的为准。,(2)语句书写自由 同一行上的多个语句之间用“:”分隔;代码的分隔符用空格或Tab键;每行字符长度不超过 1023个字节;一个语句可分为若干行书写,此时每行后加续行标志“_”;,Visual Basic 编程风格,(3)适当添加注释有利于程序的维护和调试 以关键字“Rem”或“”开头引导注释内容;可通过“编辑”工具栏的“设置注释块”、“解除注释块”按钮,为选中的若干行语句(或文字)统一设置注释或取消注释。,(4)保留行号与下标,注:有语法意义的标点符号,必须是英文状态的标点,而不能是中文状态的标点。,3.1 数据类型,作为程序处理的对象,不同类型的数据,它们的操作方式和取值范围都不同。凡是涉及数据就与数据类型有关,包括:变量、常量、数组,以及函数、过程中的参数。,3.1.1 标准数据类型,标准数据类型是系统定义的数据类型,主要的有字符串型数据、数值型数据,以及字节、货币、对象、日期、布尔和变体数据类型。每种数据类型在程序中都有相应固定的关键字、类型符、取值范围等。,字符串(String)数据类型,用双引号界定的一个字符序列,用于存储字符串,例如:“Hello”“Visual Basic 6.0 程序设计”“26?”“”(空字符串)注意:(1)有定长、变长和空字符串之分;定义时的区别:Dim S as String(变 长)Dim S as String*10(定 长)(2)双引号仅起界定作用,输入、输出时都不显示;(3)字符串内容区别大小写。,定长与变长字符串的比较,整型:不带小数点和指数符号,可带正、负号的整数。(1)整型(Integer)(2)长整型(Long)(3)字节型(Byte)实型:带有小数部分的数,由符号、指数、尾数三部分组成。(1)单精度浮点数(Single)(2)双精度浮点数(Double)货币型(Currency),整型取值范围,日期型数据,3.1.2 用户自定义的数据类型,自定义类型必须在标准模块中定义;自定义类型中的元素类型可以是字符串,但是必须是定长字符串。,Type studType intNo As Integer strName As String*20 strSex As String*1 sngMark(1 to 4)As Single sngTotal As SingleEnd TypeDim student as studTypestudent.intNo=30student.strName=“Tom”,变量的命名规则,3.2.2 常量,在程序中设置的常量,即是用标识符表示的永远不变的数值或字符串。通过采用有意义的标识符表示常量值,可提高源代码的可读性和可维护性。常量不能象变量那样在程序运行过程中给其赋以新值。常量有两种来源:(1)内部的或系统定义的,它由 Visual Basic 系统或引用的对象提供;(2)用户自定义的,它需要用Const 语句来声明。,常量分为值常量和符号常量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。,(4)布尔型常量:布尔型又称为逻辑型,它只有两种可能的取值,True(表示逻辑真),False(逻辑假)。(5)货币类型常量:用通常的小数来表示。如:312300.3567,3.1748。(6)日期型常量:日期型数据有两种表示方法:以符号“#”括起来的任何在字面上可被认作日期和时间的字符。例如以下日期型常量都是合法的:#January 1,1998#表示1998年1月1日#1 Jan,98#表示1998年1月1日#2001-10-1 123000pm#。表示2001年10月1日中午12时30分0秒用数字序列表示,小数点左边的数字表示日期,小数点右边的数字表示时间。0为午夜,0.5为中午12点。负数代表1899年12月31日之前的日期和时间。如-2.5表示1899年12月28日120000。,用户声明常量,在程序中多次出现或难于记忆的常数值,通常用标识符(以字母开头的字母、数字组合,不能与关键字重名)定义和取代。用户自定义的常量在使用前必须声明,由此该标识符才能被程序识别,常量说明的一般格式为:Const 常量名As 类型 常量表达式,常量名:用户定义的标识符;As 类型:用来说明常量的数据类型;表达式:数值、字符串、算术和逻辑运算符构成的表达式等;示例:Const Student As Integer 30 Const sngPi 3.14159265358979 Const MyUniversity$“湖南农业大学”,在使用常量时,须注意以下几点:常量名具有唯一性,并且是一个合法的标识符,其有效作用范围为常量声明语句所在的程序单元。符号常量的值在定义时就固定下来了,程序代码中任何其它地方都不能再修改它的值,否则系统报错。常量声明时若不指明数据类型,有时存在多义性。如值3.01可能是单精度型,也可能是双精度型或货币型。VB将选择需要内存容量最小的表示方法处理,值3.01通常被作为单精度数处理。(2)系统提供的常量 VB提供了许多预先定义好的常量(系统常量),如 vbCrLf 表示:“回车+换行”,即chr(10)+chr(13);再如 VbMaximized 表示“极大化”。很显然用符号常量较为简单、直观。,3.2.3 变量,程序运行期间其值可以改变的量就是变量,可以把它看作存 储未知值的所在处。变量和常量一样具有名字和数据类型,只有在对这些信息进 行说明了之后才能使用,它的声明可以显式或隐式地进行。,其中,Dim、Private、Public、Static等语句的具体使用方法详见 P112 6.4内容。示例:Dim X As Integer Dim S As String*20 Dim MyUniversity$,MyAge,Dim/Public/Private/Static 变量名 As 数据类型,变量名 As 数据类型变量名:应遵从合法标识符的命名规则。数据类型:可以是前面列出的任何一种,包括自定义型。中括号中部分:是可选部分一条Dim语句可同时定义多个变量,以逗号分隔。但每个变量应该有自己的类型声明,类型声明不能共用。变量被声明后,VB即为变量赋缺省的初值,一般情况如下数值型变量的缺省初值为0;字符串型为空串(“”);布尔型为False;日期/时间型为1899年12月30日0点0分0秒;对象型为Nothing;变体型为空Empty。,关于变体类型(Variant)的变量 VB中,变体类型是变量的缺省类型。以下三种方式变体类型变量的声明是等价的:(1)在Dim语句中使用类型关键字Variant定义,如:Dim varExample As Variant(2)在Dim语句中仅定义变量名而不声明类型,如:Dim VarA,VarB(3)隐式声明的变量,系统默认为变体类型变量。在Variant变量中,可以存放任何类型的数据,包括数值、字符串、日期和时间等。向Variant类型的变量赋值时,不必进行任何转换,VB自动完成各种必要的转换。,【例3-1】定长与不定长字符串举例。Private Sub Form_Click()Dim a As String*5 长度5个字符Dim b As Stringa=abc 长度不足5个字符b=123abc456efgPrint a;ba=abcdefgh 长度超过5个字符b=这是变长字符串Print a;bEnd Sub,运行结果,(2)用类型符(参见教材表3-1)直接声明变量。格式如下:Dim 变量名 类型符 如:Dim item%声明整型变量item Dim shight!声明单精度型变量shight Dim strname$声明字符串型变量strname Dim cxyz 声明货币型变量cxyz(3)隐式声明:在窗体的通用声明段中添若无Option Explicit语句,则可以不声明变量而直接使用,但程序出 错时不易查出,一般不提倡这样做。,2.变量的作用范围 声明变量的位置不同以及声明时使用的关键字不同,所声明的变量的有效范围也不一样。VB中变量的有效范围有三个等级:全局变量:在整个工程所有模块中有效。在标准模块的声明部分,用Public声明的变量为全局变量,用Private或Dim声明的变量为模块级变量。窗体模块/标准模块级变量:只在该窗体模块或标准模块的各个过程中使用,其它模块中的代码不能引用。若在窗体中用Public声明全局变量,则在其它模块中引用时,须在变量前加声明此变量的窗体名。过程级(局部)变量:只在一个过程内有效,在其它过程中均无效。局部变量对任何临时性计算非常有用。在过程中用Private、Dim或Static声明的变量均为窗体模块级变量,其中Static用于定义静态变量且只能在过程中使用,Dim用于定义动态变量。不同作用范围的3种变量声明及使用规则如教材表3-4所示。,VB中允许一个变量未经语句声明就直接使用,这就是隐式声明。程序中,只要出现某从未定义过的标识符,系统将自动以该标识符名字创建一个变量,并默认其为变体类型。,tempa ab btemp,tempa ab btmp,程序段本来希望实现的功能是交换变量 a、b的值,然而最终结果却是b 的值始终为0。显然,这是隐式说明引发的错误。为避免这类情况发生,应强制规定所有变量都进行显示声明,提高程序正确性,方法是:,常用内部函数,VB 提供了大量内部函数,用户可以直接对其进行调用来完成一些常用的程序操作。这些内部函数通常分为以下 5 类:转换函数 数学函数 字符串函数 时间/日期函数 随机函数,对一个常用内部函数,应掌握以下几点:(1)函数的功能,即它能完成的操作。(2)参数的格式,包括函数的名字,参数的个数、位置、数据类型。(3)函数返回值的意义和数据类型。要检验各函数的功能,可在【立即】窗口中输入“Print 函数名(参数)”并回车,则可立即显示出该函数的值。,Str$()功能:将数值型数据转换成字符串型数据;参数:只有一个,为整型、长整型、单精度浮点型、双精度浮点型和货币型中的任一种(常量、变量或表达式);返回值:一个字符串型常数。示例:X%5645,A$Str$(X%)结果:A$”5645”,Val()功能:将数字字符串转换成数值型常数;参数:一个字符串类型的变量或常量或表达式;返回值:一个数值。示例:A$”+3.14+2”B$”156B”C$”25.25.3867”X!Val(A$)Y!Val(B$)Z!Val(C$)结果:X!3.14 Y!156 Z!25.25,Lcase$()功能:将大写字母转换为小写字母;参数:一个字符串常量或变量或表达式;返回值:将参数中大写字母转为小写字母后得到的字符串。示例:X$”AbCdEF”,Y$Lcase$(X$)结果是:Y$”abcdef”,Ucase$()同Lcase$()函数功能正好相反的函数,它将字符串中小写字母转换为大写字母。示例:X$”AbCdEF”,Y$Ucase$(X$)结果是:Y$”ABCDEF”,3.4.2 数学函数,3.4.3 字符串函数,在函数中出现的一些参数涵义如下:(1)函数自变量 M:M0或省略,表示区分大小写;M1,表示不区分大小写。(2)函数自变量 N,表示数值型常量、变量或表达式。,StrReverse()功能:将字符串反序。格式:StrReverse(String),InStrRev()功能:从字符串String1中第N个字符开始向左找字符串String2。格式:InStrRev(String1,String2,N,M)示例:X%InStrRev(”ABCDEFGEFGH”,”EF”,3)结果是:X0,InStr()功能:从字符串String1中第N个字符开始向右找字符串String2。格式:InStr(N,String1,String2,M)示例:X%InStr(2,”ABEfCDEFG”,”EF”,0)Y%InStr(2,”ABEfCDEFG”,”EF”,1)结果是:X7,Y3,3.4.4 日期与时间函数,Date$()功能:按“yyyymmdd”格式提取计算机系统的当前日期。格式:Date$(),DateSerial()功能:产生日期。格式:DateSerial(year,month,day),DateValue()功能:产生日期。格式:DateValue(Date String),3.4.6 随机函数,Rnd 功能:产生一个大于等于0小于1的单精度随机数。格式:Rnd(x)参数:参数x为随机数生成时的种子。返回值:当x0或参数省略时,以“上一个随机数”为种子,产生序列中的下一个随机数。当x=0时产生与上次相同的随机数。,e.g.:RndValueInt(1000*Rnd)+1),产生一个lower,Upper范围内的随机整数。Int(Upper-lower+1)*Rnd+lower),3.3 运算符与表达式,程序中对数据的基本加工,是依靠运算符实现的。在Visual Basic中运算符的类型有:赋值运算符、算术运算符、比较运算符、连接运算符、逻辑运算符。通过常量、变量、运算符、函数等的组合,由此构成表达式。表达式的运算结果决定了表达式的类型,据此可划分出算术、字符串、关系和逻辑四类表达式。,3.3.1 算术运算符与算术表达式,算术运算符的优先级顺序如下(“”表示“高于”):指数运算符取负运算符乘除运算符整除运算符取模运算符加减运算符,3.3.2 字符串运算符与字符串表达式,应特别注意“&”与“+”的区别:“”:符号两旁的操作数均是字符型,若是数值型则进行算术相加,若为其它情况则出错;“&”:系统自动先将符号两旁的操作数转换成字符型,再运算。另外,“&”与操作数之间应加空格。,3.3.3 关系运算符与关系表达式,各关系运算符的优先级相同,关系表达式的结果是逻辑值,用于比较操作数的大小。,3.3.4 逻辑运算符与逻辑表达式,逻辑运算又称布尔运算,其表达式的操作数和结果都是逻辑值。,3.3.5、表达式的运算顺序,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,实际上,由于Or是最后运算,而其前面的关系表达式的值为True,因此不管其后表达式的值是什么,整个表达式的值均为True.,3.3.5 表达式的运算顺序,(1)各种运算混合出现的时候,按以下顺序对表达式求值:函数运算 算术运算 关系运算 逻辑运算(2)不同数据类型的操作数混合运算,系统将把运算结果的数据类型规定为精度相对更高的数据类型:Integer Long Single Double Currency(3)在同一行上,表达式应书写成线性序列,乘号“*”不可省略,圆括号的使用可改变运算顺序。,