第 2章 程序设计基础
程序中的大部分实际工作是采用程序代码来处理的
任何一个程序设计语言都有一套严格的编程规定
本章主要内容
2.1 数据类型
数据是程序处理的对象 。 为了更好地处理各种各样的数据,
VB定义了多种数据类型
数值型
数据类型 字符型
逻辑型
日期型
对象型
变体型
整数, 整型 /长整型
字节型
浮点型, 单 /双精度
货币型
1,整型 (Integer)和长整型 (Long)
不带小数部分的数,表示正整数、负整数和零
整型数, -32768~ 32767
长整型数,-2147483648~ 2147483647
2,字节型 (Byte)
字节型数可以表示无符号的整数
0~ 255
3,单精度型 (Single)和双精度型 (Double)
浮点数。表示带有小数部分的数
如超出某个表示范围,则用科学记数法
例如,4.53E8(4.53× 108),8.173E-14,3.14D23
4,货币型 (Currency)
专门为处理货币而设计的数据类型
它可最多保留小数点右边 4位和小数点左边 15
5,字符型 (String)
用双引号括起来的一串字符。
例如,,Canton”,” 1+2=?”,” Good└┘Morning”等
,″”
字符串长度。分变长字符串 (长度不固定 )和定长字符串 (长度
固定 )
在 VB中,把汉字作为一个字符来处理。
6,逻辑型 (Boolean)
逻辑型又称布尔型,其数据只有 True(真 )和 False(假 )两个值
7,日期型 (Date)
表示日期和时间
用两个, #”符号把日期和时间的值括起来
如,#08/20/2001#,#2001-08-20#
8,对象型 (Object)
对象型数据可用来表示应用程序中的对象
9,变体型 (Variant)
变体型数据是一种可变的数据类型,可以存放任何类型的数

