VB程序设计基础课件_第1页
VB程序设计基础课件_第2页
VB程序设计基础课件_第3页
VB程序设计基础课件_第4页
VB程序设计基础课件_第5页
已阅读5页,还剩153页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章VB程序设计基础本章内容及要求:4.1数据类型4.2常量和变量4.3变量的作用域4.4常用内部函数4.5字符处理与字符串函数4.6运算符与表达式第4章VB程序设计基础本章内容及要求:4.1数据类型4.1数据类型数据是信息在计算机内的表现形式,也是程序处理的对象。VB提供了系统定义的基本数据类型,还允许用户定义自己的数据类型。数据类型基本类型字符串型数值型整型数整数型长整数浮点数单精度双精度货币型字节型布尔型日期型变体型对象型Decimal型用户定义类型记录类型枚举类型4.1数据类型数据是信息在计算机内的表现形式,也是程序处理4.1数据类型一、基本数据类型1.字符串型String字符串是一个字符序列,由ASCII字符组成。字符串通常要用双引号括起来。例如: “Hello!” "湖南省衡阳市" “8888” "***” “”

‘空字符串 ““

‘有一个空格的字符串若字符串中有双引号,例如ABD“XYZ,则用连续两个双引号表示,即:"ABD""XYZ“4.1数据类型一、基本数据类型1.字符串型String4.1数据类型VB中的字符串分为两种:变长字符串和定长字符串。变长字符串的长度是不确定的,可以从0~231(约21亿)个字符。定长字符串含有确定个数的字符,最大长度不超过216(65535)个字符。4.1数据类型VB中的字符串分为两种:变长字符串和定长字符4.1数据类型2.数值型数值型数据分为整型数和浮点数两类。(1)整型数整型数是不带小数点和指数符号的数,在机器内部以二进制补码形式表示。正数的补码和它的二进制形式(即源码)相同;负数的补码为该数的绝对值的二进制形式取反加1。例如,整型数4,-4分别以下面的形式存放:(最高位为符号位,其中0为正,1为负)4

00000000

00000100-4

11111111

11111100

整数的运算速度快,而且比其他数据类型占据的内存少。4.1数据类型2.数值型4.1数据类型整型数又分为整数和长整数:整数Integer以2个字节(16位)的二进制数存储,取值范围为-32,768~32,767。长整数Long以4个字节(32位)的二进制数存储,取值范围为-2,147,483,648~2,147,483,647。4.1数据类型整型数又分为整数和长整数:4.1数据类型二进制十进制00000000

00000000000000000

00000001100000000

00000010200000000

000000113…

……

…01111111

111111113276710000000

00000000-3276810000000

00000001-3276710000000

00000010-32766…

……

…11111111

11111110-211111111

11111111-1思考:为什么16位整数Integer的取值范围为-32,768~32,767?4.1数据类型二进制十进制0000000000000004.1数据类型注意:16位整数Integer如果超出了这个取值范围(-32,768~32,767),数据便会溢出。请看下面的代码:PrivateSubForm_Load()

DimaAsInteger

a=32767

a=a+1

MsgBoxaEndSub4.1数据类型注意:16位整数Integer如果超出了4.1数据类型(2)浮点数浮点数也称实数,是带有小数部分的数值。分为单精度浮点数和双精度浮点数。单精度Single以4个字节(32位)存储,可以精确到7位十进制数。其中符号占1位,指数占8位,其余23位表示尾数,还有一个附加的隐含位。其负数的取值范围为-3.402823E+38

~

-1.401298E-45,正数的取值范围为1.401298E-45

~

3.402823E+38。表示形式为:±n.nE±m其中n.n是尾数,m是指数(以10为底的幂)例:-123.4E-3或-123.4e-3,相当于-0.1234

1.2345E3或1.2345e3,相当于1234.54.1数据类型(2)浮点数4.1数据类型双精度Double以8个字节(64位)存储,可以精确到15到16位十进制数。其中符号占1位,指数占11位,其余52位表示尾数,还有一个附加的隐含位。表示形式为:±n.nD±m其中n.n是尾数,m是指数(以10为底的幂)

例:123.4567D3或123.4567d+3,相当于123456.74.1数据类型双精度Double4.1数据类型(3)货币型Currency货币数据类型通常用于表示钱款。以8个字节(64位)存储,精确到小数点后面4位(小数点前面有15位)。在小数点后4位以后的数字将被舍去。其取值范围为-922,337,203,685,477.5808

~-922,337,203,685,477.5807浮点数中的小数点是“浮动”的,小数点可以出现在数的任何位置,而货币型数据的小数点是固定的,因此称为定点数据类型。

4.1数据类型(3)货币型Currency4.1数据类型(4)字节型Byte以1个字节(8位)的无符号二进制数存储,其取值范围为0~255。

注:在实际应用中,应根据需要使用数据类型。能用整型就不要用浮点型或货币型;如果要求的精度不高,则应使用单精度变量。这样不仅节省内存空间,而且可以提高处理速度。

4.1数据类型(4)字节型Byte4.1数据类型3.布尔型Boolean

布尔型数据是一个逻辑值,用2个字节存储,它只取两个值:True/False。布尔型变量的默认值为False。将逻辑数据转换成整型时:True为-1,False为0;其它数据转换成逻辑数据时:非0为True,0为False。例如,下面的代码定义一个布尔型变量,并输出该变量:DimmyblnAsBooleanmybln=3MsgBoxmybln4.1数据类型3.布尔型Boolean4.1数据类型4.日期型Date

日期型数据占用8个字节,以浮点数形式存储。小数点左边的数值表示日期(距离1899-12-30的天数),小数点右边的数值表示时间。日期型数据的日期表示范围:100年1月1日~9999年12月31日,时间表示范围:0:00:00~23:59:59。日期常数必须用“#”符号括起来。

例如:下面的几种日期型数据的格式都是合法的:

#9/1/2009#或#2009-09-01# #September

1,2009#

