退出
第 4章 VB程序设计基础
退出
第 2页
4.1 语句和语法规则
4.2 数据类型
4.3 常量与变量
4.4 常用内部函数
4.5 运算符和表达式
退出
第 3页
4.1语句和语法规则
关键字和标识符
关键字:又称为保留字,是 Visual Basic系统定义的、有特定意义的词汇,
标识符:自定义的命名称为标识符。
Visual Basic 中标识符的命名规则:
⑴ 必须以字母开头;
⑵ 只能由字母, 数字和下划线组成, 不能直接使用 Visual Basic的关键字;
⑶ 不得超过 255个字符, 控件, 窗体和模块的名字不能超过 40个字符;
⑷ 在标识符的有效范围内必须是唯一的 。
⑸ Visual Basic 允许使用汉字作为标识符 。
退出
第 4页
4.2 数据类型
Visual Basic的数据类型主要
分为三大类:
? 系统定义的基本数据类型
? 自定义类型
? 枚举类型
退出
第 5页
基本数据类型
退出
第 6页
1,字符串型 ( String)
⑴ 在字符串中字母的大小写是有区别的 。
例如 "ABC"与 "abc"是不相等的 。
⑵ 字符串中包含字符的个数称为字符串的长度, 如果长度为 0则称之为空串 。
"abc"
,中华人民共和国,
,”
“”
⑶ 字符串需要加上定界符双引号
图 4.1 立即窗口
退出
第 7页
2.数值型 ( Numeric)
包括整数类型和实数类型 。
⑴ 整数类型
① 整型 ( Integer)
例如,4,-4。
② 长整型 ( Long)
③ 字节型 ( Byte)
以 1个字节存储无符号整型,只能存储 0至 255之间的数。
退出
第 8页
⑵ 实数类型
实数类型又分为单精度实型, 双精度实型和货币型 。 其中单精度实型, 双精度
实型在 VB中都有两种表示法:定点表示和浮点表示 。
① 单精度浮点型 (Single)
单精度浮点型指数部分用 E表示 。 例如:
123.456E+3
123.456E-4
3.402823E+38 ' 3,402823乘以 10的 38次方
② 双精度浮点型 ( Double)
双精度浮点型指数部分用 D表示例如:
123.456D+3
1.79769313486232D+308 ' 1,79769313486232 乘以 10的 308次方
③ 货币型 ( Currency)
货币型数据精确到小数点后 4位 。
退出
第 9页
3,日期型 ( Date)
可以表示的日期范围从公元 100年 1月 1日到 9999年 12月 31日, 而时间可以
从 0:00:00到 23:59:59。 日期文字须以定界符, #” 括起来 。 例如:
#January 1,1993#
#1 Jan 93#
#1993-1-1#
4,布尔型 (Boolean)
布尔型又称为逻辑型, 它只有两个值, 即真值 (True)和假值 (False),存储
为两个字节 。
5,变体型 ( Variant)
变体型是一种特殊的数据类型,它可以用来表示系统定义的任何种类的
数据类型 (除了定长 String类型及用户定义类型外 )。
退出
第 10页
自定义类型
用 Type语句定义数据类型, 通常又称为记录型
格式:
Type 数据类型名
数据类型元素名 as 数据类型
数据类型元素名 as 数据类型
……
End Type
例如:
Type student
No as integer
Name as String*10 '定义为 10个字符的定长字符串
Sex as String*2 '定义为 2个字符的定长字符串
End type
退出
第 11页
枚举类型
1,枚举类型的定义
枚举类型, 即将该变量的取值一一列举出来
格式:
[Public|Private] Enum 枚举名称
成员名 1 [=常量表达式 ]
成员名 2 [=常量表达式 ]
……
End Enum
退出
第 12页
定义一个枚举类型 Workday
包含 7个成员
Public Enum Workday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
End Enum
可以用赋值语句给枚举中的成员赋
值, 所赋的值可以是任何长整
型的数 。
例如:
Public Enum Workday
Monday=1
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
End Enum
退出
第 13页
4.3常量与变量
在程序设计中需要将数据存储为常量或者变量 。 值不能被改
变的量称为常量, 可以被改变的量称为变量 。 用常量和变量在程
序中表示数据是重要的程序设计思想 。
退出
第 14页
常量
1,直接常量
直接常量就是程序中具体给出的数据的值 。
直接常量分为数值常量, 字符串常量, 逻辑常量和日期常量 。
例如,5678,233.5E-6,0.58d7,"this is a string",True,#2004-
11-18#等 。
可以指明常量的类型, 即在数值的后面加上相应的类型说明符 。
例如,2.75!是一个单精度浮点型常量, 11.25#是一个双精度浮点型
常量 。
退出
第 15页
2,符号常量
符号常量,是用一些有意义的名字代替永远不变的值 。
格式,Const常量名 [类型说明 ] = 表达式 [,常量名 =表达式 ]……
Const Pi2 = Pi * 2,Pi4 = Pi * 4
Const tomorrow = #1/1/1995#
Const num! = 1.25,max As Double = 2.65
常量的效范围 有以下三种情况:
⑴ 如果创建仅存在于过程中的常量, 就在这个过程内部声明常量 。
⑵ 如果希望这个常量在模块中所有过程都有效, 但对模块之外任何代码都
无效, 就在模块的声明段中声明常量 。
⑶ 如果创建在整个程序中都有效的全局常量, 则应在标准模块的声明段中
声明常量, 并在 Const前面放置 Public关键字, 在窗体模块或类模块中
不能声明全局常量 。
【 例 4.1】
退出
第 16页
变量
1,变量的声明
⑴ 显式声明
显式声明是在变量使用前用声明语句声明变量 。
格式,Dim变量名 [As 数据类型 ]
说明:
① 其中 Dim还可以是 Static,Public或 Private。
② 变量名应遵循标识符的定义规则 。
③ 数据类型可以是 VB支持的任意数据类型,若未指定类型则为变体型。
例如:
Dim var As Integer
Public sum_1 As Double
Dim tomorrow As Date
Dim x 'x为变体型
退出
第 17页
Dim name1 as String
Dim name2 as String*6
可以用一个 Dim语句定义多个变量, 但每个变量的数据类型必须用 as 声明,
例如:
Dim var1,var2 as Integer
Dim var1as Integer,var2 as Integer
可使用类型符定义变量 。 例如:
Dim total! '定义 total为单精度实型变量
Dim average@ '定义 average为货币型变量
退出
第 18页
⑵ 隐式声明
例如:
Private Sub Command1_Click()
Var = 50
Print Var
End Sub
可以采用强制变量声明,Option Explicit
选择, 工具 |选项, 命令, 选择, 编辑器, 选项卡, 再选择, 要求变量声明,
选项
退出
第 19页
2,自定义类型的变量
① 声明自定义类型变量 。
例如, 4.2.2节中定义一个 Student数据类型, 现在定义一个 student类型
的变量, 方法为:
Dim li as student
② 引用自定义类型变量
格式,变量名,成员名
例如:
li.no
li.Name
li.Sex
退出
第 20页
3,枚举类型的变量
例如, 在 4.2.3节中定义了一个枚举数据类型 Workday,下面的程序代码定义
了一个枚举类型变量 mywork。
Private Sub Command1_Click()
Dim mywork As Workday '定义变量 mywork为 Workday枚举类型
mywork = Tuesday ?将枚举成员 Tuesday( 值为 2) 赋值给 ywork
Print mywork '打印变量 mywork的值, 结果为 2
End Sub
退出
第 21页
变量的作用范围
在 Visual Basic 中,变量作用范围分成过程(局部)级、模块(文件内
部)级、工程(项目、全局)级这三个等级。
1,局部变量
局部变量声明方法:用 Dim或者 Static 关键字声明 。
【 例 4.2】 局部变量举例 。
Dim与 Static的区别:用 Static 声明的局部变量中的值一直存在,这种变
量称为静态变量,而用 Dim 声明的变量只在过程执行期间才存在,
执行完毕后,变量就被释放。
【例 4.3】测试 Dim与 Static的区别。
退出
第 22页
2,模块变量
模块级变量在使用之前必须声明,不能使用隐式声明方式。
模块级变量声明方法:在模块顶部的声明段中用 Dim 或 Private 关键字
声明模块级变量 。
【例 4.4】模块级变量举例
3,全局变量
全局变量声明方法:在模块的通用声明段中用 Public或 Global声明。
退出
第 23页
三种变量作用范围对照表
当不同作用范围的变量重名时,系统能够通过变量的作用范围加以识别,
过程中引用的变量,总是同名变量中作用范围最小的那个变量。
退出
第 24页
4.4常用内部函数
函数的调用格式:
<函数名 >([参数 1],[参数 2]… )
说明:
⑴ 每一个函数都有函数名, 通过函数名调用函数 。
⑵ 数学术语中的函数的, 自变量, 在程序设计语言中称为, 参数,, 函
数运算的结果称为, 返回值, 。
⑶ 函数是以表达式的形式调用的, 而不能单独作为一个语句 。
例如:
a = Sin(b)
z = Sin(x) + Cos(x + y)
退出
第 25页
数学函数
退出
第 26页
字符串函数
退出
第 27页
退出
第 28页
转换函数
退出
第 29页
时间函数
退出
第 30页
随机数函数
1,Rnd函数
格式,Rnd[(x)],其中参数 x是一个双精度数, 可以省略 。
功能,可产生一个 0~1之间的单精度随机数 ( 该值是大于或等于 0,但小
于 1的数 ), 下一个要产生的随机数受参数 x的影响, 分别为:
⑴ 当 x<0时, 则每次产生的随机数都相同 。
⑵ 当 x>0或省略时, 产生下一个随机数 。
⑶ 当 x=0时, 则该次产生的随机数与上一次产生的随机数相同 。
例如:要产生 1~100之间的随机整数时, 可利用 Int(Rnd*100+1)来解决
2,Randomize语句
格式,Randomize[(x)]
功能,将 Rnd函数的随机数生成器初始化
例如:
Randomize
Print Rnd
退出
第 31页
数制转换函数
退出
第 32页
测试函数
格式,TypeName (变量名 )
功能,返回参数的变量类型 。
说明,返回值为具体的类型名例如:
Dim a As Variant
Dim b As Integer
Dim c As Double
Dim d As String
Print TypeName(a) '返回值,empty
Print TypeName(b) '返回值,Integer
Print TypeName(c) '返回值,Double
Print TypeName(d) '返回值,String
Print TypeName(Command1) '返回值,CommandButton
Print TypeName(Picture1) '返回值,PictureBox
Print TypeName(Text1) '返回值,TextBox
退出
第 33页
4.5 运算符和表达式
运算符是表示数据之间运算方式的符号, 操作数是参与运算的数据, 表
达式是由运算符和操作数组成的式子 。
例如:算术表达式, 1+2” 中 1,2 是操作数,, +” 是运算符 。
运算符中有的需要两个操作数,称为双目运算符,有的只需要一个操作
数,称为单目运算符。
例如,-”作为负号时只用一个操作数。
退出
第 34页
算术运算符
退出
第 35页算术表达式
在书写算术表达式时应注意与数学中的表达式写法的区别:
⑴ 在 Visual Basic中不能省略乘号运算符, 如:数学上的表达式 b2-4ac中省略
了乘号, 但在写成对应的 Visual Basic表达式的时候, 要写成 b^2-4*a*c。
⑵ 表达式中所有的括号一律使用圆括号, 并且括号左右必须配对 。 如:数学
中的表达式 [(x+y)/(a-b)+c]x,在 Visual Basic中要写成 ((x+y)/(a-b)+c)*x。
⑶ 算术运算符优先级从高到低的顺序为:乘方 → 负数 → ( 乘, 除 ) → 整除 →
取模 → ( 加, 减 ), 优先级高则先运算, 但如果有括号则先运算括号内的
表达式, 例如:
-2^2 '结果为 –4
3 ^ 3 \ 2 '结果为 13
4 Mod 8/2 '结果为 0
3*2\3/2 '结果为 3
退出
第 36页
字符串运算符和字符串表达式
字符串运算符 只有, &” 和, +”, 它们的功能是把字符串连接起来 。
例如:
"Visual"+"Basic" ' 结果为,VisualBasic
"Visual"&"Basic" ' 结果为,VisualBasic
"abcd"+ 123 '操作类型不匹配出错
"abcd"& 123 '结果为 abcd123
now & "星期四 " '03-6-20 15:39:55星期四
字符串表达式
例如,"abc" & "123" & Left("abc",1)
退出
第 37页
关系运算符
关系运算比较规则:
⑴ 数值型:比较它们的数值大小 。
⑵ 字符型:从左到右逐个字符比较 ASCII码值, 直到遇到不同字符为止 。 对于
两个汉字字符, 比较它们的拼音 。 常见的字符的比较关系如下:
,空格, <,0” <…… <,9” <,A”<…… <“Z”<“a”<…… <“z”<“汉字,
⑶ 日期型:将日期看成, yyyymmdd”的 8位整数, 再按数值进行比较 。
退出
第 38页
关系表达式
格式:
<表达式 1> <关系运算符 > <表达式 2>
功能,如果关系表达式成立, 则计算结果为真, 否则为假 。
说明:
⑴, 表达式 1” 和, 表达式 2” 是两个类型相同的表达式, 可以是算术表
达式, 字符串表达式或者是其它关系表达式 。 例如:
10-5>2+3 '结果为,False
"xyz" = "XYZ" '结果为,False
⑵ Visual Basic中,所有的关系运算符的优先级都相同。
退出
第 39页逻辑运算符与逻辑表达式
⑴ Not取反运算, 即将真变假或假变真 。 例如:
Not "abc"<"abd" 'False
⑵ And 与运算, 只有两个操作数的值都为真时, 结果为真, 否则结果为假 。
例如:
true And 1<2 ' True
2+2=4 And false ' False
3<5 And "a"="A" ' False
⑶ Or 或运算, 两个操作数的值只要有一个为真时, 结果就为真, 否则结果
为假 。 例如:
"abc"<>"ABC" Or 2>1 ' True
True Or 6-3>4 ' True
6<2 Or "b"="B" ' False
退出
第 40页
⑷ Xor 异或运算, 两个操作数的值相反时, 结果为真, 否则结果为假 。
例如:
3>5 Xor 8<5 ' False
⑸ Eqv 等价运算, 两个操作数的值同时为真或同时为假时, 结果为真,
否则结果为假 。 例如:
3>5 Eqv 8<5 ' True
⑹ Imp 蕴含运算, 当第一个操作数的值为真, 第二个操作数的值为假时,
结果为假, 否则结果为真 。 例如:
5<6 Imp 2>3 ' False
退出
第 41页
逻辑表达式
逻辑运算符的优先级有高到低为,Not→ And→ Or→ Xor→ Eqv→ Imp。
例如:
Not "Abc"="abc" Or 2+3<>5 And "23"<"3" ' 结果为,True
退出
第 42页
日期运算符与日期表达式
1,日期运算符
日期运算符只有, +” 和, -” 。
2,日期表达式
日期表达式包括以下操作:
,+” 连接的日期表达式, 操作数一个为日期型, 另一个为数值型,
表示计算该日期后的若干天 。 例如:
#2002-02-01#+1 ' 结果为,02-2-2
,-” 连接的日期表达式有两种情况:当操作数一个为日期型, 另
一个为数值型时, 表示计算该日期前的若干天;如果两个操作
数都是日期型, 表示计算两个日期之间相差的天数 。 例如:
#01/01/2002# - 2 ' 结果为 01-12-30
#2002-02-02# -2 ' 结果为,02-1-31
#2001-02-03# - #2001-02-02# ' 结果为,1
退出
第 43页
各种运算符的优先级比较