当指定变量为 Variant变量时,VB会自动完成必要的转换
在程序中不特别说明时,VB会自动将该变量默认为 Variant
型变量。
例,Temp=“22” ’字符串
Temp=Temp-1 ’数值
Temp=#01/01/2002# ’日期
说明:
(1) 不同类型的数据,所占的存储空间不一样。
(2) 数据的类型可在数据之后加上一个类型符来表示,例如,
413&,86!,104.67#等。
2.2.1 常量
在程序运行期间其值始终保持不变的量
两种形式的常量:一般常量和符号常量
1,一般常量
在程序代码中直接给出的数据。例如,123,-263,
"Visual Basic", "12.57 "等
2,符号常量
符号常量是在程序中用符号表示的常量。
格式:
[Public| Private] Const 常量名 [As 数据类型 ]=表达式
例如:
Const PI=3.14159 As Single
2.2 常量与变量
变量是在程序运行期间其值可以发生变化的量
1,变量的命名规则
应遵守一些规则:
(1)
(2)只能由字母、数字和下划线组成。不能含有小数点、空
(3)字符个数不得超过 255
(4)不能使用 VB的关键字 (如语句名、函数名等 )。例如,
Print,Sub,End等
(5) 不区分变量名中字母的大小写
2.2.2 变量
变量的声明就是向程序说明要使用的变量。
有以下 2种方法 (显式声明与隐式声明 )
(1) 声明变量 (显式声明 )
用 Dim,Public,Private或 Static语句来声明变量
例如,Dim sum As Integer ′把 sum
(2)
不加说明就直接使用变量,此时默认的变量类型为变体类
型 (Variant)
也允许使用类型符来声明变量的类型,如 Num%,Sum!
2,变量的声明
五类表达式:算术表达式、字符串表达式、日期表达式、
关系表达式和逻辑表达式
2.3.1 算术表达式
算术表达式也称数值表达式,是用算术运算符把数值型常
量、变量、函数连接起来的式子
表达式的运算结果是一个数值
VB有 8种算术运算符 (表 2.2)
运算符优先级
^(乘方 ) → -(求负 ) → */ → \ → Mod →+-
同级左到右
2.3 表达式
说明:
(1)/和\的区别,1/2=0.5,1\ 2=0
(2)Mod用来求整型数除法的余数。
例如,9 Mod 7 结果为 2
(3)在表达式中乘号不能省略,如 a*b不能写
成 ab(或 a·b)
(4)括号不分大、中、小,一律采用圆括号。
可以嵌套使用
例如,x[x(x+1)+1] → x*(x*(x+1)+1)
字符串表达式是采用连接符将两个字符串常量、
字符串变量、字符串函数连接起来的式子。
连接符有两个,&和 +
其作用都是将两个字符串连接起来,运算结果是
一个字符串。
例如:
” 计算机, &,网络, 的结果是:, 计算机网络,
” 123” +,45” 的结果是:, 12345”
123 &,ABC” 的结果是:, 123ABC”
2.3.2 字符串表达式
日期表达式是用运算符 (+或 -)将算术表达式、日期型常
量、日期型变量和函数连接起来的式子。
有以下 3
(1)两个日期型数据相减,其结果是一个数值型数据 (相
差的天数 )。
例如,#8/8/2001# - #6/3/2001# 的结果为,66
(2)日期型数据加上天数,其结果为一个日期型数据。
例如,#12/1/2000#+31 的结果为, #01/01/2001#
(3)日期型数据减去天数,其结果为一个日期型数据。
例如,#12/1/2000#-32 的结果为,#10/30/2000#
2.3.3 日期表达式
内部函数是由 VB系统提供的,每个内部函数完成某个特
定的功能。在程序中使用函数称为调用函数
函数名 (参数 1,参数 2,…)
参数 (也称自变量 )放在圆括号内,若有多个参数,以逗号
函数调用后,一般都有一个确定的函数值,即返回值。
例如,y=Sqr(289)
Sqr是内部函数名,289为参数,运行时该语句调用内部
函数 Sqr来求 289的平方根,其计算结果由系统返回给变量 y
VB的内部函数大体上分为四大类:数学函数,字符串函
数,日期与时间函数和转换函数。
2.3.3 日期表达式2.4 常用内部函数
VB中备有各种计算算术函数的子程序,在程序中要使用某
(1) 三角函数的自变量单位是弧度
如 Sin47° 应写成 Sin(47*3.14159/180)。
(2) 函数 Int是求小于或等于 x的最大整数。
例如 Int(2)=2,Int(-2.5)=-3
当 x≥0时就直接舍去小数,若 x< 0则舍去小数位后再减 1
利用 Int函数可以对数据进行四舍五入。例如,对一个正数 x
舍去小数位时进行四舍五入,可采用如下式子,Int(x+0.5)
当 x=9.4时,Int(9.4 + 0.5)=9
当 x=9.5时,Int(9.5 + 0.5)=10
2.4.1 数学函数
(3)随机函数可以模拟自然界中各种随机现象,它
所产生的随机数,可以提供给各种运算或试验使用
Rnd通常与 Int函数配合使用
生成 [a,b]区间范围内的 随机整数,可以采用
Int((b-a+1)*Rnd + a)
例如 Int(4*Rnd+1)可以产生 1~ 4之间 (含 1和 4)的随机整数。
可以是 1,2,3或 4,这由 VB运行时随机给定
使用 Rnd函数之前,先用 Randomize语句来初始化
随机数生成器
编写的窗体单击事件过程代码如下:
Private Sub Form_Click()
Dim x As Integer,a As Integer
Dim b As Integer,c As Integer
x = 36
a = Int(x / 10) '求十位数
b = x Mod 10 '求个位数
c = b * 10 + a '生成新的数
Print "处理后的数, "; c
End Sub
运行程序后单击窗体,输出结果是:
处理后的数,63
例 2.1 给定一个两位正整数 (如 36),要求交换个位数和十
位数的位置,把处理后的数显示在窗体上
编写的窗体单击事件过程代码如下:
Private Sub Form_Click()
Dim a As Integer,b As Integer,c As Integer
Randomize '初始化随机数生成器
a = Int(90 * Rnd + 10) '产生 [10,99]区间内的随机整数
b = Int(90 * Rnd + 10)
c = a + b '求两数之和
Print "产生的两个随机数, "; a,b
Print "和数, "; c
End Sub
产生的两个随机数,56 71
和数,127
例 2.2 通过随机函数产生 2个两位正整数,求这 2个数
之和并显示出来
再次运行程序,单击窗体后
输出另一组结果是:
产生的两个随机数,18 37
和数,55
字符串函数用于进行字符串处理
使用字符串函数的几点说明:
(1)函数 Mid(“ABCDEG”,3,2)的结果为, CD”
若省略 n,则得到的是从 P开始的往后所有字符,如
Mid(“ABCDE”,2) 的结果为, BCDE”
(2)插入字符串语句 Mid
Mid(字符串,p[,n]) = 子字符串
用“子字符串”替换“字符串”中从 P开始的与“子字
符串”等长的一串字符。
例如,假设 S=“ABCDE“,执行语句 Mid(S,3)=“99“后,
S的值为, AB99E“
2.4.2 字符串函数
(3)在函数 Instr中,f和 k均为可选参数,f表示
开始搜索的位置 (默认值为 1),k表示比较方式,若 k
为 0(默认 ),表示区分大小写;若 k为 1,则不分大小
写。
格式,Instr(f,字符串 1,字符串 2,k)
例如 Instr(3,”A12a34A56”,”A”) 的结果为 7
Instr(3,”A12a34A56”,”A”,1) 的结果为 4
Instr(”A12a34A56”,”A”) 的结果为 1
(4)在函数 String中,字符也可以用 ASCII代码 (附
录一 )来表示
例如 String(6,42) 与 String(6,”*”)作用相同
先从字符串 a中找出某个指定字符 (本例为空格 ),再以此
字符为界拆分成两个字符串。编写的窗体单击过程代码如下:
Private Sub Form_Click()
Dim a As String,b As String,c As String,n As Integer
a = "Visual└┘FoxPro" '└┘表示空格
n = InStr(a,"└┘") '查找空格位置
b = Left(a,n - 1) '取左边部分
c = Mid(a,n + 1) '取右边部分
Print b '显示左边部分
Print c '显示右边部分
End Sub
Visual
FoxPro
例 2.3 使用字符串函数示例
日期 /时间函数用于进行日期和时间处理
说明:
函数 Weekday返回值 1~ 7,依次表示星期日到星
期六。
2.4.3 日期与时间函数
Private Sub Form_Click()
x = #1/1/2005#
a = x - Date
b = Weekday(x)
c = Year(Date)
d = Month(Date)
e = Hour(Time)
f = Minute(Time)
Print "现在距离 2005年元旦还有,"; a; "天 "
Print "2005年元旦是:星期 "; b-1
Print "本月份是,"; c; "年 "; d; "月 "
Print "现在是,"; e; "时 "; f; "分 "
End Sub
运行程序后单击窗体,输出结果如下:
现在距离 2005年元旦还有,1184
2005年元旦是:星期 6
本月份是,2001年 10月
现在是,16时 27分
例 2.4 使用日期 /时间函数示例 (留给学生分析 )
转换函数用于数据类型的转换
说明,Val函数将数字字符串转换为数值型数字时,会自动
将字符串中的空格去掉,并依据字符串中排列在前面的数值常
量来定值,例如:
Val("A12") 的值为 0
Val("12A12") 的值为 12
Val("1.2e2") 的值为 120
例 2.4 使用转换函数的示例 (留给学生分析 )
Private Sub Form_Click()
x = "123"
y = 123
a = Chr(Asc(x) + 5)
b = Str(Val(x) + 5)
c = Val(Str(y) + "5")
Print a,b,c
End Sub
运行程序后单击窗体,输出结果如下:
6 128 1235
2.4.4 类型转换函数
2.5.1 语句及语法
VB中的程序语句是执行具体操作的指令。
由 VB关键字、属性、表达式以及 VB可识别符号的组合
例如,下列两个语句:
Print a – 2 * b
↑ ↑
关键字 表达式
Text1.Text ═,VB程序设计,
↑ ↑ ↑ ↑
对象名 属性名 赋值号 表达式
简单的语句只有一个关键字。示例,End
2.5 程序代码编写规则
[] 方括号,可选项
{} 多项中选一项
| (竖线 )用来分隔多个选择项 (选其中之一项 )
,… 表示同类项目的重复出现
在编写程序代码时,要遵守一定的规则。不能超越其规定
来自由发挥
(1) 一行写多条语句 。冒号分隔
Sum=Sum+x, Count=Count+1
(2) 一条语句写成多行
使用续行符 (一个空格后面跟随一个下划线, _”),将长
语句分成多行。例如:
Print Text1.Text & Text2.Text & Text4.Text &└┘_
& Left(Text3.Text,3)
(3)不区分大小写字母
VB不区分应用程序代码字母的大小写
2.5.2 代码书写规则
(4) 各关键字之间,关键字和变量名、常
量名、过程名之间一定要有空格分隔
示例,Private└┘ Sub└┘ Form_Click()
(5)使用缩进
在编写程序代码时,可以使用缩进来反映代码
的逻辑结构和嵌套关系
Private Sub Form_Click()
x=4
If x<1 Then
Print "x<1"
Else
Print "x>=1"
End If
End Sub
VB支持结构化的程序设计方法
其程序结构清晰,可读性好,也易于查错和修改
结构化程序设计方法有三种基本控制结构:
顺序结构、选择结构和循环结构
具有 单入口,单出口 的特点
2.5.3 结构化程序的基本结构
(a) (b) (c)
顺序结构 选择结构 循环结构
A
B


L
E真 假
A B
E