#08:30:00AM#

#2002-5-414:30:00PM#4.1数据类型4.日期型Date4.1数据类型5.变体型Variant变体数据类型是一种可变的数据类型,可以表示任何值,包括数值、字符串、日期/时间等。当变体数据为数值时,以16个字节存储,最大可达Double的取值范围;当变体数据为字符时,以22字节+字符串长,与变长String有相同的取值范围

。6.对象型Object对象型数据作为32位(4个字节)地址来存储,该地址可以引用程序中的任何对象。4.1数据类型5.变体型Variant4.1数据类型7.Decimal数据类型

Decimal数据以12个字节存储,最多支持29个有效数位,在内存中的表示形式比浮点数更精确。适用于要求使用大量有效的整数及小数位数,并且不能容忍舍入误差的财务计算。

Decimal数据类型只能在变体类型(Variant)中使用,不能把一个变量声明为Decimal类型。4.1数据类型7.Decimal数据类型4.1数据类型二、用户定义的数据类型用户自定义类型,也称为记录类型,通过Type语句来实现,其语法格式如下: Type数据类型名

元素名As类型名

元素名As类型名

… End

Type

4.1数据类型二、用户定义的数据类型用户自定义类型,也称4.1数据类型例如:对于一个学生的“学号”、“姓名”、“性别”、“年龄”、“入学成绩”等数据,为了处理数据的方便,常常需要把这些数据定义成一个新的数据类型(如Student类型)

TypeStudent XhAsString XmAsString XbAsString NlAsInteger ScoreAsSingle EndType二、用户定义的数据类型4.1数据类型例如:对于一个学生的“学号”、“姓名”4.1数据类型使用Type语句,应注意以下几点:1.记录类型的定义必须放在模块(包括标准模块和窗体模块)的声明部分,在使用记录类型之前,必须用Type语句加以定义。2.一般情况下,记录类型在标准模块中定义,其变量可以出现在工程的任何地方。当在标准模块中定义时,关键字Type前可以有Public(默认)或Private;而如果在窗体模块中定义,则必须在前面加上关键字Private。3.在记录类型中不能使用动态数组。4.1数据类型使用Type语句,应注意以下几点:4.1数据类型下面的代码声明了一个Student类型变量st,然后为其各个元素赋初值,最后输出:PrivateSubForm_Load()DimstAsStudentst.Xh="20050001"st.Xm="王一"st.Xb="男"st.Nl=17st.Score=92.5MsgBox"学号:"&st.Xh&Chr(10)&"姓名:"&st.Xm&Chr(10)&"性别:"&_st.Xb&Chr(10)&"年龄:"&st.Nl&Chr(10)&"入学成绩:"&st.ScoreEndSub4.1数据类型下面的代码声明了一个Student类型变量4.2常量和变量一、常量在VB中有三类常量:普通常量、符号常量和系统常量

1.普通常量普通常量指的是具体的常数,其类型有字符串型、整型、浮点型、布尔型、日期型等。不同类型的数据可以常量的形式出现,也可以变量的形式出现。常量在程序运行过程中其值不会发生变化。而变量的值是可变的,它代表内存中指定的存储单元。4.2常量和变量一、常量在VB中有三类常量:普通常量4.2常量和变量整型常数有3种形式:十进制:由八进制数字(0~9)组成。如125,0,-89。八进制:由八进制数字(0~7)组成。以&或&O(字母O)开头,以&结尾。例如:&O25&表示八进制整数25,即(25)8

,等于十进制数21。十六进制:由十六进制数字(0~9及A~F)组成。以&H开头,以&结尾。例如:&H25&表示十六进制整数25,即(25)16

,等于十进制数37。VB中的颜色数据常常用十六进制整数表示。4.2常量和变量整型常数有3种形式:4.2常量和变量

VB在判断常量类型时存在多义性。例如,值3.01可能是单精度类型,也可能是双精度类型或货币类型。为了显式地指明常数的类型,可以在常数后面加上类型说明符。 % 整型 & 长整型 ! 单精度浮点数 # 双精度浮点数 @ 货币型 $ 字符串型字节、布尔、日期、对象及变体类型没有类型说明符。4.2常量和变量VB在判断常量类型时存在多义性。例如,4.2常量和变量

2.符号常量在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。

VB中使用关键字Const声明符号常量。其格式如下:Const常量名

[As类型|类型符号]=表达式[

,常量名=表达式]注:表达式由普通常量、算术和逻辑运算符组成,但不能使用变量及函数。例如:

ConstMaxchars=254,Maxbue=Maxchars+1

’注意顺序

ConstPI#=3.1415926等价于:

ConstPIAsDouble=3.14159264.2常量和变量2.符号常量4.2常量和变量

3.系统常量

VB系统提供了应用程序和控件的系统定义常数。

例如,要将文本框Text1的前景颜色设置为红色,可以使用下面的语句:Text1.ForeColor=vbRed这里的vbRed就是系统常量,这比直接使用16进制数来设置要直观得多。又如,窗口状态属性WindowsState可取0,1,2三个值,对应三种不同状态。在程序中使用语句:Myform.WindowsState=vbMaxmized,将窗口最大化,显然要比使用语句Myform.WindowsState=2

易于阅读和理解。4.2常量和变量3.系统常量4.2常量和变量二、变量变量是在程序运行时,其值不断发生改变的量。一个变量对应着计算机内存中的一块存储单元。

例如,有两个存储单元,名称分别为User和Password,存放的值分别为“管理员”和“111”,如图所示:也可以将这两个存储单元的值改为“普通用户”和“222”:管理员User111Password普通用户User222Password4.2常量和变量二、变量变量是在程序运行时,其值不断发4.2常量和变量1.变量命名规则只能由英文字母、汉字、数字和下划线组成,中间不能出现空格或小数点等;例如:变量名file_name是合法的,而filename是非法的。必须以字母或汉字开头,最后一个符号可以是类型说明符;例如:book3、a%这两个变量名是合法的;而3book是非法的。VB中不区分变量名的大小写;例如,Hello、HELLO、hello指的是同一个名字。4.2常量和变量1.变量命名规则4.2常量和变量变量名长度可达255个字符;VB中的关键字不能单独作为变量名;VB关键字包括预定义语句(If,For,Loop等)、操作符(And,Mod等)和函数(Int,Sqr等)。例如,Print是非法变量名,但Print_3或Print3是合法的。为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型。变量名一般大小写混合使用。例如:strAbc(字符串变量)

