第 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 常量与变量
2.2.1 常量在程序运行期间其值始终保持不变的量两种形式的常量:一般常量和符号常量
1,一般常量在程序代码中直接给出的数据 。 例如,123,-263,
,VisualBasic”,,12.57,等
2,符号常量符号常量是在程序中用符号表示的常量 。 格式:
[Public| Private] Const 常量名 [As 数据类型 ]=表达式例如:
Const PI=3.14159 As Single
2.2.2 变量变量是在程序运行期间其值可以发生变化的量
1,变量的命名规则应遵守一些规则:
(1)变量名必须以字母开头;
(2)只能由字母,数字和下划线组成 。 不能含有小数点,空格等字符;
(3)字符个数不得超过 255个;
(4)不能使用 VB的关键字 (如语句名,函数名等 )。 例如,
Print,Sub,End等;
(5) 不区分变量名中字母的大小写变量的声明就是向程序说明要使用的变量有以下 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.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 x As Integer,a As Integer
Dim b As Integer,c As Integer
x = 36
a = x \ 10 '求十位数
b = x – 10 * a '求个位数
c = b * 10 + a
Print "处理后的数,"; c
End Sub
把上述程序改为以下形式,效果是否一样?
想一想通常,解决某个问题的程序方法有多种,
我们应该从中选择较优的一种方法。
编写的窗体单击事件过程代码如下:
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 使用字符串函数示例
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 = Right( ____,____ ) '取右边部分
Print b '显示左边部分
Print c '显示右边部分
End Sub
Visual
FoxPro
若用 Right函数来代替 Mid函数,应如何改动?
想一想答案,a,Len(a)-n
日期 /时间函数用于进行日期和时间处理说明:
函数 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
(6)严格按照 VB规定的格式和符号编写程序。
与其他高级语言一样,在 VB中使用的分号、引号、括号等符号都是英文状态下的半角符号,而不能使用中文状态下的全角符号。
许多程序错误都是由此而起 !!!!
例如:
If a<5 Then x=10
Print "x="; x
不能写成
If a〈 5 Then x=10
Print,x=”; x
全角符号全角符号
VB支持结构化的程序设计方法其程序结构清晰,可读性好,也易于查错和修改结构化程序设计方法有三种基本控制结构:
顺序结构、选择结构和循环结构具有 单入口,单出口 的特点
(a) (b) (c)
顺序结构 选择结构 循环结构
A
B
假真
L
E真 假
A B
E
2.5.3 结构化程序的基本结构