导图社区 Visual Basic 程序设计单元3VB语言基础
在程序设计中,不同类型的数据可以以常量的形式出现,也可以以变量的形式出现。常量是指在程序运行过程中其值保持不变的量,变量是指在程序运行过程中其值可以变化的量。
编辑于2022-03-20 16:46:47Visual Basic 程序设计:单元3VB语言基础
3.1数据类型
在高级语言中,广泛使用“数据类型”这一概念,数据类型体现了数据结构的特点。 不同类型的数据,所占的存储空间不一样,选择使用合适的数据类型,可以优化代码。另外,数据类型不同,对其处理的方法也不同,这就需要进行数据类型的说明或定义。只有相同(相容)类型的数据之间才能进行操作,否则就会出现错误。
3.1.1 字符型数据
字符型数据是用来存储文字信息的,内容可以是单个字符、词或一段文字等,也常称为字符串。VB中,对该类数据赋值时要用双引号将值括起来。
1. 变长字符串 变长字符串是指字符串的长度是可变的,随着对该数据的修改或重新赋值,它的长度可增可减。例如: "Visual Basic 6.0" "2+3="
2. 定长字符串 定长字符串是指它在程序执行过程中,始终保持其长度不变的字符串。可用语法“String * Size”表示,例如,声明一个长度为8个字符的字符串变量x: Dim x As String * 8
3.1.2 数值型数据
1. 整型数 整型数(Integer)是不带小数点和指数符号的数,可以是正整数、负整数或0。整型数的范围为-32768~+32767。例如: 8765 34567 –123 0 –25
2. 长整型数 长整型数(Long)也是一个整数,它表示的范围更大,长整型数范围为-2147483648~+2147483647。例如: 32768 –123456 89 987654321
3. 单精度数 单精度数(Single)用来表示带有小数部分的实数,可表示最多7位有效数字的数,小数点可以位于这些数字的任何位置,正豪可以省略。单精度数可以用定点形式和浮点形式来表示,例如: –2.3 123.4 +1.234 .0000567 单精度数的浮点形式是用科学计数法,即以10的整数次幂表示的数,以“E”来表示底数10。例如:-1.2×10的8次方、123.4×10的负12次方... –1.2E8 123.4E–12 34.56E+28 .00098765E–20
4. 双精度数 双精度数(Double)与单精度数相似,但所占的存储空间更大,取值范围更宽,可表示15位有效数字,双精度数也有定点和浮点两种形式。例如: 双精度数的定点形式是在该范围内含有小数的数。 –12.123456789123 0.987654321 100000000.1234 双精度数的浮点形式是用科学计数法,以“D”来代表指数的底的数,例如: –1.234567D92 123.123456789D–45 0.123456789D+5
3.1.3 布尔型数据
布尔型数据(Boolean)用于进行逻辑判断,其结果是一个逻辑值,用于表示两个值的状态,如逻辑的真与假,电灯的开与关,选择题答案的对与错,性别的男与女。
布尔型数据只有True(真)和False(假)两个值。 当把数值型数据转换为Boolean型数据时,0会转换为False,其他非0值转换为True。
当把Boolean值转换为数值型数据时,False转换为0,True转换成-1。
3.1.4 日期型数据
日期型数据(Date)用来表示日期和时间,可以表示多种格式的日期和时间,表示的日期范围从公元100年1月1日~9999年12月31日,而时间可以从0:00:00~23:59:59。
Date型数据用两个“#”符号把表示日期和时间的值括起来,就像字符串数据用双引号括起来一样。例如: #07/30/2007# #2007–07–30# #07/30/2007 07:25:12 AM#
3.1.5 变体型数据
变体型数据(Variant)是一种可变的数据类型,可以存放任何类型的数据,因此变体型可说是VB中用途最广、最灵活的一种变量类型。
在程序中不特别说明时,VB会自动将该变量默认为Variant型变量。例如: a = "6" ' a的值为字符型数据“6” a = 6 – 2 ' a的值为数值型数据4 a = "D" & a ' a的值为字符型数据“D4”
3.2常量和变量
在程序设计中,不同类型的数据可以以常量的形式出现,也可以以变量的形式出现。常量是指在程序运行过程中其值保持不变的量,变量是指在程序运行过程中其值可以变化的量。
3.2.1 常量
1. 直接常量 直接常量是在程序中直接使用的常量值。 (1) 字符串常量 字符串常量是用双引号括起来的一串字符。例如: "$3,123.123" "3859987" "Visual" (2) 数值常量 数值常量有整数、长整数、单精度数、双精度数。例如: 123 987654321 3.1415926 (3) 布尔常量 布尔常量只有True(真)和False(假)两个值。 (4) 日期常量 用“#”把表示日期和时间的值括起来表示日期常量。例如: #07/30/2007# #30/07/2007#
2. 符号常量 在程序设计中,如果多次出现的某个常量值是一个很大的数字或很长的字符串,为了改进代码的可读性和可维护性,可以给某一特定的值赋予一个名字,以后用到这个常量时就用名字代替,这个名字就是符号常量。 (1) 系统提供的常量 系统提供的常量是指VB内置的一些便于记忆的常量。 (2) 用户声明的常量 声明常量的语法格式为: Const〈常量名〉[As〈数据类型〉] =〈表达式〉
例如
定义过程级常量abc,整型数,值为500
Const abc As Integer=500
定义过程级常量aa,单精度型,值为120.65
Const aa As Single=120.65
定义模块级日期型常量date1,时间是2000年12月1日
Private Const date1 As Date=#2000/12/1#
定义过程级字符串常量str1,值为:“abcdef123”
Const str1 As String="abcdef123"
用助记符和助记词两种方式定义全局双精度常量bc,值为2000
Public Const bc As Double=2000
Public Const bc#=2000
用助记符和助记词两种方式定义模块级长整型常量con1,值为200
Private Const con1 As long=200
Private Con1&=200
声明货币型常量A并赋值5.5
Const A As Currency=5.5
声明一个日期型常量A并赋值2011年9月20日
Const A As Date=#2011/9/20#
3.2.2 变量
变量的命名规则: (1) 只能由字母、数字或下划线组成,如int.sum是非法的(因其中有小数点)。 (2) 必须以字母开头。如xm、ab2,不能为2ab。 (3) 组成变量名的字符数不得超过255个。 (4) 不能用VB的保留字作变量名,但可以把保留字嵌入变量名中;同时,变量名也不能是末尾带有类型说明符的保留字。如Print和Print$是非法的变量名。
声明变量的语法格式为: Dim 〈变量名〉[As〈类型〉]
例如
定义一过程级动态变量A,类型为单精度
Dim A As Single
声明全局变量A为长度是5个字符的定长字符串
Public A As String*5
声明一个模块级布尔型变量A并赋值真
Private A As Boolean
A=Ture
声明一个模块级变量A,双精度型
Private A As Double
3.3VB的表达式
3.3.1 算术表达式
算术表达式的格式为: 〈数值1〉〈算术运算符1〉〈数值2〉[〈算术运算符2〉〈数值3〉]
3.3.2 字符串表达式
1. 字符串运算符 字符串表达式由字符串常量、字符串变量、字符串函数和字符串运算符组成。 〈字符串1〉&〈字符串2〉[&〈字符串3〉] 例如: "12AB" & "3C" & "4DE" ' 连接后结果为"12AB3C4DE“ 另外,还可以用“+”把两个字符串连接成一个字符串。但是“+”容易与算术加法运算符产生混淆,所以建议最好用“&”号。
3.3.3 日期表达式
日期型表达式的3种运算 (1) 两个日期型数据相减,结果是一个数值型数据(两个日期相差的天数)。例如: #07/20/2008# – #07/10/2008# (2) 一个表示天数的数值型数据加到日期型数据中,结果仍然为一日期型数据(向后推算日期)。例如: #07/20/2008# + 10 (3) 表示天数的数值型数据从日期型数据中减掉它,结果仍然为一日期型数据(向前推算日期)。例如: #07/20/2008# – 10
3.4常用内部函数
3.4.1 数学运算函数
1、Int函数:返回不大于给定数的最大整数。
Int()函数,是将一个要取整的实数(可以为数学表达式)向下取整为最接近的整数。利用Int函数可以返回一个小数的整数,如4.323,返回4,它不是四舍五入,而是舍尾法,即使4.987,也是返回4,而不是5
举例A:写出函数的值
Int(3.2+5.1)=
8
Int(9.9)=
9
Int(-9.9)=
-10
Int(-0.5)=
-1
Int(5.3+0.5)=
5
举例B
Int(rnd*10)
0-9之间的随机整数
Int(rnd*10)+10
10-19之间的随机整数
Int(rnd*10+1)+10
11-20之间的随机整数
Rnd取值范围
0-1之间的随机数,0<=rnd<1
随堂测试
1、表达式Int(Rnd*71)+10产生的随机整数范围是
[10 80]
2、能够产生一个[10 99]之间随机正整数的表达式是
Int(Rnd()*90)+10
3、Int(-3.14159)=
-4
4、Int(Abs(99-100)/2)=
0
2、Sqr函数:返回数的平方根。
Spr(64)=
8
Sqr((-2)^2)=
2
3、Abs函数:返回数的绝对值。
4、Exp函数:返回e的指定次幂。
Sin(x):求弧度x正弦值
1、数学式子sin25°写成VB表达式是( ) A)Sin25 B)Sin(25) C)Sin(25°) D)Sin(25*3.14/180)
D
Cos(x):求弧度x余弦值
Sgn(x):返回一个整型变量,指出参数的正负号。
语法Sgn(number), number 参数是任何有效的数值表达式。
返回值如果 number 大于0,则Sgn 返回1;等于0,返回0;小于0,则返回-1。
x>0,sgn(x)=1 x=0,sgn(x)= 0 x<0,sgn(x)=-1
举例
Sgn(-100)=
-1
Sgn(0)=
0
Sgn(12)=
1
Sgn(-3.5)-2.5
-3.5
3.4.2 字符串函数
5、Str函数:返回把数值型数据转换为字符型后的字符串。
6、Val函数:把一个数字字符串转换为相应的数值。
7、Mid函数:返回从字符串指定位置开始的指定数目字符。
8、Len函数:返回字符串的长度。
9、Left函数:返回从字符串左边开始的指定数目的字符。
1、设a="Visual Basic",下面语句中可使b="Basic"的是( )。 b=Left(a,8) B)b=Mid(a,8,5) C)b=Right(a,8) D)b=Left(a,8,5)
B
10、Right函数:返回从字符串右端开始的指定数目的字符。
11、String函数:返回包含一个字符重复指定次数的字符串。
12、Lcase函数:返回以小写字母组成的字符串。
13、Ucase函数:返回以大写字母组成的字符串。
3.4.3 日期和时间函数
Date函数:返回当前日期(yy–mm–dd)。 Time函数:返回当前时间(hh:mm:ss)。 Year函数:返回年份(yyyy)。 Hour函数:返回小时(0~23)。 Timer函数:返回从午夜算起已过的秒数。
3.4.4 格式输出函数
用格式输出函数Format()可以使数值、日期或字符型数据按指定的格式输出。语法格式为: Format(〈表达式〉,〈格式字符串〉) 说明: 〈格式字符串〉是一个字符串常量或变量,由专门的格式说明字符组成。这些说明字符决定了数据项〈表达式〉的显示格式和长度。 格式说明字符按照类型可以分为数值型说明符、日期型说明符和字符型说明符。
3.4.5 随机数语句和函数
随机数语句和函数有: Randomize语句:产生随机数的种子。 Rnd函数:产生0~1之间的随机数。
Rnd是一个能产生[0,1)之间的双精度随机数的函数。int(N)是一个取小于或等于N的最大整数的函数
比如:int(rnd*m+n)意为产生[n,m+n-1]之间的随机整数
应知应会练习
单元三 巩固与提高答案
一、选择题
1. 以下关于VB数据类型的说法,不恰当的是( ) A)VB 6.0提供的数据类型主要有字符串型和数值型,此外还有字节、货币、对象、日期、布尔和变体数据类型等 B)目前Decimal数据类型只能在变体类型中使用 C)用户不能定义自己的数据类型 D)布尔型数据只能取两种值,用两个字节存储
【答】C
2. 以下各项,可以作为VB变量名的是( ) A)Book B)2_Seek C)123.58 D)Book-1
【答】A
3. 下列哪个符号不能作为VB中的变量名?( ) A)ABCDEFG B)P000000 C)89TWDDFF D)xyz
【答】C
4. 下列( )是VB中的合法变量名。( ) A)AB7 B)7AB C)IF D)A[B]7
【答】A
5. 表达式2 *3^2 + 2 * 8 / 4 + 3^2的值为( ) A)64 B)31 C)49 D)22
【答】B
6. 函数Int(Rnd(0)*10)是在( )范围内的整数。 A)( 0 , 1 ) B)( 1 , 10 ) C)( 0 , 9 ) D)( 1 , 9 )
【答】C
7. 表达式3 ^ 2 Mod 14\2^3的值是( ) A)1 B)0 C)2 D)3
【答】B
8. 在VB中,下列两个变量名相同的是( ) A)Japan和Ja_pan B)English和ENGLish C)English和Engl D)China和Chin
【答】B
9. 数学式子sin25°写成VB表达式是( ) A)Sin25 B)Sin(25) C)Sin(25°) D)Sin(25*3.14/180)
【答】D
10. 在VB中,要强制用户对所用的变量进行显式声明,可以在( )设置。 A)“属性”对话框 B)“程序代码”窗口 C)“选项”对话框 D)对象浏览器
【答】C
11. 下列符号常量的声明中,不合法的是( ) A)Const a As Single = 1.1 B)Const a =″OK″ C)Const a As Double = Sin(1) D)Const a As Integer =″12″
【答】C
12. 在代码编辑器中,续行符是换行书写同一个语句的符号,用以表示续行符的是( ) A)一个空格加一个下划线“_” B)一个下划线“_” C)一个造字符“-” D)一个空格加一个连字符“-”
【答】A
二、填空题
1. 如果希望使用变量x来存放数据765 432.123 456,应将变量x声明为____类型。
【答】双精度型
2. 把VB算术表达式a/(b + c/(d + e/Sqr(f)))改写成数学表达式为____。
3. 如果x是一个正实数,对x的第3位小数四舍五入的表达式是____。
【答】0.01 * Int(100 * (x + 0.005))。
4. 函数Str$(256.36)的值是____。
【答】256.36
三、思考题
1. VB定义了哪几种数据类型?变量有哪几种数据类型?常量有哪几种数据类型?
【答】VB 6.0定义了11种数据类型,它们是整型、长整型、单精度浮点型、双精度浮点型、字符型(变长字符串、定长字符串)、逻辑型、日期型、货币型、字节型、对象型、可变类型(数值、字符)。 变量的数据类型有数值型、字符型、逻辑型、日期型、对象型、可变数据类型。其中,数值型变量的数据类型有:整型、长整型、单精度浮点型、双精度浮点型、货币型和字节类型。字符型变量的数据类型有变长字符串和定长字符串。
2. 下列数据哪些是变量?哪些是常量?是什么类型的常量? (1)name (2) "name" (3)False (4)ff (5)"11/16/99" (6)cj (7)"120" (8)n (9)#11/16/1999# (10)12.345
【答】变量有(1),(4),(6),(8)。 常量有(2),(3),(5),(7),(9),(10)。其中:(2),(5),(7)为字符型常量,(3)为逻辑型常量,(9)为日期型常量,(10)为数值型常量。
3. 在VB中,对于没有赋值的变量,系统默认值是什么?
【答】使用声明语句建立一个变量后,VB自动将数值类型的变量赋初值0,变长的字符串被初始化为一个零长度的字符串(""),而定长的字符串则用空格填充。Variant变量被初始化为Empty,逻辑型的变量则初始化为False。
【答】VB中的算术表达式与数学中的表达式写法有所区别,主要表现在:VB中每个符号占1格,所有符号都必须一个一个并排写在同一横线上,不能在右上角或右下角写方次或下标;在数学表达式中省略的内容必须重新写上;所有括号都要使用小括号“( )”,而且括号必须配对;数学表达式中的有些符号,需要改成VB中可以表示的符号。 (1)(1 + y / x) / (1 – y / x) (2)(Abs( a * b – c^3))^0.5 或 (Abs(a * b – c^3))^(1 / 2) 或 Sqr(Abs(a * b – c^3)) (3)(s * (s – a) * (s – b) * (s – c))^0.5 或 (s * (s – a) * (s – b) * (s – c) )^(1 / 2) 或 Sqr(s * (s – a) * (s – b) * (s – c))
5. 写出下列表达式的值。 (1)( 2 + 8 * 3 ) / 2 (2)3^2 + 8 (3)#11/22/99# – 10 (4)"ZYX" & 123 & "ABC"
【答】题中各表达式的值分别为: (1)13 (2)17 (3)#11/12/99# (4)"ZYX123ABC"
6. 设A = 7, B = 3, C = 4,求下列表达式的值: (1)A + 3 * C (2)A^2 / 6 (3)A / 2 * 3 / 2 (4)A Mod 3 +B^3 / C \ 5
【答】题中各表达式的值分别为: (1)19 (2)8.16666666666667 (3)5.25 (4)2
7. 写出下列表达式的值。 (1)"Visual"+"Basic" (2)"xyz" & 1234 & "ABCD"
【答】题中各表达式的值分别为: (1)"VisualBasic" (2)"xyz1234ABCD"
8. 写出下列函数的值。 (1)Int(–3.14159) (2)Sqr(Sqr(64)) (3)Int(Abs(99–100)/2) (4)Sgn(7*3+2)
【答】函数的值为: (1)– 4 (2)2.828427 (3)0 (4)1
3.5语句
3.5.1 程序语句
VB中的语句是执行具体操作的指令,每个语句行以回车〈Enter〉键结束。程序语句是VB关键字、属性、函数、运算符以及能够生成VB编辑器可识别指令的符号的任意组合。一个完整的程序语句可以简单到只有一个关键字,例如:Stop
语句也可以是各种元素的组合,例如下面的语句,把当前系统时间赋值给标签的Caption属性: Label1.Caption = Time 对象名 属性名 赋值号 VB函数
建立程序语句时必须遵从的构造规则称为语法。编写正确程序语句的前提,就是学习语言元素的语法,并在程序中使用这些元素正确地处理数据。
3.5.2 语句的书写规则
1. 自动语法检查 如果设置了“自动语法检测”(用“工具”菜单→“选项”→“编辑器”),则在输入语句的过程中,VB将自动对输入的内容进行语法检查,如果发现语法错误,将弹出一个信息框提示出错的原因。
2. 格式化处理 VB会按约定对语句进行简单的格式化处理,例如关键字、函数的第一个字母自动变为大写,运算符前后加空格等。在输入语句时,命令词、函数等可以不必区分大小写。例如,在输入Print时,不管输入Print、print,还是PRINT,按回车键后都变为Print。为了提高程序的可读性,在代码中应加上适当的空格,同时应按惯例处理字母的大小写。
3. 复合语句行 一般情况下,输入程序时要求一行一句,一句一行。但是VB也允许使用复合语句行,即把几个语句放在一个语句行中,语句之间用冒号“:”隔开。一个语句行的长度最多不能超过1023个字符。例如: a = 2 : b = 3 : c = 4
4. 语句的续行 当一条语句很长时,在代码编辑窗口阅读程序时不便查看,使用滚动条又比较麻烦。这时,就可以使用续行功能,用续行符“_”(下划线)将一个较长的语句分为多个程序行。例如: strMyStr="NAME : " & _ strname 在使用续行符时,在它前面至少要加一个空格,并且续行符只能出现在行尾。
3.5.3 命令格式中的符号约定