intCount(整型变量)4.2常量和变量变量名长度可达255个字符;[思考与练习]1.下列哪个符号不能作为VB中的变量名?(1)ABCabc(2)b1234(3)28wed(4)cmd2.下列符号哪一个是VB中的合法变量名?(1)x23(2)8xy(3)END(4)x8[B]变量命名规则[思考与练习]变量命名规则4.2常量和变量2.变量的声明在VB程序中,使用变量前,一般要先声明变量的名称和数据类型。

VB中可以强制显式声明变量,方法是在窗体模块、标准模块和类模块的通用声明段中添加语句:

Option

Explicit也可以设置为自动添加,方法是:选择“工具”“选项”“要求变量声明”。建议在程序设计的开始就设置。4.2常量和变量2.变量的声明4.2常量和变量变量的声明可以采用三种方式:用声明语句显式声明变量用DefType语句声明变量隐式声明变量(1)用声明语句显式声明变量格式:Dim|Static|Public|Private变量名

As

数据类型4.2常量和变量变量的声明可以采用三种方式:4.2常量和变量Dim用于在标准模块、窗体模块中定义模块级变量或在过程中定义局部变量。例如:

Dim

Str

As

String

DimTotalAsInteger

DimVar1AsString,Var2AsDouble

‘定义多个变量

DimVar1,Var2AsInteger

‘注意:该语句并不能把两个变量同时定义为整型

4.2常量和变量Dim4.2常量和变量

可以使用类型说明符来替代As语句:Dim

Str$DimTotal%DimVar1$,Var2#则在引用该变量时可以省略类型说明符。例如,下面两个语句都是正确的: Var1="Thisisastring" Var1$="Thisisastring“4.2常量和变量可以使用类型说明符来替代As语句:4.1数据类型用AsString

可以定义变长字符串变量,也可以定义为定长字符串变量。变长字符串变量:其长度取决于赋给它的字符串常量的长度。例如:DimNamevarAsString

‘定义为变长字符串变量

Namevar=“湖南省衡阳市”定长字符串变量:事先定义字符串的长度,在程序运行过程中,始终保持其长度不变。当给它赋值时,不足的部分用空格填满;多出的字符被截去。例如:DimMyNameAsString*4

‘定义为定长字符串变量

MyName=“湖南省衡阳市"

4.1数据类型用AsString可以定义变长字符串变量4.2常量和变量Static

Static用于在过程中定义静态变量,每次引用该变量定义时,其值会继续保留。由Dim定义的变量称为自动变量,每次引用该变量定义时,变量值会被重新设置(数值变量设置为0,字符串变量设置为空)。例如:下面的程序中变量Var1和Var2的值会相同吗? PrivateSubForm_Click()

DimVar1AsInteger

StaticVar2AsInteger

Var1=Var1+1

Var2=Var2+1

PrintVar1,Var2

EndSub每单击一次窗体,静态变量Var2累加1,而自动变量Var1会被置04.2常量和变量Static4.2常量和变量Public用来在标准模块中定义全局变量。Private用来在标准模块、窗体模块的声明部分定义模块级变量。4.2常量和变量Public4.2常量和变量(2)

用DefType语句声明变量用DefType语句可以在标准模块、窗体模块的声明部分定义变量,且只对它所在的模块起作用。一般格式:Def

Type字母范围

Type可以是Int、Lng、Sng、Dbl、Cur、Str、Byte、Bool、Date、Obj、Var。DefType语句中说明的字母、以及以该字母开头的变量名都是那种类型的变量名。例如:DefDbl

L-P

