VB的数据与表达式.ppt_第1页
VB的数据与表达式.ppt_第2页
VB的数据与表达式.ppt_第3页
VB的数据与表达式.ppt_第4页
VB的数据与表达式.ppt_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

2019/7/21,1,Visual Basic 6.0 程序设计,主讲人:李连捷,2019/7/21,2,第四讲 数据与表达式,本章将介绍在编写代码时用到的一些最基础的知识,包括VB的基本字符集和词汇集、VB的基本数据类型、常量与变量、运算符与表达式及常用内部函数。,2019/7/21,3,4.1 VB的基本字符集和词汇集 4.2 VB的基本数据类型 4.3 常量与变量 4.4 运算符与表达式 4.5 常用内部函数,本 讲 内 容,2019/7/21,4,讲在数据定义前的话: 有人将程序设计表达为公式: 程序 = 数据结构 算法 数据结构是程序中数据的结构,算法是程序通过程序控制对数据的处理方法。可见数据在程序中的重要性。,2019/7/21,5,作为一门程序设计语言,其中两个重要的方面便是数据及程序控制。其中数据是程序要处理的对象,处理的结果也用数据来表示和存储;不同数据类型的数据具有不同的结构、不同的存储方式以及不同的运算规则。 在这一讲中,将介绍构成Visual Basic应用程序的基本元素,包括数据类型、常量、变量、运算符、表达式、内部函数等。,2019/7/21,6,4.1 VB的基本字符集和词汇集,4.1.1 字符集 4.1.2 词汇集 1关键字:关键字又称保留字,是在语法上有固定意义的字母组合。主要包括:命令名、函数名、数据类型名、运算符、VB系统提供的标准过程等。 2标识符:标识符是用户自己定义的名字,包括自定义常量名、变量名、控件名、自定义的过程名和函数名等。用户通过标识符对相应的对象进行操作。,2019/7/21,7,4.2 VB的基本数据类型,数据是信息的物理表示形式,是程序处理的对象。在VB中,对不同类型的数据有不同的操作方式和不同的取值范围。在程序设计中,要随时注意所用数据的类型。VB的数据类型有系统定义和自定义两种,系统定义的数据类型称为标准类型,自定义数据类型是由若干标准类型组合成的某种结构。下页表列出了VB中的标准数据类型。,2019/7/21,8,VB中的标准数据类型,2019/7/21,9,4.2.1 字符串型(String) 字符串包括除双引号和回车以外可打印的所有字符,双引号作为字符串的定界符号。 字符串分为两种类型:定长字符串和变长字符串。其中定长字符串的长度为字符串长度(每个字符占1个字节),而变长字符串的长度为10个字节+字符串长度 。 例如:“1234”和“张 三”都是字符型。注意字符串中空格是有效字符。,2019/7/21,10,4.2.2 数值型 VB中的数值型数据分为整型和实型两大类。 1整型:整型数是不带小数点和指数符号的数。包括整型、长整型和字节型整数。 (1)整型(Integer,类型符%):整型数用两个字节存储,取值范围是-32768到+32767。 例如:15,-345,654%都是整数型。而45678%则会发生溢出错误。,2019/7/21,11,(2)长整型(Long,类型符&):长整型用4个字节存储,取值范围是-2147483648到+2147483647。 例如:123456,45678&都是长整数型。 (3)字节型(Byte):用一个字节的无符号二进制数存储,取值范围是0255。,2019/7/21,12,2实型:实型数据主要分为单精度、双精度和货币型3种。 (1)单精度浮点数(Single,类型符 ! ):单精度数用4个字节(32位)存储,其中符号位占1位,指数占8位,其余23位表示尾数。可以精确到7位十进制有效数字,取值范围1.401298E-45|x|3.402823E+38。 例如:3.14!,2.718282。,2019/7/21,13,(2)双精度浮点数(Double,类型符 # ):双精度数用8个字节(64位)存储,其中符号位占1位,指数占11位,其余52位表示尾数。可以精确到15位十进制有效数字,取值范围4.94065645841247E-324|x| 1.797693134862316 E +308。,2019/7/21,14,(3)货币型(Currency,类型符 ):货币型数据主要用来表示货币值,用8个字节存储,货币型是定点数,精确到小数点后面第4位,第五位四舍五入。整数部分最多15位。 例如:3.56 、 65.123456都是货币型。,2019/7/21,15,4.2.3 逻辑型(Boolean) 逻辑型数据只有两个:逻辑真True和逻辑假False,用2个字节存储。当把逻辑值转化为数值型时,False为 0,True为 -1。 例如: 在立即窗口中输入: Print 3+(32) 结果: 3 2,2019/7/21,16,4.2.4 日期型(Date) 日期型数据用8个字节来存储,日期范围从公元100年1月1日到9999年12月31日,可以用 # 括起来放置日期和时间,允许用各种表示日期和时间的格式。 日期可以用“/”、“,”、“-”分隔开,可以是年、月、日,也可以是月、日、年的顺序。 时间必须用“:”分隔,顺序是:时、分、秒。 例如:#1999-08-11 10:25:00 pm# 、#08/23/99# 、#03-25-75 20:30:00# 、#98,7,18#等都是有效的日期型数据。在VB中会自动转换成mm/dd/yy(月/日/年)的形式。,2019/7/21,17,4.2.5 变体型(Variant) 变体型也称为可变类型,它是一种特殊的数据类型。它的类型可以是前面叙述的数值型、日期型、字符型等,完全取决于程序的需要。从而增加了VB数据处理的灵活性。 4.2.6对象型(Object) 对象型数据作为32位(4 个字节)地址来存储,该地址可以引用当前应用程序或其他应用程序中的对象。可以用Set语句指定一个被声明为Object的变量,去引用应用程序所能识别的任何实际对象。对象型在Visual Basic6.0的较高层次的编程中使用。,2019/7/21,18,4.2.7 Decimal 数据类型(略) Decimal 数据类型占12个字节,存储为96位的无符号整数形式,也可以有28位小数的十进制数。 只能用于变体类型(Variant),在声明变量时不能为Decimal类型。,2019/7/21,19,4.2.8 自定义类型 在VB中可以用系统提供的标准类型定义变量,它们都是计算机处理的基本数据项。但在实际工作中,常见的并不是孤立的数据项,而是由两个或两个以上的基本项组成的组合项。例如,学生对象由学号、姓名、性别与语文、英语、数学、平均分数等基本项组合成组合项。用这些组合项来描述相应对象的若干属性,这些描述相同对象的组合项的集合形成了记录。在VB中使用用户定义数据类型定义记录结构。,2019/7/21,20,自定义类型由Type语句来实现: 格式:Type 自定义类型名 元素名1 As 类型名 元素名2 As 类型名 元素名n As 类型名 End Type,2019/7/21,21,例如: Type stutype xm As String*4 xh As Integer csrq As Date sx As Single yw As Single yy As Single End Type,2019/7/21,22,429 枚举类型(略) 当一个变量只有几种可能的值时,可以定义为枚举类型。 格式:Public|Private Enum 类型名称 成员名=常数表达式 成员名=常数表达式 End Enum 说明: 默认Enum是Public在整个工程均可见。Private:是Enum型仅在声明的模块中是可见的。 一般在定义部门、职称等变量使用枚举类型。 具体见书P5658,2019/7/21,23,4.3 常量与变量,计算机处理数据时,常用的数据形式有两种,一是常量,二是变量。 4.3.1 常量 在程序执行的过程中保持不变的数据称为常量。在VB中,常量分为两种,文字常量和符号常量。符号常量又分为用户自定义和系统定义两种。,2019/7/21,24,1文字常量:文字常量直接出现在代码中,也称为字面常量或直接常量,文字常量的表示形式决定它的类型和值。 例如: 字符型:“I am a student“ 放在一对引号当中。 数值型:3.14159、56、8.432E-15 日期型:#3 jan,98# 放在一对#当中。 逻辑型:True 、False,2019/7/21,25,2符号常量:符号常量就是用标识符来表示一个常量。 例如:我们把3.14定义为pi,在程序代码中,我们就可以在使用圆周率的地方使用pi。 使用符号常量的好处主要在于,当我们要修改该常量时,只需要修改定义该常量的一个语句即可。 定义常量的方法如下: 格式:const 常量名 as类型=表达式 说明:常量名的命名规则与标识符相同。 as类型用以说明常量的数据类型。,2019/7/21,26,除了用户定义的常量外,在VB中,系统定义了一系列常量,可与应用程序的对象、方法或属性一起使用,使程序易于阅读和编写。系统常量的使用方法和自定义常量的使用方法相同。 例如:form1.Windowstate=vbMinimized 将窗口最小化。 其中vbMinimized就是一个系统定义的常量,值为1。 和form1.Windowstate=1相比较,form1.Windowstate=vbMinimized更明确地表达了语句的功能。,2019/7/21,27,变量:一个有名称的内存位置称为变量,其命名规则如下: 只能由字母、数字和下划线组成; 第一个字符必须是英文字母,最后一个字符可以是类型说明符; 有效字符为255个; 不能用VB的保留字作变量名,但可以把保留字嵌入变量名中;同时,变量名也不能是末尾带有类型说明符的保留字。如:load、load%、load&等均是非法。,4.3.2 变量,2019/7/21,28,1变量的说明:使用变量前,应首先定义所用到的变量(包括变量名和类型),使系统分配相应的内存空间,并确定该空间可存储的数据类型。所有变量都具有名字和类型。在VB中可以用类型说明语句或隐式说明来定义变量。 (1)类型说明语句 格式:说明符 变量名 As 类型 说明符是说明语句的关键字,它可以是Dim,Private,Public,Static。各自的含义后面分别介绍。,2019/7/21,29,主要介绍Dim语句。 例如: Dim a as integer Dim b as long Dim c as single 上面的3个语句可以写为: Dim a as integer,b as long,c as single 也可以用类型符来定义变量,上面语句写成: Dim a%,b&,c! 作用是一样的。 缺省 As类型为可变类型。,2019/7/21,30,另外,若把多个变量都定义成同一类型,例如:把X,Y,Z都定义成双精度型,必须写成: Dim X as double,Y as double,Z as double 如果写成:Dim x,y,z as double 则x,y定义成可变类型,z定义成双精度型。 对于字符型变量,VB中分为定长和变长两种。 例如:Dim Name as string,Id as string*10,2019/7/21,31,说明: Dim语句定义的变量其作用范围由Dim语句所在的位置决定。Dim语句出现在窗体代码的声明部分时,则窗体以及窗体中各控件的事件过程都可以使用这些变量,这种变量称为窗体级变量。 在过程内部用Dim语句声明的变量,只在该过程内有效。这种变量称为局部变量。,2019/7/21,32,(2)隐式说明 VB中使用未加说明的变量时,系统默认为可变类型(Variant),这种方式称为隐式说明。建议初学者养成对变量显示说明的习惯,以避免一些不必要的错误。,2019/7/21,33,2可变类型变量Variant 当说明语句中,使用类型关键字Variant定义类型,或仅定义变量而不作类型声明(或变量名不带类型符),则该变量称为可变类型变量。 3自定义类型变量 在 VB6.0 中允许用户自己定义变量类型,在定义“自定义类型变量”前要先定义数据类型,2019/7/21,34,4.3.3 变量的作用域,概述: 在VB中,由于可以在过程中和模块中声明变量,根据定义变量的位置和定义变量的语句不同,变量可以分为: 局部变量(过程级变量) 窗体/模块级变量(私有的模块级变量,能被本模块的所有过程和函数使用) 全局级变量(公有的模块级变量)。,2019/7/21,35,1、 过程级变量局部变量,局部变量:在过程内部声明的变量,只能在本过程中使用。 在过程内部使用 Dim 或者 Static 关键字来声明的变量,只在声明它们的过程中才能被访问或改变该变量的值,别的过程不可访问。所以可以在不同的过程中声明相同名字的局部变量而互不影响。,2019/7/21,36,例: Private Sub Form_Load() Dim n% n= 10 End Sub Private Sub From_Click() Dim n% Print “n=“;n End Sub,程序运行后单击窗体,其输出结果是什么?,2019/7/21,37,2 、窗体/ 模块级变量,窗体/模块级变量:在“通用声明”段中用Dim语句或用Private语句声明的变量,可被本窗体/模块的任何过程访问。但其他模块却不能访问该变量。 例如:在“通用声明”段声明如下变量 Private s As String Dim a As Integer,b As Single,2019/7/21,38,3、 全局变量,全局变量也称公有的模块级变量,在窗体模块或标准模块的顶部的“通用声明”段用Public关键字声明,它的作用范围是整个应用程序,即可被本应用程序的任何过程或函数访问。 例如: Public a As Integer,b As single,2019/7/21,39,三种变量声明及使用规则如下表:,2019/7/21,40,公用变量与局部变量同名 在不同过程中定义同名变量,它们互不影响,但若在一过程中定义使用了与全局变量同名的变量,则就应注意。 注意:在过程中,如果定义了与模块级变量(在通用部分使用Private或Dim声明的变量),则在该过程内不能引用同名的模块级变量。例如,下页的例子中,如果将定义全局变量的语句Public Temp As Integer改为Private Temp As Integer 则在Command1的单击事件中就不能使用模块级的Temp变量。,4 、 关于多个变量同名,2019/7/21,41,Public Temp As Integer 定义全局变量 Private Sub Form_Load() Temp = 1 将全局变量Temp的值设置成1 End Sub Private Sub Command1_Click() Dim Temp As Integer 定义局部变量 Temp = 2 将局部变量Temp的值设置成2 Print “temp=“; Temp Print “temp=“; Form1.Temp End Sub Private Sub Command2_Click() Print “temp=“; Temp End Sub,2019/7/21,42,全局变量同名 如果不同模块中的全局变量使用同一名字,则通过同时引用模块名和变量名就可以在代码中区分它们。 例如:如果有一个在 Form1 和 Module1 中都声明了公用的 Integer 变量 intX,则把它们作为 MX 和FX 来引用便得到正确值。也就是说如果不同模块中的全局变量使用同一名字,引用时就需要使用“模块名.变量名”的形式来区分它们。,2019/7/21,43,5、 静态变量,概念: 除作用域之外,变量还有存活期,在这一期间变量能够保持它们的值。 在应用程序的存活期内一直保持模块级变量和全局变量的值。但是,对于Dim声明的局部变量仅当过程执行期间存在,当一个过程执行完毕,它的局部变量的值就已经不存在,而且变量所占据的内存也被释放。当下一次执行该过程时,它的所有局部变量将重新初始化。 局部变量的存活期由其定义的关键词来决定。,2019/7/21,44,局部变量声明: Dim声明:随过程的调用而分配存贮单元,过程体结束,变量的内容自动消失,存贮单元释放。 Static声明:每次调用过程,变量保持上次调用结束时的值。 声明形式: Static 变量名 AS 类型 Static Function 函数过程名(参数列表) As 类型 Static Sub 子过程名(参数列表) 注意:过程名前加Static,表示该过程内的局部变量都是静态变量。,2019/7/21,45,例:下面一段程序,想用变量n记录单击窗体的次数。 Private Sub Form_Click() Dim n As Integer n = n + 1 Print “已单击次数:“; n & “次“ End Sub,分析程序运行后多次单击窗体的输出结果: 要记录单击窗体次数,如何实现?并比较使用模块变量和静态变量的差别。,2019/7/21,46,动态变量 从一个实验讲起: 按命令按钮1 1 2 1 2 按命令按钮2 3 3 I,j,k是动态变量,2019/7/21,47,静态变量 分别在两个过程中 加入Static 使得各自的变量在运行后,保持当前值 不声明意味着是动态变量 变量有作用域 想要在过程间共享:设为全局变量,2019/7/21,48,全局变量 在通用部分加入 Public I,j,k 对命令按钮1、2交替各按两下: 可以看到,I、j、k 的值不但保留,而且在过程间传递 关键是在哪一级声明,决定了作用域,变量有占内存空间大小,存活时间长短的特性。,2019/7/21,49,4.4 运算符与表达式,4.4.1 算术运算符 算术运算符用来连接数值型数据进行算术运算,VB提供了7种算术运算符,如下表所示(其中ia=3)。,2019/7/21,50,4.4.2 字符串运算符 字符串只有连接运算,在VB中可以用“+”或“&”。建议尽量使用“&”,使程序看起来更明了。使用“&”运算符时应注意前后加空格,否则VB会当作长整数型的类型符来处理。 注意“+”和“&”的区别。当两个被连接的数据都是字符型时,它们的作用相同。当数字型和字符型连接时,“&”把数据都转化成字符型然后连接;“+”把数据都转化成数字型然后连接。,2019/7/21,51,例如: “ABC“+“DEF“其值为“ABCDEF“。 “姓名:“ & “张三“ 其值为:“姓名:张三“。 23 & “7“ 其值为:“237“。 23+“7“ 其值为:30。 而23+“7abc“则会出现类型不匹配的错误。,2019/7/21,52,4.4.3 关系运算符 关系运算符用作两个数值或字符串的比较,返回值是逻辑值True或False。下表列出了VB中的关系运算符及使用示例。,2019/7/21,53,4.4.4 逻辑运算符 逻辑运算符对逻辑量进行逻辑运算,除Not外都是对两个逻辑量运算。结果为逻辑值。下页表列出了VB中的逻辑运算符。,2019/7/21,54,2019/7/21,55,4.4.5 表达式 1表达式的组成 表达式由常量、变量、函数、运算符以及圆括号、(),按照一定的规则组成,不管表达式的形式如何,都会计算出一个结果,该结果的类型由参与运算的数据和运算符决定。,2019/7/21,56,2表达式的书写规则 (1)表达式中的每个字符没有高低、大小的区别。 (2)只能使用圆括号,可多重使用,但必须成对出现。 (3)VB表达式中的乘号“*”不能省略。 (4)能用内部函数的地方尽量使用内部函数。 例如:数学式 写成VB表达式为: (-b+sqr(b2-4*a*c)/(2*a),2019/7/21,57,3关系表达式和逻辑表达式 当使用关系运算符或逻辑运算符时,表达式又称为关系表达式或逻辑表达式。 关系运算一般表示一个简单的条件。 例如: age20 、score80、x+yz等。 逻辑表达式表示较复杂的条件。 例如: 数学中的0x5,写成VB表达式应为0x And x5。,2019/7/21,58,4结果类型 算术表达式中,不同类型的数据计算时结果转化成精度高的类型。 关系表达式和逻辑表达式的结果是逻辑值, 只有:True、False。 5优先级 圆括号算术运算符关系运算符逻辑运算符。,2019/7/21,59,4.5 常用内部函数,VB提供了大量的内部函数供用户调用。本节将分类介绍一些常用的内部函数。 函数的一般调用格式: 格式:函数名(参数表) 说明:参数表可以有一个参数或逗号隔开的多个参数,多数参数都可以使用表达式。函数一般作为表达式的组成部分调用。,2019/7/21,60,4.5.1 数学函数 VB提供了大量的数学函数。常用数学函数有三角函数、算术平方根函数、对数函数、指数函数及绝对值函数等。 Sin(x)返回自变量x的正弦值 Cos(x)返回自变量x的余弦值 Tan(x)返回自变量x的正切值 Atn(x)返回自变量x的反正切值 Abs(x)返回自变量x的绝对值,弧度=角度*Pi/180,X为弧度,2019/7/21,61,Sgn(x)返回自变量x的符号, 即:当x为负数时,函数返回-1 当x为0时,函数返回0 当x为正数时,函数返回1 Sqr(x)返回自变量x的平方根,x必须大于或等于0 Exp(x)返回以e为底,以x为指数的值,即求e的x次方,2019/7/21,62,4.5.2 转换函数 转换函数用于各种类型数据之间的转换。 Int(x)求不大于自变量x的最大整数 Fix(x)去掉一个浮点数的小数部分,保留其整数部分 Hex$(x)把一个十进制数转换为十六进制数 Oct$(x)把一个十进制数转换为八进制数 Asc (x$)返回字符串x$中第一个字符的ASCII码,2019/7/21,63,Chr$(x)把x的值转换为相应的ASCII字符 Str$(x)把x的值转换为一个字符串 Cint(x)把x的小数部分四舍五入,转换为整数 Ccur(x)把x的值转换为货币类型值,小数部分最多保留4位且自动四舍五入 CDbl(x)把x的值转换为双精度数 CLng(x)把x的小数部分四舍五入,转换为长整型数 CSng(x)把x的值转换为单精度数 CVar(x)把x的值转换为变体类型值 Val(x)把x的值转换为数值,2019/7/21,64,4.5.3 字符串函数 VB具有很强的字符串处理能力。 1.删除空白字符函数: LTrim$(字符串):去掉“字符串”左边的空白字符。 RTrim$(字符串):去掉“字符串”右边的空白字符。 Trim$(字符串):去掉“字符串”两边的空白字符。,2019/7/21,65,2.字符串截取函数: 左部截取: 格式:Left(字符串,n) 说明:字符串可以是字符串常量、字符串变量、字符串函数或字符串连接表达式。 中部截取 格式:Mid$(字符串,p,n) 说明:从第p个字符开始,向后截取n个字符。P和n都是算术表达式。若省略n,从第p个字符开始,向后截取到字符串尾。 右部截取 格式:Right$(字符串,n) 说明:返回字符串的最后n个字符。,2019/7/21,66,3.字符串长度测试函数 格式:Len(字符串) Len(变量名) 说明:(1)测试字符串的长度; (2)测试变量的存储空间。 4.String$函数 格式:String$(n,ASCII码):返回n个由该ASCII码对应的n个字符。 String$(n,

温馨提示

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

最新文档

评论

0/150

提交评论