Visual Basic 程序设计
第3章 Visual Basic语言基础
*
第3章 Visual Basic语言基础
内容简介
基本数据类型
常量和变量
运算符与表达式
编码规则
常用内部函数
举例
在进行VB程序设计之前,首先要了解VB语言是如何描述数据以及数据类型的作用是什么?因为要有不同类型的数据存储到计算机内存中,而它们所占计算机存储的空间、使用范围及数据操作都不同,所以要将数据划分成不同的数据类型。数据类型的主要功能是用来区分不同的数据。
*
第3章 Visual Basic语言基础
基本数据类型
数据类型的主要作用是:
① 规定属于某数据类型数据的使用范围;
② 规定某数据类型数据所具有的操作;
③ 规定某数据类型数据所占用的内存空间大小。
在VB中,由于不同类型的数据有不同的操作方式和不同的取值范围,所以在程序设计中,要注意所用数据的类型。VB语言的数据类型可分为:基本数据类型和用户自定义数据类型。本节主要介绍基本数据类型,用户自定义数据类型在后面介绍。
*
第3章 Visual Basic语言基础
基本数据类型
*
第3章 Visual Basic语言基础
基本数据类型
数据是描述客观事物的数、字符以及所有能输入到计算机中,并能被计算机程序加工处理的符号的集合
数值(Numeric)数据类型
取值范围:
-32768~32767
长整型 Long
取值范围:
-2147483648~
2147483647
单精度Single
最多可表示7位有效数字
最多可表示15位有效数字
整型 Integer
双精度Double
*
第3章 Visual Basic语言基础
基本数据类型
字符型(String)
用于存放字符串,有变长和定长2种,分别表示固定长度和可变长度的字符串
布尔型(Boolean)、日期型(Date)、变体类型(Variant)
变长字符串
字符串的长度不固定
定长字符串
字符串具有固定长度
*
第3章 Visual Basic语言基础
基本数据类型
数据类型
类型名称
前缀
存储空间(Byte)
范 围
整形
Integer
Int
2
-32768~32767
长整形
Long
Lng
4
-2147483648~2147483647
单精度型
Single
Sng
4
负数:~-45
正数:-45~
双精度型
Double
Dbl
8
负数: ~
-324
正数:-324 ~
字符型
String
Str
1字节/字符
1 ~ 65535个字节(64KB)
货币型
Currency
Cur
8
~
布尔型
Boolean
Bln
2
True 或 False
日期型
Date
Dtm
8
100年1月1日~9999年12月31日
字节型
Byte
Byt
1
0~255
对象型
Object
Obj
4
任何对象的引用
变体型(数值)
Variant
Vnt
16
任何数值,最大可达Double的范围
变体型(字符)
Variant
Vnt
根据需要分配
同字符型
*
第3章 Visual Basic语言基础
常量和变量
常量和变量命名的规则
在VB中常量和变量的命名要遵循以下的规则:
①只能由字母、数字和下划线组成,并且首字符必须是字母,长度小于等于255个字符。例如:abc,student1,name_2。
②不能使用VB中的关键字。
③VB中不区分常量名或变量名的大小写。常量名一般全部用大写字母表示。变量名一般首字母大写,其余用小写字母表示。
④为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型。例如intSum,dblMax,strName
⑤常量名或变量名在同一范围内必须是唯一的。范围指的就是引用常量名或变量名的变化域:一个过程、一个窗体等。
*
第3章 Visual Basic语言基础
常量和变量——常量
在VB中用常量表示在整个程序中事先设置的、不会改变数值的数据。
常量有三种类型
直接常量
符号常量
系统常量
*
第3章 Visual Basic语言基础
常量和变量——常量(直接常量)
直接常量就是在程序代码中以直接的形式给出的各种类型的数据。
,12E-5 (单精度型常量)
True、False (布尔型常量)
"good" (字符型常量)
, (双精度型常量)
*
第3章 Visual Basic语言基础
常量和变量——常量(符号常量)
以符号的形式表示的常量叫做符号常量。
其语法为:
[Public | Private] Const 符号常量名 [As 数据类型] = 表达式
其中:Public 和Private表示符号常量的作用范围
*
第3章 Visual Basic语言基础
常量和变量——常量(符号常量)
符号常量的作用是把一些在程序中经常使用的常量用某一名字代替,以便于程序的阅读和修改。符号常量一旦声明,其值只能被引用而不能被改变。
符号常量名的命名要遵循常量和变量的命名规则。表达式是由数值常数或字符串常数以及运算符组成,但不能使用函数调用。
Const Pi =
Const intMax = 5 * 5
Const strBookName As String = "VB程序设计语言"
*
第3章 Visual Basic语言基础
常量和变量——常量(系统常量)
系统常量是系统和控件提供的。它们在使用上与直接常量一样。
*
第3章 Visual Basic语言基础
常量和变量——变量
变量是用来存储值的所在处 ,每个变量都有唯一的名字标识和确定变量能够存储的数据的数据类型。
变量的类型
属性变量
用户自定义变量
*
第3章 Visual Basic语言基础
常量和变量——变量
每个对象都有自己的属性变量。
用户可以在属性窗口或通过代码窗口在运行状态时对属性变量赋值:
="VB程序设计"
用户自定义变量是由用户根据程序设计需要自己建立的变量,本节主要介绍这类变量。
*
第3章 Visual Basic语言基础
常量和变量——变量
变量声明就是定义变量的数据类型。在使用变量前先定义变量名和变量所能表示的数据类型。在VB中可以采用两种方式声明变量。
显式声明变量
隐式声明变量
*
第3章 Visual Basic语言基础
常量和变量——变量
显式声明变量:显式声明是在变量使用之前,用一个声明语句来定义变量。
声明语句的语法为:
Dim 变量名 [As 类型]
例如:
Dim Sum As Integer
Private dblMax As Double,DblMin As Double
Static Student_name As String
Public Book_Id As String*8 ' 声明定长字符串变量
Dim x ' 声明一个变体变量
*
第3章 Visual Basic语言基础
常量和变量——变量
隐式声明变量:当变量未声明而直接使用时称为隐式声明
所有隐式声明的变量都是Variant类型的,相当于显式声明中的Dim x语句
在使用一个变量之前并不必须先声明这个变量。但是如果在代码中把变量名拼错了的话,会导致难以查找的错误
*
第3章 Visual Basic语言基础
常量和变量——变量
例如,假定这样写事件过程:
Private Sub Command1_Click()
Temp = 1
Print Tem* 2
End Sub
这段代码在倒数第二行把Temp变量名写错为Tem,所以在窗体上总是输出0
为了便于调试程序,最好在使用变量前都加以声明
*
第3章 Visual Basic语言基础
常量和变量——变量
强制声明变量:VB中设置了强制声明变量的语句。只要遇到一个未经明确声明就当成变量的名字,Visual Basic 都发出错误警告。
强制声明变量语句
Option Explicit
它放在类模块、窗体模块或标准模块的通用的声明段中
*
第3章 Visual Basic语言基础
常量和变量——变量
有两种方式添加强制声明变量
在“选项”窗口添加强制变量声明
手工添加强制变量声明
*
第3章 Visual Basic语言基础
运算符与表达式
表达式是指由运算符连接的常量、变量、函数等。有什么类型的运算符就有相应类型的表达式。也就是说,表达式的数据类型是通过数据和运算符共同决定的。
算术运算符
关系运算符
连接运算符
逻辑运算符
日期运算符
*
第3章 Visual Basic语言基础
运算符与表达式- 算术表达式
算术表达式是指计算结果为一个数值的表达式。算术表达式包括值为数值型数据的函数、数值型变量、数值型常量和算术运算符。
运算符
运 算
优先级
例 子
结 果
^
乘方
1
^ 3
-
取负
2
-a (a = 5)
-5
*
乘法
3
3 * 5
15
/
除法
3
5 / 3
\
整除
4
10 \ 4
2
Mod
取模
5
175 Mod 60
55
+
加法
6
+ 4
-
减法
6
10 – 5
5
*
第3章 Visual Basic语言基础
运算符与表达式- 算术表达式
(1)“-”运算符有两种含义,求两数之差或表示算术表达式的负值。当用来求两个操作数之差时是双目运算符,而取负“-”是单目运算符,即在一个操作数前加“-”。取负“-”是算术运算符中唯一的一个单目运算符。
(2)“\”整除运算符。当运算符左右为整数时,结果为去掉小数部分的整数;当运算符左右为实数时,先将实数四舍五入成整数,再进行整除。例如: \ = 4 (等价于12 \ 3 = 4)
(3)“Mod”取模运算符。与“\”类似,当运算符左右为整数时,结果为整除后的余数;当运算符左右为实数时,先将实数四舍五入成整数,再求余数。例如:
Mod = 0(等价于18 Mod 6 = 0)
Mod = 1(等价于9 Mod 2 = 1)
*
第3章 Visual Basic语言基础
运算符与表达式- 算术表达式
算术运算符的优先级
表达式按照优先级由高到低、从左到右的顺序计算出结果
注
意
乘号“ * ”不能省略。
运算符“ - ”外,任何两个操作数之间都必须用运算符连接
所有符号都必须并排写在一行上,没有上标下标
之分。例如:x1 => x1,x2 => x^2
只有小括号()且数量必须匹配,即左括号的个数
等于右括号的个数
*
第3章 Visual Basic语言基础
运算符与表达式- 字符串表达式
字符串表达式是指用字符串运算符连接起来的其值为一连串字符的表达式。
字符串表达式的格式是:
字符串1 <字符串运算符> 字符串2
"7" & "+" & "8" ' 结果为:7+8
"Visual" & " Basic"
' 结果为:Visual Basic
*
第3章 Visual Basic语言基础
运算符与表达式- 字符串表达式
注意,“&”和“+”在使用上是有区别的。
“+”两边的操作数都是字符串型,则它作为字符串连接符进行字符串连接
"7" + "8" ' 结果为:78
“+”两边都是数值型,则它作为加法运算符进行加法
7 + 8 ' 结果为:15
“+”两边一个是数值型,另一个不是只包含数字的字符串型,则出现错误警告
7 + "a"
结果为:“实时错误‘ 13’,类型不匹配”
“+”两边一个是数值型,另一个是只包含数字的字符串型,则自动将字符串转换成数值再进行加法运算
7 + "8" ' 结果为:15
先将"8"转换成8再进行加法运算
*
第3章 Visual Basic语言基础
运算符与表达式- 关系表达式
关系运算符
关系运算符也称比较运算符,
它包括:大于“>”、小于“<”、大于等于“>=”、小于等于“<=”、等于“=”、不等于“<>”6种
这6个运算符的优先级相同
*
第3章 Visual Basic语言基础
运算符与表达式- 关系表达式
关系表达式
关系表达式是指用关系运算符连接两个表达式
格式:表达式1 <关系运算符> 表达式2
关系表达式的结果是布尔型,即真True和假False两种结果
*
第3章 Visual Basic语言基础
运算符与表达式- 关系表达式
数值型数据比较大小
数值型数据的大小关系与数学中数值的大小关系一样
字符型数据比较大小
单个字符比较大小:按照它的ASCII码值的大小进行比较
字符串比较大小:从两个字符串左边的第一个字符开始比较。如果不同,第一个字符的大小关系就是整个字符串的大小关系;如果相同,逐一向右比较后面的字符,最先发现不一样的字符的大小关系就是字符串的大小关系
日期型数据比较大小
将日期看成“yyyymmdd”的8位整数进行比较,即按日期先后排序
*
第3章 Visual Basic语言基础
运算符与表达式- 布尔表达式
布尔运算符也叫逻辑运算符
共有6个:非“Not”、与“And”、或“Or”、异或“Xor”、等价“Eqv”、蕴含“Imp”
结果是布尔型
a
b
Not a
a And b
a Or b
a Xor b
a Eqv b
a Imp b
True
True
False
True
True
False
True
True
True
False
False
False
True
True
False
False
False
True
True
False
True
True
False
True
False
False
True
False
False
False
True
True
*
第3章 Visual Basic语言基础
运算符与表达式- 关系表达式
布尔表达式是指用布尔运算符连接两个关系表达式。
格式为:
关系表达式1 < 布尔运算符 > 关系表达式2
当表达式中既有关系运算符又有布尔运算符时,关系运算符优先级高于布尔运算符。表达式的结果是布尔型,即True和False两种结果。
*
第3章 Visual Basic语言基础
运算符与表达式- 日期表达式
日期表达式是由“+”或“-”连接的包含日期文字、可看作日期的数字、可看作日期的字符串以及从函数返回的日期或时间等表达式
日期表达式与日期表达式相减,结果为数值型。含义是两个日期相差的天数
日期表达式与数值表达式相加减,结果为日期型。含义是向后(前)推算日期
Print #5/18/2005# - #4/18/2005# ' 结果为:30
Print #5/18/2005# - #5/29/2005# ' 结果为: -11
Print #5/18/2005# + 11 ' 结果为:2005-29
Print #5/18/2005# - 30 ' 结果为:2005-4-18
*
第3章 Visual Basic语言基础
运算符与表达式- 关系表达式
每种表达式的运算符都有自己的优先级
优先级按照从高到低排列顺序为:括号、算术运算符、字符串运算符、关系运算符、布尔运算符
同一优先级的运算符按照从左到右的排列顺序执行
5 + "3" & "4" + 5 ' 结果为:89
① ③ ②
8 9
"89"
当不同数据类型的数据进行运算的时候,运算结果 取存储字节长的那个数据类型
*
第3章 Visual Basic语言基础
常用内部函数
VB中有两类函数:内部函数和用户自定义函数
内部函数也称标准函数或系统函数,是由VB
系统提供的
用户自定义函数是指由用户自己根据需要定
义的函数,第9章将详细介绍
内部函数包括数学函数、字符函数、日期与时间函数、类型转换函数、格式输出函数等
*
第3章 Visual Basic语言基础
常用内部函数
数学函数
随机函数,返回一个(0,1)之间的随机数
Rnd[(x)]
x的小数点后n位进行四舍五入运算
(保留小数点后n位有效数字,n省略时,按照四舍五入取整)
Round(x, n)
返回自变量x的整数部分
Fix(x)
取整函数,返回不大于x的最大整数
Int(x)
符号函数,根据x的正负值返回-1,0,1
Sgn(x)
平方根函数,返回x的平方根
Sqr(x)
绝对值函数,返回x的绝对值
Abs(x)
对数函数,求以e为底的对数,即
Log(x)
指数函数,求
Exp(x)
反正切函数,返回x的反正切值
Atn(x)
正切函数,返回弧度x的正切值
Tan(x)
余弦函数,返回弧度x的余弦值
Cos(x)
正弦函数,返回弧度x的正弦值
Sin(x)
函数功能
函数
*
第3章 Visual Basic语言基础
常用内部函数
字符串函数
将字符型自变量转换成数值型
数值
Val(S$)
将数值型自变量转换成字符型
字符串
Str(n)
返回字符S$ 的ASCII码
整数
Asc(S$)
返回一个ASCII码为n的字符
字符串
Chr(n)
子字符串b$ 在S$ 的第n个字符开始最先出现的位置
整数
Instr(n,S$,b$)
字符串S$ 中所有小写字母转换成大写字母
字符串
Ucase(S$)
字符串S$ 中所有大写字母转换成小写字母
字符串
Lcase(S$)
由S$ 中第一个字符组成的n个字符串
字符串
String(n,S$)
由n个空格组成的字符串
字符串
Space(n)
去掉S$ 的前导和尾随空格
字符串
Trim(S$)
去掉S$ 的尾随空格
字符串
Rtrim(S$)
去掉S$ 的前导空格
字符串
Ltrim(S$)
计算字符串S$ 的长度(字符串中字符的个数)
整数
Len(S$)
取从字符串S$ 左边第p个字符开始的n个字符
字符串
Mid(S$,p,n)
从字符串S$ 右边算起取n个字符
字符串
Right(S$,n)
从字符串S$ 左边算起取n个字符
字符串
Left(S$,n)
函数说明
函数值类型
函数
*
第3章 Visual Basic语言基础
常用内部函数
日期和时间函数
22
Second(#8:18:22 PM#)
秒(0~59)
Second(d)
18
Minute(#8:18:22 PM#)
分(0~59)
Minute(d)
20
Hour(#8:18:22 PM#)
小时(0~23)
Hour(d)
5(星期四)
Weekday(#2006-7-20#)
星期几(1~7代表星期日~星期六)
Weekday(d)
20
Day(#2006-7-20#)
一个月中的第几天
Day(d)
7
Month(#2006-7-20#)
月份
Month(d)
2006
Year(#2006-7-20#)
年份
Year(d)
Timer
从午夜开始到现在经过的秒数
Timer
17:18:08
Time
系统时间(hh:mm:ss)
Time
2006-7-20
Date
系统日期(yyyy-mm-dd)
Date
2006-7-20
17:18:08
Now
系统日期和时间
(yyyy-mm-dd hh:mm:ss)
Now
结果
举例
函数说明
函数
*
第3章 Visual Basic语言基础
常用内部函数
转换函数
函数
将自变量转换成
函数
将自变量转换成
CBool(n)
Boolean
CLng(n)
Long
CByte(n)
Byte
CSgn(n)
Single
CCur(n)
Currency
CStr(n)
String
CDate(n)
Date
CVar(n)
Variant
CDbl(n)
Double
CVErr(n)
Error
CInt(n)
Integer
*
第3章 Visual Basic语言基础
常用内部函数
格式输出函数Format
格式输出函数将数字、日期或字符串按指定的格式输出
格式是: Format(表达式,[格式符])
指数符号
E+、E-、e+、e-
显示一个原义字符
-、+、$
百分比符号占位符
%
千分位符号占位符
,
数字占位符,不在前面或后面补0
#
数字占位符,在前面或后面补0
0
说 明
字 符
*
第3章 Visual Basic语言基础
编码规则
和其它高级语言一样,VB有它的编写代码的规则
VB中的一条代码称为一条语句。VB是不区分大小写的语言,一行语句输入完回车后,系统会按如下规定格式化程序代码。
对关键字的第一个字母自动变成大写,其余字母变成小写
若关键字由多个单词组成,则每个单词的首字母自动变成大写
用户自定义变量、符号常量等非关键字,以第一次定义的为准,以后输入的则不必再考虑大小写
“=”、“+”、“-”、“*”、“/” 等运算符左右自动加空格
*
第3章 Visual Basic语言基础
编码规则
行输入规则
一行中可写多条语句,语句之间用冒号隔开。
例如:a = 1 : b = 2 : c = 3
当一条语句太长时,为了便于阅读最好写成多行。在需要换行的地方加一个空格及续行符“_”。
例如:
strmsg = MsgBox("存盘吗?", vbYesNoCancel + vbExclamation + _
vbDefaultButton2, "保存")
*
第3章 Visual Basic语言基础
Visual Basic语言基础举例
[例3-1] 随机产生一个三位整数x,求出x的个位、十位和百位数字,并将这三个数字显示在窗体上
Private Sub Form_Click()
Dim x As Integer, a As Integer, b As Integer, c As Integer
x = Int(Rnd * 900) + 100 '随机产生一个三位整数
a = x Mod 10 '求出个位数字
b = x \ 10 Mod 10 '求出十位数字
c = x \ 100 '求出百位数字
Print x; "的百位数字是"; c; ",十位数字是"; b; ",个位数字是"; a
End Sub
*
第3章 Visual Basic语言基础
Visual Basic语言基础举例
[例3-2] 给出判断某年Y是否为闰年的表达式
Y是否为闰年的表达式:
(Y\400= Y/400) Or ((Y Mod 4=0 And Y Mod 100<> 0)
当表达式为True(真)时,Y是闰年,否则不是闰年。
*
第3章 Visual Basic语言基础
Visual Basic语言基础举例
[例3-3] 将一个字符串拆分成两个字符串。例如将字符串“Visual Basic” 拆分成两个字符串:“Visual”和“Basic”
s= “Visual Basic”
n=InStr(s, “ ”) '查找空格位置
Str1=Left(s,n-1) '求出第一个字符串
Str2=Mid(s,n+1) '求出第二个字符串
*
第3章 Visual Basic语言基础
Visual Basic语言基础举例
[例3-5] 类型转换实例。随机产生一个小写字母,然后将小写字母转换成大写字母
Private Sub Form_Click()
x = Val(Int(Rnd * 26) + 97) '随机产生一个小写字母
Print "小写字母:"; Chr(x), "大写字母:"; Chr(x - 32)
End Sub