1 / 40

第五章 VB 语法基础

第五章 VB 语法基础. 本章内容及要求: 1. 熟悉 VB 程序中代码和语句书写规则; 2. 掌握 VB 的数据类型; 3. 掌握 VB 的 运算符和表达式的使用;. 本章重点: 变量和常量的定义及使用 、 运算符和表达 式的使用。. 本章难点: 数据类型。. 5.1 VB 语言字符集及编码规则. 5.1.1 VB 的字符集. l 字母:大写英文字母 A — Z ;小写英文字母 a — z 。 l 数字: 0 一 9 ; l 专用字符:共 27 个, P48 表。. 5.1.2 编码规则与约定. (一)编码规则

jerzy
Télécharger la présentation

第五章 VB 语法基础

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第五章 VB语法基础 本章内容及要求: 1.熟悉VB程序中代码和语句书写规则; 2.掌握VB的数据类型; 3. 掌握VB的 运算符和表达式的使用; 本章重点: 变量和常量的定义及使用、运算符和表达 式的使用。 本章难点: 数据类型。

  2. 5.1 VB语言字符集及编码规则 5.1.1 VB的字符集 l字母:大写英文字母A—Z;小写英文字母a—z。 l数字:0一9; l 专用字符:共27个,P48表。 5.1.2 编码规则与约定 (一)编码规则 1.VB代码中不区分字母的大小写。 2.同一行上可以书写多条语句,但语句间要用冒号“:”分隔。 3.若一个语句行不能写下全部语句,或在特别需要时,可以换行。换行时需在本行后加入续行符,1个空格加下划线“_”。

  3. 4.一行最多允许255个字符。 5.注释以Rem开头,也可以使用单引号“'”,注释内容可直接出现在语句的后面。 6.在程序转向时需用到标号,标号是以字母开始而以冒号结束的字符串。 (二) 约定 1.为了提高程序的可读性,对于VB中的关键字其首字母大写,其余字母小写 2. 注释有利于程序的维护和调试 Rem开始 或 单撇 ‘。 例如: ‘ This is a VB REM This is a VB 在6.0中新增了“块注释/取消块注释”(视图/工具栏/编辑)

  4. 3.通常不使用行号 4.对象名命名约定:每个对象的名字由3个小写字母组成的前缀(指明对象的类型)和表示该对象作用的缩写字母组成 。如命令按钮前缀:cmd

  5. 5.2数据类型 5.2.1 标准数据类型

  6. 5.2.2 自定义类型 在模块级别中使用,用于定义包含一个或多个元素的用户自定义的数据类型。 使用形式: Type 自定义类型名 元素名 [([下标])] As 类型名 元素名 [([下标])] As 类型名 . . . End Type 见下例

  7. 例如: 对于一个学生的“学号”、“姓名”、“性别”、“年龄”、“入学成绩”等数据,为了处理数据的方便,常常需要把这些数据定义成一个新的数据类型(如Student类型)。 Type Student Xh As Sting Xm As String Xb As String Nl As Integer Score As Single End Type

  8. 5.3 常量和变量 • 5.3.1 常 量 • 在程序运行过程中,其值不能被改变的量称为常量。在VB中有三类常量: • 普通常量 • 符号常量 • 系统常量 • 一、普通常量 • 1.整型常量 • (1)整型(Integer):表示-32768至32767之间的整数 • 例如:10 110 20 • (2)长整型(Long): • 表示-2,147,483,648至2,147,483,647之间的整数 • 例如:长整型常数的书写: 23&

  9. 通常我们说的整型常量指的是十进制整数,但VB中可以使用八进制和十六进制形式的整型常数,因此整型常数有如下三种形式: 1)十进制整数。如125,0,-89。20 2)八进制整数。以&或&O(字母O)开头的整数是八进制整数,如&O25表示八进制整数25,即(25)8,等于十进制数21。 3)十六进制。以&H开头的整数是十六进制整数,如&H25表示十六进制整数25,即(25)16,等于十进制数37。VB中的颜色数据常常用十六进制整数表示。

  10. 2、实型常量 1) 单精度实型(Single):有效数为7位 表示-3.37E+38至3.37E+38之间的实数 2)双精度实型(Double):有效数为15位 实型常量的表示: 1)十进制小数形式。它是由正负号(+,-)、数字(0~9)和小数点(.)或类型符号(!、#)组成,即±n.n,±n!或±n#,其中n是0~9的数字。 例如0.123、.123、123.0、123!、123#等都是十进制小数形式。 2)指数形式。 ±nE±m 或±n.nE±m, ±nD±m 或±n.nD±m 例:1.25E+3 和1.25D+3相当于1250.0 或者1.25×103。

  11. 3、字符串常量 在VB中字符串常量是用双引号“"”括起的一串字符,例如"ABC","abcdefg","123","0","VB程序设计"等。 说明: (1)字符串中的字符可以是所有西文字符和汉字、标点符号等; (2)""表示空字符串,而" "表示有一个空格的字符串; (3)若字符串中有双引号,例如ABD"XYZ,则用连续两个双引号表示,即: "ABD""XYZ“ 4、逻辑(Boolean)数据类型 只有两个值True,或False。将逻辑数据转换成整型时:True为-1,False为0;其它数据转换成逻辑数据时:非0为True, 0为False。

  12. 5、日期常量 日期(Date)型数据按8字节的浮点数来存储,表示日期范围从公元100年1月1日~9999年12月31日,而时间范围从0:00:00~23:59:59。 一种在字面上可被认作日期和时间的字符,只要用号码符“#”括起来,都可以作为日期型数值常量。 例:#09/02/99#、#January 4,1989#,#2002-5-4 14:30:00 PM#都是合法的日期型常量。 说明:当以数值表示日期数据时,整数部分代表日期,而小数部分代表时间;例如1表示1899年12月31日。大于1的整数表示该日期以后的日期,0和小于0的整数表示该日期以前的日期。

  13. 二、符号常量 在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。 VB中使用关键字Const 声明符号常量。其格式如下: Const 常量名[As 类型|类型符号]=常数表达式 例如: Const PI#=3.1415926535 等价于: Const PI As Double=3.1415926535 三、系统常量 VB系统提供了应用程序和控件的系统定义常数。它们存放于系统的对象库中,在“对象浏览器”中的 Visual Basic(VB) 和 Visual Basic for applications(VBA)对象库中列举了 Visual Basic 的常数

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

  15. 5.3.2 变 量 一.变量和常量的命名规则 1. 以字母或汉字开头,后可跟字母、数字或下划线组成,长度小于等于40个字符; 2. 不能使用VB中的关键字; 3. VB中不区分变量名的大小写. 4. 为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型。 例如:strAbc, (字符串变量)iCount, (整型变量) dblx, (双精度变量) sYz (单精度变量)

  16. 二.变量声明 1.用Dim语句显式声明变量 形式:Dim 变量名 [AS 类型] Dim 变量名[类型符] 例 Dim iCount As integer , sum As single 等价于 Dim iCount%, sum! 2.隐式声明 Visual Basic允许用户在编写应用程序时,不声明变量而直接使用,系统临时为新变量分配存储空间并使用,这就是隐式声明。所有隐式声明的变量都是Variant数据类型。Visual Basic根据程序中赋予变量的值来自动调整变量的类型。 例如:

  17. 下面是一个很简单的程序,其使用的变量a, b, Sum都没有事先定义。 Private Sub Form_Click() Sum = 0 a = 10: b = 20 Sum = a + b Print "Sum="; Sum End Sub 3.强制显式声明——Option Explicit语句 良好的编程习惯都应该是“先声明变量,后使用变量”,这样做可以提高程序的效率,同时也使程序易于调试。Visual Basic 中可以强制显式声明,可以在窗体模块、标准模块和类模块的通用声明段中加入语句:Option Explicit

  18. 5.4 变量的作用域 概述: • 在VB中,由于可以在过程中和模块中声明变量,根据定义变量的位置和定义变量的语句不同,变量可以分为: • 局部变量(过程级变量) • 窗体/模块级变量(私有的模块级变量,能被本模块的所有过程和函数使用) • 全局级变量(公有的模块级变量)。

  19. 5.4.1 过程级变量——局部变量 局部变量: 在过程内用声明的变量,只能在本过程中使用。 在过程内部使用 Dim 或者 Static 关键字来声明的变量,只在声明它们的过程中才能被访问或改变该变量的值,别的过程不可访问。所以可以在不同的过程中声明相同名字的局部变量而互不影响。

  20. 例: Private Sub Form_Load() Dim n% n= 10 End Sub Private Sub From_Click() Dim n% Print “n=“;n End Sub 程序运行后单击窗体,其输出结果是什么?

  21. 5.4.2 窗体/模块级变量 窗体/模块级变量: 在“通用声明”段中用Dim语句或用Private语句声明的变量,可被本窗体/模块的任何过程访问。但其他模块却不能访问该变量。 例如:在“通用声明”段声明如下变量 Private s As String Dim a As Integer,b As Single

  22. 5.4.3 全局变量 全局变量也称公有的模块级变量,在窗体模块或标准模块的顶部的“通用”声明段用Public关键字声明,它的作用范围是整个应用程序,即可被本应用程序的任何过程或函数访问。 例如: Public a As Integer,b As single

  23. 3种变量声明及使用规则如下表:

  24. 5.4.4 关于多个变量同名 一、公用变量与局部变量同名 在不同过程中定义同名变量,它们互不影响,但若在一过程中定义使用了与全局变量同名的变量,则就应注意。 注意:在过程中,如果定义了与模块级变量(在通用部分使用Private或Dim声明的变量),则在该过程内不能引用同名的模块级变量。例如,上面的例子中,如果将定义全局变量的语句Public Temp As Integer改为Private Temp As Integer 则在Command1的单击事件中就不使用模块级的Temp变量。

  25. 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

  26. 二、全局变量同名 如果不同模块中的全局变量使用同一名字,则通过同时引用模块名和变量名就可以在代码中区分它们。 例如,如果有一个在 Form1 和 Module1 中都声明了公用的 Integer 变量 intX,则把它们作为 Module1.intX 和Form1.intX 来引用便得到正确值。也就是说如果不同模块中的全局变量使用同一名字,引用时就需要使用“模块名.变量名”的形式来区分它们。

  27. 5.4.5 静态变量 概念 除作用域之外,变量还有存活期,在这一期间变量能够保持它们的值。 在应用程序的存活期内一直保持模块级变量和全局变量的值。但是,对于Dim声明的局部变量仅当过程执行期间存在,当一个过程执行完毕,它的局部变量的值就已经不存在,而且变量所占据的内存也被释放。当下一次执行该过程时,它的所有局部变量将重新初始化。 局部变量的存活期由其定义的关键词来决定。

  28. 局部变量声明: • Dim声明:随过程的调用而分配存贮单元,变量的初始化;过程体结束,变量的内容自动消失,存贮单元释放。 • Static声明,每次调用过程,变量保持上次调用结束时的值。 • 声明形式: • Static 变量名 [AS 类型] • Static Function 函数过程名([参数列表]) [As 类型] • Static Sub 子过程名[(参数列表)] • 注意:过程名前加Static,表示该过程内的局部变量都是静态变量。

  29. 例5.2有一个人编了下面一段程序,想用变量n记录单击窗体的次数。例5.2有一个人编了下面一段程序,想用变量n记录单击窗体的次数。 Private Sub Form_Click() Dim n As Integer n = n + 1 Print "已单击次数:"; n & "次" End Sub 分析程序运行后多次单击窗体的输出结果: 要记录单击窗体次数,如何实现?并比较使用模块变量和静态变量的差别。

  30. 补充例题: • Private Sub Form_Click() • Dim i% ,isum% • For i = 1 To 5 • isum = sum(i) • Print isum, • Next i • End Sub • Private Function sum(n As Integer) • Dim j As Integer • j = j + n • sum = j • End Function 1 2 3 4 5 Static j As Integer 结果如何?

  31. 5.5 运算符和表达式 一. 运算符 5.5.1. 算术运算符(均是双目运算,ia=3) 例:5+10 mod 10 \ 9 / 3 +2 ^2 结果是: 10

  32. 说明:计算时自动调整精度 5.5.2. 字符串运算符与字符串表达式 字符串运算符有:& 、+ 。 功能是字符串连接 例如: "ABCD" + "EFGHI" ' 结果为:ABCDEFGHI “ VB ” & “程序设计教程” ' 结果为:VB程序设计教程 说明:当连接符两旁的操作量都为字符串时,上述两个连接符等价。它们区别是: +(连接运算):两个操作数均应为字符串类型; &(连接运算):两个操作数既可为字符型也可为数值型,当是数值型时,系统自动先将其转换为数字字符,然后进行连接操作。

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

  34. 运算符 含义 优先级 实例 结果 < 小于 所有关系运算优先级相同。低于算术运算的加“+”,减“-”运算,高于逻辑非“Not”运算。 15+10<20 False <= 小于或等于 10<=20 True > 大于 10>20 False >= 大于或等于 "This">= "That" True = 等于 "This"= "That" False <> 不等于 "This"<> "That" True Like 字符串匹配 "This" Like *is" True Is 对象比较 关系运算符都是双目运算,是用来比较两个运算量之间的关系,关系表达式的运算结果为逻辑量。若关系成立,结果为True,若关系不成立,结果为False。 VB中的关系运算符如下表所示。 5.5.3 关系运算符与关系表达式

  35. 关系运算的规则如下: (1)当两个操作式均为数值型,按数值大小比较。 (2)字符串比较,则按字符的ASCII码值从左到右一一比较,直到出现不同的字符为止.。 例: " ABCDE " > " ABRA " 结果为 False (3)数值型与可转换为数值型的数据比较, 如:29>"189" ,按数值比较,结果为False。 (4)数值型与不能转换成数值型的字符型比较, 如:77>" sdcd" ,不能比较,系统出错。 (5)“Like”运算符是VB6.0新增加的。 其使用格式为:str1 Like str2

  36. 5.5.4 逻辑运算符与逻辑表达式 Not 逻辑非为单目运算符(要求一个操作数),其它为双目运算符。 条件表达式1 And 条件表达式2 条件表达式均为T 结果为T 条件表达式1 Or 条件表达式2 条件表达式有一个T 结果为T

  37. 说明: (1)逻辑运算符的优先级不相同,Not(逻辑非)最高,但它低于关系运算,Imp(逻辑蕴含)最低。 (2)VB中常用的逻辑运算符是Not、And和Or。它们用于将多个关系表达式进行逻辑判断。 例如,数学上表示某个数在某个区域时用表达式:10≤X<20,用VB程序中应写成: X>=10 And X<20 (3)参与逻辑运算的量一般都应是逻辑型数据,如果参与逻辑运算的两操作数是数值量,则以数值的二进制值逐位进行逻辑运算(0当False,1当True)。 关系表达式与逻辑表达式常常用在条件语句与循环语句中,作为条件控制程序的流程走向。

  38. 5.5.5 日期型表达式 日期型数据是一种特殊的数值型数据,只能有下面3种情况: 1.一个日期型数据可以相减:DateB-DateA 结果是一个数值型整数(两个日期相差的天数)。 例如:#05/08/2002# - #05/01/2002# 其结果为数值:7 2.一个日期型数据(DateA)与一数值数据(N)可作加法运算:DateA+N 其结果仍是一个日期型数据。 例如:#05/01/2002# +7 其结果为日期型数据:#05/08/2002# 3.一个日期型数据(DateA)与一数值数据(N)可作减法运算:DateA-N 其结果仍是一个日期型数据。 例如:#05/08/2002# - 7 其结果为日期型数据:#05/01/2002#

  39. 表达式中出现了多种不同类型的运算符时,其运算符优先级如下:表达式中出现了多种不同类型的运算符时,其运算符优先级如下: 算术运算符>=字符运算符>关系运算符>逻辑运算 5.5.6 运算符的执行顺序 说明: 1.当一个表达式中出现多种运算符时,首先进行算术运算符,接着处理字符串连接运算符,然后处理比较运算符,最后处理逻辑运算符,在各类运算中再按照相应的优先次序进行。 2.可以用括号改变优先顺序,强令表达式的某些部分优先运行。括号内的运算总是优先于括号外的运算。对于多重括号,总是由内到外。

  40. 3. 表达式的书写中需注意的问题 (1)运算符不能相邻。例a+-b是错误的。 (2)乘号不能省略。例x 乘以y 应写成:x*y (3)括号必须成对出现,均使用圆括号。 (4)表达式从左到右在同一基准并排书写,不能出现上下标 (5)要注意各种运算符的优先级别,为保持运算顺序,在写VB表达式时需要适当添加括号(),若用到库函数必须按库函要求书写。 如: (b-sqr(b*b-4*a*c))/(2*a) (a+b)/(a-b)

More Related