‘凡是变量名以字母L到P开头的变量都定义为双精度型。类型说明符(%&#!@$)总是比DefType语句优先起作用。4.2常量和变量(2)用DefType语句声明变量4.2常量和变量(3)

隐式声明变量

VB允许用户不显式声明变量而直接使用,系统临时为新变量分配存储空间并使用,这就是隐式声明。所有隐式声明的变量都是Variant数据类型。VB根据程序中赋予变量的值来自动调整变量的类型。下面的程序中使用的变量a,b,Total都没有事先定义: PrivateSubForm_Click() Total%=0 a=10:b=20 Total=a+b Print“Total=";Total EndSub4.2常量和变量(3)隐式声明变量下面的程序中使用的变量4.3变量的作用域

每个变量都有它的作用范围,即作用域。根据变量在VB应用程序中的定义位置和所使用的定义语句的不同,可以分为局部变量、模块变量和全局变量。

VB应用程序的构成应用程序窗体模块声明部分通用过程事件过程标准模块声明部分通用过程4.3变量的作用域每个变量都有它的作用范围,即作用域。4.3变量的作用域在过程(事件过程或通用过程)内定义的变量叫做局部变量,其作用域是它所在的过程。因此,在不同的过程中可以定义相同名字的局部变量。局部变量在过程内用Dim、Static定义,例如:

SubCommand1_Click() DimTempnumAsInteger StaticTotalAsDouble EndSub一、局部变量Local4.3变量的作用域在过程(事件过程或通用过程)内定义的4.3变量的作用域模块变量包括窗体变量和标准模块变量。窗体变量可用于该窗体内的所有过程(事件过程或通用过程)。当同一窗体内的不同过程使用相同的变量时,必须定义窗体层变量。窗体层变量不能隐式声明。方法是:在程序代码窗口的“对象”框中选择“通用”,并在“过程”框中选择“声明”。标准模块中模块层变量的声明和使用与窗体层变量类似。

二、模块变量Module4.3变量的作用域模块变量包括窗体变量和标准模块变量。4.3变量的作用域默认情况下,模块级变量对该模块中的所有过程都是可见的,但对其他模块不可见。模块级变量在模块的声明部分用Private、Dim声明。例如: PrivateintTempAsInteger或 Dim

intTempAsInteger

4.3变量的作用域默认情况下,模块级变量对该模块中的所4.3变量的作用域全局变量的作用域最大,可以在工程的每个模块、每个过程中使用。全局变量必须在标准模块的声明部分中声明,不能在过程或窗体模块中声明;并且,全局变量必须用Public或Global语句声明,不能用Dim语句声明。例如: PublicintNumberAsInteger

三、全局变量Public4.3变量的作用域全局变量的作用域最大,可以在工程的每4.3变量的作用域对于局部变量来说,可以不用Dim或Static定义,而是在需要时直接给出变量名(不建议)。默认声明只适用于局部变量,模块级变量和全局变量必须用Dim或Public语句显式声明。默认声明局部变量,有可能使程序出现无法预料的结果,而且较难查出错误。为了安全起见,最好能显式地声明程序中使用的所有变量。下面通过实例说明。四、默认声明(隐式声明)4.3变量的作用域对于局部变量来说,可以不用Dim或S4.4常用内部函数

VB提供了上百种内部函数,要求掌握表4.4中常用函数的功能及使用:数学函数、转换函数、日期和时间函数、随机数函数。函数调用方法:

函数名(参数列表)有参函数函数名无参函数说明:(1)使用内部函数要注意参数的个数及其参数的数据类型;(2)要注意函数的定义域(自变量或参数的取值范围);(3)要注意函数的值域。4.4常用内部函数VB提供了上百种内部函数,要求掌握表4.4常用内部函数常用的数学函数有:

Sin(x)

Cos(x) Tan(x) Atn(x)

Abs(x)

Sgn(x) Sqr(x) Exp(x)说明:

(1)在三角函数中的自变量是以弧度为单位。如:sin300sin(3.14159/180*30)

(2)

sqr(x)函数要求自变量x>=0

(3)

Exp(x)函数要求自变量x不能超过709.782712893,否则函数的值就会超出实数在计算机中的表示范围,导致错误发生。一、数学函数4.4常用内部函数常用的数学函数有:一、数学函数4.4常用内部函数常用转换函数见表4.4,相关说明如下:(1)要区别两个取整函数int()和fix()Fix(N)为截断取整,即去掉小数后的数。

Int(N)为不大于N的最大整数。例如:Fix(9.59)=9,Int(9.59)=9Fix(-9.59)=-9,Int(-9.59)=-10(2)Asc("Abcd")

值为:65(只取首字母的AscII值)

(3)Val(“abc123”)

值为:0,

Val("1.2sa10")值为1.2

注意:Val()函数只将最前面的数字字符转换为数值。二、转换函数4.4常用内部函数常用转换函数见表4.4,相关说明如下:4.4常用内部函数

1.Date、Now、Time函数

Date函数:返回当前系统日期。语法:Date

Now函数:返回当前系统日期和时间。语法:Now

Time函数:返回当前系统时间。语法:Time

2.Year、Day、Month函数(年、月、日)

Year函数:返回年份。语法:Year(Now)

Day函数:返回年份。语法:Day(Now)

Month函数:返回年份。语法:Month(Now)

3.Hour、Minute、Second函数(时、分、秒)

Hour函数:返回小时。语法:Hour(Now)

Minute函数:返回分钟。语法:Minute(Now)

Second函数:返回秒。语法:Second(Now)

三、日期和时间函数4.4常用内部函数1.Date、Now、Time函数三4.4常用内部函数

语法:Rnd[(number)]

Rnd函数可以省略参数和括号。返回[0~1)(即包括0,但不包括1)之间的单精度随机数。

四、随机数函数Rnd如果number的值Rnd生成小于0每次都使用number作为随机数种子得到相同的结果大于0序列中的下一个随机数等于0最近生成的数默认序列中的下一个随机数4.4常用内部函数语法:Rnd[(number)]四、随4.4常用内部函数若要产生1~100的随机整数,则可通过下面的表达式来实现:

Int(Rnd*100)+1

'包括1和100

Int(Rnd*99)+1

'包括1,但不包括100思考:怎样产生[N,M]区间的随机数?Int(Rnd*(M-N+1))+N4.4常用内部函数若要产生1~100的随机整数,则可通4.4常用内部函数当应用程序不断地重复使用随机数时,同一序列的随机数会反复出现,用Randomize语句可以消除这种情况,其格式为:Randomize

(

x

)

功能:初始化随机数生成器。如省略参数,则用系统计时器返回的值作为新的种子值。例如:下段程序每次运行,将产生不同序列的20个[10,99]之间的随机整数。PrivateSubForm_click()

Randomize

Fori=1To20PrintInt(Rnd*90)+10;NextiPrintEndSub4.4常用内部函数当应用程序不断地重复使用随机数时,同4.5字符处理与字符串函数

ANSI方式:早前的版本采用。西文字符用一个字节编码,中文字符用两个字节编码。一个中文字符相当于两个西文字符。

UniCode方式:4.0以后的版本采用。中西文字符统一编码,一个英文字符或一个汉字都看作一个字符,均用两个字节编码。PrintLen("BASIC程序设计")‘9PrintLenB(“BASIC程序设计”)

18注:VB6.0中,LenB返回的是用于存储字符串的字节数,而不是返回字符串中字符的数量。

一、VB的字符处理机制4.5字符处理与字符串函数ANSI方式:早前的版本采用。4.5字符处理与字符串函数为了实现ANSI与UniCode之间的转换,VB提供了一个转换函数StrConv,格式如下:新字符串=StrConv(待转换字符串,转换格式)其中,“转换格式”可以取值为:

vbUnicode(值为64)‘将ANSI转换为UniCode

vbFromUnicode(值为128)‘将UniCode转换为ANSI例4.1编写程序,测试StrConv函数功能。

一、VB的字符处理机制4.5字符处理与字符串函数为了实现ANSI与UniCo4.5字符处理与字符串函数

1.去空格函数

Ltrim$(字符串):去除字符串左边的空白字符;$可以省略。

RTrim$(字符串)

:去除字符串右边的空白字符;

Trim$(字符串):去除字符串两边的空白字符。

例如:a$="GoodMorning"

b$=LTrim$(a$)

c$=RTrim$(b$)

Printb$;c$;"ABC“输出结果:Good

Morning

Good

MorningABC

二、字符串函数4.5字符处理与字符串函数1.去空格函数二、字符串函数4.5字符处理与字符串函数

2.字符串截取函数左部截取:Left$(字符串,n)返回字符串的前n个字符。例:Left$(“ABCDEF”,4)中部截取:Mid$(字符串,

p

[,

n

]

)从第p个字符开始,向后截取n个字符。n可以省略,此时,将从第p个字符开始向后截取到字符串的末尾。

例如:Mid$(“ABCDEFGHIJK”,3,4)右部截取:Right$(字符串,n)返回字符串的最后n个字符。例:Right$(“ABCDEFGHIJK”,4)二、字符串函数4.5字符处理与字符串函数2.字符串截取函数二、字符串函4.5字符处理与字符串函数

3.字符串长度测试函数格式:Len(字符串):返回字符串的长度(长整型值)。

Len(变量名):返回存储变量所需的字节数。例如:Len(“ABCDEFGHIJK”)

‘返回11

Len(testvar%)

‘返回2Len(testvar!)

‘返回4Len(testvar#)

‘返回8

二、字符串函数4.5字符处理与字符串函数3.字符串长度测试函数二、字符4.5字符处理与字符串函数

4.

String$函数格式:String$(n,ASCII码)

或String$(n,字符串)

当为ASCII码时,返回由该ASCII码对应的n个字符;当为字符串时,返回由第一个字符组成的n个字符。例如: a$=String$(5,65) b$=String$(5,"-") c$=String$(5,"abcd") Printa$;b$;c$输出结果:AAAAA-----aaaaa

二、字符串函数4.5字符处理与字符串函数4.String$函数二、字4.5字符处理与字符串函数

5.空格函数格式:Space$(n)

返回n个空格。例如: a$="a"+Space(4)+"b“输出结果:a

b

二、字符串函数4.5字符处理与字符串函数5.空格函数二、字符串函数4.5字符处理与字符串函数

6.字符串匹配函数

格式:InStr(

[首字符位置,

]字符串1

,字符串2

[

,

n

]

)

该函数在“字符串1”中查找“字符串2”,如果找到,就返回“字符串2”的第一个字符在“字符串1”中的位置。“字符串1”的第一个字符的位置为1。例如:

a$="MicrosoftVisualBasic" x=InStr(a$,"Visual") Printx输出结果:11

二、字符串函数4.5字符处理与字符串函数6.字符串匹配函数二、字符串函

格式:InStr(

[首字符位置,

]字符串1

,字符串2

[

,

n

]

)说明:“字符串2”的长度必须小于65,535个字符;InStr的返回值是一个长整型数。在不同的条件下,函数的返回值也不一样(见表4.5)。“首字符位置”是可选的。如果有,则从该位置开始查找,否则从起始位置开始查找。自变量n是可选的,用来指定字符串比较方式。该自变量的取值可以是0、1或2。 0:进行二进制比较,区分字母的大小写;默认为0。 1:比较时忽略大小写; 2:对数据库中的信息进行比较。格式:InStr([首字符位置,]字符串1,字4.5字符处理与字符串函数也可以通过语句限定: Option

Compare

Binary

Option

Compare

Text Option

Compare

Database4.5字符处理与字符串函数也可以通过语句限定:4.5字符处理与字符串函数

7.字母大小写转换

格式:Ucase$(字符串):小写字母转换为大写字母

Lcase$(字符串)

:大写字母转换为小写字母例如: a$="MicrosoftVisualBasic" b$=UCase$(a$) c$=LCase$(a$) Printb$,c$输出结果:MICROSOFTVISUALBASIC

microsoftvisualbasic

二、字符串函数4.5字符处理与字符串函数7.字母大小写转换二、字符串函4.5字符处理与字符串函数

8.插入字符串语句Mid$格式:Mid$(字符串,位置[

,

L

]

)=子字符串

该语句把从“字符串”的“位置”开始的字符用“子字符串”代替。如果含有L自变量,则替换的内容是“子字符串”左部的L个字符。“位置”和L均为长整型数。DimMyString,FirstWord,LastWord,MidWordsMyString=“MidFunctionDemo”

'建立一个字符串。FirstWord=Mid(MyString,1,3)'返回"Mid"。LastWord=Mid(MyString,14,4)'返回"Demo"。MidWords=Mid(MyString,5)'返回"FuncionDemo"。4.5字符处理与字符串函数8.插入字符串语句Mid$4.6

运算符与表达式

运算是对数据的加工。最基本的运算形式常常用一些简洁的符号来描述,这些符号称为运算符。被运算的数据,称为运算量。由运算符和运算量组成表达式。运算量可以是常量,也可以是变量,还可以是函数。例如:A+3

,

T+Sin(a)

,

PI*r*r

。运算符和表达式的类型可以分为以下4种:算术运算符与算术表达式字符运算符与字符表达式关系运算符与关系表达式逻辑运算符与逻辑表达式4.6运算符与表达式运算是对数据的加工。最基本的运4.6

运算符与表达式

一、算术运算符与算术表达式运算运算符优先级表达式例子结果幂^1X^Ya^29取负-2-X-a-3乘法*3X*Ya*a*a27浮点除法/3X/Y10/a

3.333333…整数除法\4X\Y10\a3取模Mod5X

Mod

Y10

Mod

a1加法+6X+Y10+a13减法-6X-Ya-10-7(a=3)4.6运算符与表达式一、算术运算符与算术表达式运算运算4.6

运算符与表达式

1.幂运算^用于计算乘方和方根,运算符为“^”。例如:

10^2 ‘结果为100 10^-2 ‘结果为0.01 25^0.5 ‘结果为5 8^(1/3) ‘结果为2注意:幂运算符优先级最高。当指数是一个表达式时,必须加上括号。

例如,X的Y+Z次方必须写作X^(Y+Z),不能写作X^Y+Z。4.6运算符与表达式1.幂运算^4.6

运算符与表达式

2.“/”与“\”

浮点除法运算符“/”用来计算两个数或表达式的商,并返回相应的浮点数。例如:3/2的值是1.5。

整数除法运算符“\”在运算前把两个运算量四舍五入转换成整数,然后计算两个运算量的商,并返回结果的整数部分。例如:25.63\6.78的值为3。

4.6运算符与表达式2.“/”与“\”4.6

运算符与表达式

3.取模运算Mod取模运算即求余数,在运算前把两个运算量四舍五入转换成整型数,然后对两个运算量进行除法运算,并返回余数(第一个操作数整除第二个操作数的余数)。例如:

7

Mod

4 ‘结果为3 25.68

Mod

6.99 ‘先把25.63和6.78转化为26和7,再求得余数为5

4.6运算符与表达式3.取模运算Mod4.6

运算符与表达式4.算术运算符的优先级运算运算符优先级幂^1取负-2乘法*3浮点除法/3整数除法\4取模Mod5加法+6减法-64.6运算符与表达式4.算术运算符的优先级运算运算符优先级[思考与练习]5+10mod10\9/3+2^2步骤:=5+10mod10\3

+

4=5+10mod3

+

4=5+1+

4=10[思考与练习]步骤:4.6

运算符与表达式

字符串连接符:“&”和“+”

“&”:用于强制将两个表达式作为字符串连接。“+”:当连接符两边的表达式都为字符串时,将两个字符串连接;如果一个是字符串而另一个是数字,则进行相加。例如:

"ABCD"+"EFGHI"'结果为:ABCDEFGHI

“VB”&“程序设计教程”

‘结果为:VB程序设计教程二、字符运算符与字符表达式4.6运算符与表达式字符串连接符:“&”和“+”二、字例:"100"+123 '结果为

223"100"+"123" '结果为

100123“Abc”+123

'出现“类型不匹配”的错误提示"100"&123 '结果为

100123100&123 '结果为

100123"Abc"&"123" '结果为

Abc123"Abc"&123 '结果为

Abc123

注意:使用运算符“&”时,变量与运算符“&”之间应加一个空格。这是因为符号“&”还是长整型的类型定义符,如果变量与符号“&”接在一起,VB系统先把它作为类型定义符处理,因而就会出现语法错误。例:注意:使用运算符“&”时,变量与运算符4.6

运算符与表达式

关系运算符也称比较运算符,用来对两个表达式的值进行比较。关系表达式的结果是一个布尔值,即True(成立)或False(不成立)。三、关系运算符与关系表达式运算符含义优先级表达式=相等所有关系运算符的优先级相同。X

=

Y<>或><不相等X<>Y或X><Y<小于X<Y>大于X>Y<=小于或等于X<=Y>=大于或等于X>=YLike比较样式Is比较对象变量4.6运算符与表达式关系运算符也称比较运算符,用来对两数值的比较:应避免对两个浮点数直接作“相等”或“不相等”的比较。例如:1.0/3.0*3.0=1.0,在计算机上执行时可能会给出假值。可以改写为:Abs(1.0/3.0*3.0-1.0)<1e-5判断x是否在区间[a,b]时,不能写成:a<=x<=b,而应写成:a<=x

And

x<=b数值型与可转换为数值型的数据比较,如:29>“189”,按数值比较,结果为False。数值型与不能转换成数值型的字符型比较,如:77>"sdcd",不能比较,系统出错。数值的比较:字符串的比较:两个字符串的比较,从第1个字符开始,按字符的ASCII码值逐一进行比较,ASCII码值大的字符所在的字符串大。例:"ABCDE">"ABRA" ‘结果为False

常见的字符值的大小关系如下:“空格”<“数字”<“大写字母”<“小写字母”<“所有汉字”Like运算符用来比较字符串表达式和SQL表达式中的样式,主要用于数据库查询。Is运算符用来比较两个对象的引用变量,主要用于对象操作。字符串的比较:4.6

运算符与表达式逻辑运算也称布尔运算。用逻辑运算符连接两个或多个关系式,组成一个布尔表达式。四、逻辑运算符与逻辑表达式运算符含义优先级说明Not非1真变假,假变真。And与2两个表达式均为真时,结果才为真。Or或3有一个表达式为真时,结果就为真。Xor异或4两个表达式相反时,结果为真。Eqv等价5两个表达式相同时,结果为真。Imp蕴含6第一个为真,第二个为假时,结果为假;其它为真。4.6运算符与表达式逻辑运算也称布尔运算。用逻辑运算4.6

运算符与表达式

如果对数值进行逻辑运算,操作数都要转换成二进制值逐位进行逻辑运算(0当False,1当True)。例如:63

And

16

‘结果为16 00000000

01111111

And 00000000

00010000关系表达式与逻辑表达式常常用在条件语句与循环语句中,作为条件控制程序的流程走向。四、逻辑运算符与逻辑表达式4.6运算符与表达式如果对数值进行逻辑运算,操作数都要[思考与练习]

例:征兵的条件是:男性(sex),年龄(age)在18-20之间,身高(size)在1.65m以上;或者女性(sex),年龄(age)在16-18之间,身高(size)在1.60m以上。请写成VB的条件表达式。答:设性别sex值True代表男,sex值False代表女。

(sex=TrueAndage>=18Andage<=20Andsize>=1.65)Or(NotsexAndage>=16Andage<=18Andsize>=1.60)[思考与练习]答:4.6

运算符与表达式

表达式的一般执行顺序:函数运算→算术运算符→连接运算符→关系运算符→逻辑运算符在书写表达式时,应注意以下几点:乘号“*”不能省略,例x乘以y应写成:x*y可以用括号改变优先顺序,并且括号必须成对出现;运算符不能相邻。例a+*b是错误的。五、表达式的执行顺序(b-sqr(b*b-4*a*c))/(2*a)4.6运算符与表达式表达式的一般执行顺序:五、表达式的执第4章VB程序设计基础本章内容及要求:4.1数据类型4.2常量和变量4.3变量的作用域4.4常用内部函数4.5字符处理与字符串函数4.6运算符与表达式第4章VB程序设计基础本章内容及要求:4.1数据类型4.1数据类型数据是信息在计算机内的表现形式,也是程序处理的对象。VB提供了系统定义的基本数据类型,还允许用户定义自己的数据类型。数据类型基本类型字符串型数值型整型数整数型长整数浮点数单精度双精度货币型字节型布尔型日期型变体型对象型Decimal型用户定义类型记录类型枚举类型4.1数据类型数据是信息在计算机内的表现形式,也是程序处理4.1数据类型一、基本数据类型1.字符串型String字符串是一个字符序列,由ASCII字符组成。字符串通常要用双引号括起来。例如: “Hello!” "湖南省衡阳市" “8888” "***” “”

‘空字符串 ““

‘有一个空格的字符串若字符串中有双引号,例如ABD“XYZ,则用连续两个双引号表示,即:"ABD""XYZ“4.1数据类型一、基本数据类型1.字符串型String4.1数据类型VB中的字符串分为两种:变长字符串和定长字符串。变长字符串的长度是不确定的,可以从0~231(约21亿)个字符。定长字符串含有确定个数的字符,最大长度不超过216(65535)个字符。4.1数据类型VB中的字符串分为两种:变长字符串和定长字符4.1数据类型2.数值型数值型数据分为整型数和浮点数两类。(1)整型数整型数是不带小数点和指数符号的数,在机器内部以二进制补码形式表示。正数的补码和它的二进制形式(即源码)相同;负数的补码为该数的绝对值的二进制形式取反加1。例如,整型数4,-4分别以下面的形式存放:(最高位为符号位,其中0为正,1为负)4

00000000

00000100-4

11111111

11111100

整数的运算速度快,而且比其他数据类型占据的内存少。4.1数据类型2.数值型4.1数据类型整型数又分为整数和长整数:整数Integer以2个字节(16位)的二进制数存储,取值范围为-32,768~32,767。长整数Long以4个字节(32位)的二进制数存储,取值范围为-2,147,483,648~2,147,483,647。4.1数据类型整型数又分为整数和长整数:4.1数据类型二进制十进制00000000

00000000000000000

00000001100000000

00000010200000000

000000113…

……

…01111111

111111113276710000000

00000000-3276810000000

00000001-3276710000000

00000010-32766…

……

…11111111

11111110-211111111

11111111-1思考:为什么16位整数Integer的取值范围为-32,768~32,767?4.1数据类型二进制十进制0000000000000004.1数据类型注意:16位整数Integer如果超出了这个取值范围(-32,768~32,767),数据便会溢出。请看下面的代码:PrivateSubForm_Load()

DimaAsInteger

a=32767

a=a+1

MsgBoxaEndSub4.1数据类型注意:16位整数Integer如果超出了4.1数据类型(2)浮点数浮点数也称实数,是带有小数部分的数值。分为单精度浮点数和双精度浮点数。单精度Single以4个字节(32位)存储,可以精确到7位十进制数。其中符号占1位,指数占8位,其余23位表示尾数,还有一个附加的隐含位。其负数的取值范围为-3.402823E+38

~

-1.401298E-45,正数的取值范围为1.401298E-45

~

3.402823E+38。表示形式为:±n.nE±m其中n.n是尾数,m是指数(以10为底的幂)例:-123.4E-3或-123.4e-3,相当于-0.1234

1.2345E3或1.2345e3,相当于1234.54.1数据类型(2)浮点数4.1数据类型双精度Double以8个字节(64位)存储,可以精确到15到16位十进制数。其中符号占1位,指数占11位,其余52位表示尾数,还有一个附加的隐含位。表示形式为:±n.nD±m其中n.n是尾数,m是指数(以10为底的幂)

例:123.4567D3或123.4567d+3,相当于123456.74.1数据类型双精度Double4.1数据类型(3)货币型Currency货币数据类型通常用于表示钱款。以8个字节(64位)存储,精确到小数点后面4位(小数点前面有15位)。在小数点后4位以后的数字将被舍去。其取值范围为-922,337,203,685,477.5808

~-922,337,203,685,477.5807浮点数中的小数点是“浮动”的,小数点可以出现在数的任何位置,而货币型数据的小数点是固定的,因此称为定点数据类型。

4.1数据类型(3)货币型Currency4.1数据类型(4)字节型Byte以1个字节(8位)的无符号二进制数存储,其取值范围为0~255。

注:在实际应用中,应根据需要使用数据类型。能用整型就不要用浮点型或货币型;如果要求的精度不高,则应使用单精度变量。这样不仅节省内存空间,而且可以提高处理速度。

4.1数据类型(4)字节型Byte4.1数据类型3.布尔型Boolean

布尔型数据是一个逻辑值,用2个字节存储,它只取两个值:True/False。布尔型变量的默认值为False。将逻辑数据转换成整型时:True为-1,False为0;其它数据转换成逻辑数据时:非0为True,0为False。例如,下面的代码定义一个布尔型变量,并输出该变量:DimmyblnAsBooleanmybln=3MsgBoxmybln4.1数据类型3.布尔型Boolean4.1数据类型4.日期型Date

日期型数据占用8个字节,以浮点数形式存储。小数点左边的数值表示日期(距离1899-12-30的天数),小数点右边的数值表示时间。日期型数据的日期表示范围:100年1月1日~9999年12月31日,时间表示范围:0:00:00~23:59:59。日期常数必须用“#”符号括起来。

例如:下面的几种日期型数据的格式都是合法的:

#9/1/2009#或#2009-09-01# #September

1,2009#

#08:30:00AM#

#2002-5-414:30:00PM#4.1数据类型4.日期型Date4.1数据类型5.变体型Variant变体数据类型是一种可变的数据类型,可以表示任何值,包括数值、字符串、日期/时间等。当变体数据为数值时,以16个字节存储,最大可达Double的取值范围;当变体数据为字符时,以22字节+字符串长,与变长String有相同的取值范围

。6.对象型Object对象型数据作为32位(4个字节)地址来存储,该地址可以引用程序中的任何对象。4.1数据类型5.变体型Variant4.1数据类型7.Decimal数据类型

Decimal数据以12个字节存储,最多支持29个有效数位,在内存中的表示形式比浮点数更精确。适用于要求使用大量有效的整数及小数位数,并且不能容忍舍入误差的财务计算。

Decimal数据类型只能在变体类型(Variant)中使用,不能把一个变量声明为Decimal类型。4.1数据类型7.Decimal数据类型4.1数据类型二、用户定义的数据类型用户自定义类型,也称为记录类型,通过Type语句来实现,其语法格式如下: Type数据类型名

元素名As类型名

元素名As类型名

… End

Type

4.1数据类型二、用户定义的数据类型用户自定义类型,也称4.1数据类型例如:对于一个学生的“学号”、“姓名”、“性别”、“年龄”、“入学成绩”等数据,为了处理数据的方便,常常需要把这些数据定义成一个新的数据类型(如Student类型)

TypeStudent XhAsString XmAsString XbAsString NlAsInteger ScoreAsSingle EndType二、用户定义的数据类型4.1数据类型例如:对于一个学生的“学号”、“姓名”4.1数据类型使用Type语句,应注意以下几点:1.记录类型的定义必须放在模块(包括标准模块和窗体模块)的声明部分,在使用记录类型之前,必须用Type语句加以定义。2.一般情况下,记录类型在标准模块中定义,其变量可以出现在工程的任何地方。当在标准模块中定义时,关键字Type前可以有Public(默认)或Private;而如果在窗体模块中定义,则必须在前面加上关键字Private。3.在记录类型中不能使用动态数组。4.1数据类型使用Type语句,应注意以下几点:4.1数据类型下面的代码声明了一个Student类型变量st,然后为其各个元素赋初值,最后输出:PrivateSubForm_Load()DimstAsStudentst.Xh="20050001"st.Xm="王一"st.Xb="男"st.Nl=17st.Score=92.5MsgBox"学号:"&st.Xh&Chr(10)&"姓名:"&st.Xm&Chr(10)&"性别:"&_st.Xb&Chr(10)&"年龄:"&st.Nl&Chr(10)&"入学成绩:"&st.ScoreEndSub4.1数据类型下面的代码声明了一个Student类型变量4.2常量和变量一、常量在VB中有三类常量:普通常量、符号常量和系统常量

1.普通常量普通常量指的是具体的常数,其类型有字符串型、整型、浮点型、布尔型、日期型等。不同类型的数据可以常量的形式出现,也可以变量的形式出现。常量在程序运行过程中其值不会发生变化。而变量的值是可变的,它代表内存中指定的存储单元。4.2常量和变量一、常量在VB中有三类常量:普通常量4.2常量和变量整型常数有3种形式:十进制:由八进制数字(0~9)组成。如125,0,-89。八进制:由八进制数字(0~7)组成。以&或&O(字母O)开头,以&结尾。例如:&O25&表示八进制整数25,即(25)8

,等于十进制数21。十六进制:由十六进制数字(0~9及A~F)组成。以&H开头,以&结尾。例如:&H25&表示十六进制整数25,即(25)16

,等于十进制数37。VB中的颜色数据常常用十六进制整数表示。4.2常量和变量整型常数有3种形式:4.2常量和变量

VB在判断常量类型时存在多义性。例如,值3.01可能是单精度类型,也可能是双精度类型或货币类型。为了显式地指明常数的类型,可以在常数后面加上类型说明符。 % 整型 & 长整型 ! 单精度浮点数 # 双精度浮点数 @ 货币型 $ 字符串型字节、布尔、日期、对象及变体类型没有类型说明符。4.2常量和变量VB在判断常量类型时存在多义性。例如,4.2常量和变量

2.符号常量在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。

VB中使用关键字Const声明符号常量。其格式如下:Const常量名

[As类型|类型符号]=表达式[

,常量名=表达式]注:表达式由普通常量、算术和逻辑运算符组成,但不能使用变量及函数。例如:

ConstMaxchars=254,Maxbue=Maxchars+1

’注意顺序

ConstPI#=3.1415926等价于:

ConstPIAsDouble=3.14159264.2常量和变量2.符号常量4.2常量和变量

3.系统常量

VB系统提供了应用程序和控件的系统定义常数。

例如,要将文本框Text1的前景颜色设置为红色,可以使用下面的语句:Text1.ForeColor=vbRed这里的vbRed就是系统常量,这比直接使用16进制数来设置要直观得多。又如,窗口状态属性WindowsState可取0,1,2三个值,对应三种不同状态。在程序中使用语句:Myform.WindowsState=vbMaxmized,将窗口最大化,显然要比使用语句Myform.WindowsState=2

易于阅读和理解。4.2常量和变量3.系统常量4.2常量和变量二、变量变量是在程序运行时,其值不断发生改变的量。一个变量对应着计算机内存中的一块存储单元。

例如,有两个存储单元,名称分别为User和Password,存放的值分别为“管理员”和“111”,如图所示:也可以将这两个存储单元的值改为“普通用户”和“222”:管理员User111Password普通用户User222Password

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论