Visual Basic第二章.docx
《Visual Basic第二章.docx》由会员分享,可在线阅读,更多相关《Visual Basic第二章.docx(15页珍藏版)》请在冰豆网上搜索。
VisualBasic第二章
第2章VisualBasic编程基础
本章主要介绍VisualBasic的数据类型、常量、变量、运算符、表达式、函数、算法、流程图等。
2.1VB的基本数据类型
强调以下几点:
(1)参加运算的数据,通常要求其类型一致。
(2)不同的数据类型,在计算机内存中的存储方式不同。
(3)根据需要,可采用不同的数据类型,但会影响程序运行的效率。
VB的基本数据类型包括:
数值型、字符串型、日期型、逻辑型、对象型与可变型6大类。
一、数值型(Numeric)
整型
整数型长整型
字节型
日常计数法
科学计数法
数值型
单精型
日常计数法
科学计数法
实数型
双精型
货币型
1.整数型
整数型数据由0~9的数字序列组成,可以带正号或者负号。
(1)整型(Integer)
在内存中占两个字节,取值范围:
-32768~+32767。
整型数据以“%”作为后缀。
例如:
368%、-56%、3785%。
(2)长整型(Long)
在内存中占4个字节,取值范围:
-2147483648~+2147483647。
长整型数据以“&”作为后缀。
例如:
368&、-12&、1234567890&。
(3)字节型(Byte)
在内存中占1个字节,取值范围:
0~255。
字节型数据只能表示无符号整数,不能表达负数。
2.实数型
(1)单精度浮点型(Single)
以4个字节存储,最多可达7位有效数。
负数的取值范围:
-3.402823E+38~-1.401298E-45
正数的取值范围:
1.401298E-45~3.402823E+38
单精度浮点数以“!
”作为后缀(系统默认类型)。
例如:
357.4、-0.00498056
例如:
3.574E+2、-4.98056E-3
(2)双精度浮点型(Double)
以8个字节存储,最多可达15位或者16位有效数。
负数的取值范围:
-1.797693134862316E+308~-4.94065645841247E-324
正数的取值范围:
4.94065645841247E-324~1.797693134862316E+308。
双精度浮点数以“#”作为后缀。
例如:
357.4#、-0.00498056#、123456789012
例如:
3.574D+2、-4.98056D-3
(3)货币型(Currency)
以8个字节存储。
小数点右边可达4位数字,小数点左边可达15位。
取值范围:
-922337203685477.5808~922337203685477.5807
3.使用非十进制数字
(1)可以使用二进制、八进制和十六进制的形式表示数据。
(2)若要表示其他进制的数据:
二进制数前面加“&B”
八进制数前面加“&O”
十六进制数前面加“&H”
(3)系统输出时会自动把其他进制的数据转换成十进制形式。
二、字符串型(String)
字符串——由若干字符组成的字符序列。
可包括ASCII字符、汉字及其他可打印字符。
注意:
字符串通常要用双引号括起来。
例如:
"VisualBasic6.0"
"河南省郑州市中原西路41号"
双引号用Chr(34)表示;回车符用Chr(13)表示。
例如:
PrintChr(34)+Chr(13)+Chr(34)
定长字符串——64K(2^16)个字符
字符串
变长字符串——最多可含约21亿(2^31)个字符
三、逻辑型(Boolean)
在内存中占用2个字节,取值:
True(真)或False(假)。
逻辑型可与整型或者长整型相互转换。
(1)整型(长整型)数赋给逻辑型变量:
0值转换成False,非0值转换成True。
(2)逻辑型数据赋给整型(长整型)变量:
False转换为0,True转换为-1。
四、日期型(Date)
一个日期型数据存储为8个字节。
可以表示日期、时间以及日期时间。
日期范围:
公元100年1月1日~公元9999年12月31日
时间范围:
0:
00:
00~23:
59:
59
注意:
日期型数据必须用#括起来。
例如:
#5/3/00#
#2000-5-312:
30:
00PM#
May3,2000#
PrintFormat(#2/21/20015:
34:
00PM#,"ddddddttttt")
如果输入了非法日期和时间,将产生编译错误,例如:
Print#5/33/2001#
五、对象型(Object)
对象型数据可用来表示应用程序中对象。
例如:
DimobjDbAsObject
SetobjDb=OpenDatabase("c:
\Vb6\Biblio.mdb")
可以用Set语句指定一个被声明为Object的变量去引用应用程序所识别的任何实际对象。
六、可变型(Variant)
可变型数据能够表示所有系统定义类型的数据,当把它们赋予Variant型时,不必在这些数据的类型间进行转换,VisualBasic会自动完成任何必要的转换。
2.2常量与变量
一、常量
1.直接常量
直接常量——以数值或字符等形式直接出现的常量。
直接常量可以分为数值型、字符型、日期和逻辑型。
数值型常量又可以分为整型、长整型、单精度浮点型、双精度浮点型、货币型和字节型。
(VB的基本数据类型包括:
数值型、字符串型、日期型、逻辑型、对象型与可变型6大类。
注意:
没有对象型与可变型常量)
例如:
234%,234,3.14,3345.02334,345#,345.90@,
例如:
"中原工学院",#3/21/2001#,True,False
2.符号常量
符号常量——以标识符的形式出现的常量。
在VisualBasic中,符号常有两种:
内部常量和用户自定义常量。
内部常量——由系统提供的常量。
例如:
Form1.BackColor=vbRed
用户自定义常量——由用户使用Const语句声明。
用Const语句给常量分配名字、值和类型。
语法:
Const常量名[As数据类型]=表达式...
其中:
Const:
定义符号常量的关键字。
常量名:
通常用大写字母命名。
表达式:
其值是符号常量所要代表的值。
在表达式中不能使用函数。
As数据类型:
用来说明常量的数据类型。
缺省时由系统根据表达式的结果,确定最合适的数据类型。
例如:
PublicConstPI=3.1415926
ConstTodayAsDate=#02/25/2001#
说明:
(1)用Const声明的常量在程序运行过程中不能被重新赋值。
(2)在常量声明的同时赋值。
(3)声明时,可以在常量名后加上类型说明符。
例如:
ConstScore%=15
ConstPrice@=25.68
(4)在程序中引用符号常量时,通常省略类型说明符。
例如:
PrintScore,Price
二、变量
1.变量的命名规则
变量的命名规则:
(1)以字母开头的字母数字串(在中文版中可以使用汉字)。
(2)在变量名中不能出现句号、空格(尽量不使用符号),不能出现类型说明符,例如:
!
、#、@、$、%、&等。
(3)不能使用VB的关键字(保留字),如语句、函数名称、运算符等。
例如:
Let、Print、If、Const、Abs、Sub、And
(4)变量名的长度不超过255个字符。
2.变量的声明
声明变量——将变量的名称、数据类型等信息事先通知编译(解释)程序。
用Dim语句声明变量的格式:
Dim变量名[As类型][,变量名[As类型]]
例如:
DimaAsInteger,bAsInteger
Dimn1Asdouble
DimSAsString
注意,如果有如下语句:
Dima,bAsInteger
等价于:
Dima
DimbAsInteger
在声明变量a时,省略了As子句,系统默认变量为可变类型。
语句DimaAsInteger,bAsInteger可以写为:
Dima%,b%,s$
也就是说,可以把类型说明符放在变量名的尾部来标识不同类型的变量。
但是,如果要说明定长字符串,必须使用Dim语句。
例如,声明字符串变量S的长度为20:
DimSAsString*20
需要注意的是,使用Dim语句说明一个变量后,VB自动将变量初始化(将数值型变量赋初值为0,字符串型变量赋初值为空串)。
3.变量的隐式声明
隐式声明——未经声明而直接使用一个变量。
例如:
R=15.36
ScoreEnglish=89
4.变量的显式声明
使用隐式声明虽然很方便,但是如果把变量名拼错了的话,会导致一个难以查找的错误。
用户可以对系统规定,只要遇到一个未经明确声明就当成变量的名字,VB都给出错误警告。
强制显式声明变量的方法:
(1)窗体模块或者标准模块的声明段中加入语句:
OptionExplicit
(2)选择“工具”菜单中的“选项”,在“编辑器”选项卡中复选“要求变量声明”。
需要注意的是,方法
(1)的作用范围仅限于语句所在模块;方法
(2)会在任何新建的模块中自动插入OptionExplicit语句。
但是,方法
(2)对已经建立起来的模块不起作用。
2.3运算符与表达式
VB提供了5种类型的运算符:
算术运算符、字符串连接运算符、日期运算符、关系运算符和逻辑运算符。
一、算术运算符
VB提供了8种基本的算术运算符,如教材P.30表2-3所示。
算术运算符的优先顺序为:
指数运算(^)→取负(-)→乘、除(*、/)→整除(\)→取模(Mod)→加、减(+、-)
可以用括号改变优先顺序,使表达式的某些部分优先运行。
1.整除运算
整除的操作数一般为整型数,当操作数含有小数时,先四舍五入取整,然后再进行运算。
运算结果取商的整数部分,例如:
10\3'结果为3
11\3'结果为3
11.5\3'结果为4
11.5\3.6'结果为3
2.取模运算
取模运算的操作数一般也为整型数,当操作数含有小数时,先四舍五入取整,然后再进行运算。
运算结果取商的余数部分,例如:
4Mod3'结果为1
7.3Mod3'结果为1
7.3Mod3.7'结果为3
当操作数中有负数时,运算结果的符号取决于左操作数的符号。
例如:
-14Mod3'结果为-2
14Mod-3'结果为2
二、字符串连接运算符
字符串连接运算——将两个字符型表达式连接生成一个新字符串。
&——强制两个表达式作字符串连接。
+——如果两个表达式都为字符串,则将两个字符串连接;如果一个是字符串而另一个是数值型数据,则进行相加操作。
例如:
"66"&"88"'结果为"6688"
"66"+"88"'结果为"6688"
66&88'结果为"6688"
66+88'结果为154
"66"&88'结果为"6688"
"66"+88'结果为154
三、日期运算
日期型数据可以进行“+”、“-”运算:
(1)两个日期型数据相减,结果为两个日期相差的天数:
#03/15/2001#-#03/10/2001#'结果为数值型数据:
5
(2)日期型数据加数值型数据,结果为日期型数据(向后推算日期):
#03/15/2001#+10'结果为日期型数据:
#03/25/2001#
(3)日期型数据减数值型数据,结果为日期型数据(向前推算日期):
#03/15/2001#-10'结果为日期型数据:
#03/05/2001#
四、表达式的书写规则
注意几点:
(1)要在同一行书写。
例如,_EMBEDEquation.3___应写成:
(a+b)/(c+d)
(2)乘号“*”不能省略。
例如,5x应写成:
5*x
(3)只能使用圆括号,不能使用方括号和花括号。
2.4常用函数
VB有两类函数:
内部函数(标准函数)和用户定义函数。
内部函数可为:
数学函数、字符串函数、转换函数、判断函数、随机函数和其他函数。
一、数学函数
数学函数包括三角函数、平方根函数、绝对值函数以及指数和对数函数等。
其函数返回值为数值型。
1.三角函数(P.33)
VisualBasic提供了4个有关三角运算的函数,分别为:
Sin(x)、Cos(x)、Tan(x)、Atn(x)
Sin、Cos、Tan函数中x是以弧度为单位的角度。
Atn函数返回的是正切值为x的角度(以弧度为单位)。
2.平方根函数(P.33)
Sqr(x)
返回参数x的算术平方根。
x的值必须大于或者等于0。
3.绝对值函数(P.33)
Abs(x)
返回参数x的绝对值。
4.取整函数(P.33)
Int(x)--不大于取整。
Fix(x)--截断取整。
例如:
PrintInt(-8.1),Int(-8.8)
PrintFix(-8.1),Fix(-8.8)
PrintInt(8.1),Int(8.8)
PrintFix(8.1),Fix(8.8)
输出结果:
-9-9
-8-8
88
88
5.符号函数(P.33)
-1x<0
Sgn(x)=0x=0
1x>0
6.指数函数和对数函数(P.33)
Exp(x)--返回以e为底、以x为指数的值。
Log(x)--返回x的自然对数值。
二、字符串函数(P.34)
有关字符串的几点说明:
(1)在VB中,把一个汉字作为一个字符处理。
(2)不含任何字符的字符串称为空串,表示为"",其长度为0。
(3)字符的大小是指它所对应的ASCII码的大小。
(汉字按区位码)
1.删除空格函数(P.34)
Ltrim(字符串)——删除字符串左边的空白字符。
Rtrim(字符串)——删除字符串右边的空白字符。
Trim(字符串)——删除字符串左右两边的空白字符,若为Null时,返回Null。
2.取子串函数(P.34)
Left(字符串,n)——取出字符串左边n个字符。
Right(字符串,n)——取出字符串右边指定n个字符。
Mid(字符串,起始位置[,n])——取出字符串由起始位置开始的n个字符。
注意:
(1)在Left和Right函数中,如果n大于或者等于字符串长度,则取整个字符串;
(2)在Mid函数中,如果起始位置大于字符串长度,则返回空串,若缺省n,则取出从起始位置开始的所有字符。
3.测试字符串长度函数(P.35)
Len(字符串)——计算字符串的长度。
4.大小写转换函数
Ucase(字符串)——将字符串中的小写字母转换为大写字母。
Lcase(字符串)——将字符串中的大写字母转换为小写字母。
5.空格函数
Space(个数)——返回指定个数的空字符串。
6.字符重复函数
String(个数,字符)——返回指定个数的指定字符。
说明:
(1)若指定字符为ASCII码,返回其对应的字符。
(2)若指定字符为字符串,则返回字符串的首字符。
例如:
PrintString(5,65),String(5,"A"),String(5,"ASCII")
输出结果:
AAAAAAAAAAAAAAA
三、转换函数
转换函数一般用来实现不同类型数据之间的转换,包括整型、浮点型、字符串型之间以及ASCII码字符之间的转换。
1.字符与ASCII码的相互转换
Asc(字符)——将字符转换为对应的ASCII码值。
Chr(ASCII码)——将ASCII码转换成对应的字符。
例如:
PrintAsc("A"),Asc("a")
PrintChr(65),Chr(97)
输出:
6597
Aa
例如:
PrintChr(Asc("A"))
输出:
A
英文字符的返回值为0~255。
中文字符的返回值为-32768~32767。
2.数值与字符串的相互转换
Val(字符串表达式)——返回字符串表达式中所含的数值(忽略其中的非数字字符)。
Str(数值表达式)——返回数值表达式的字符串形式。
例如:
Val("34.56")'返回数值34.56
Val("3456")'去掉空格,返回数值3456
Val("34ab56")'返回数值34
Val("34.56.78")'返回数值34.56
Val("ab34.56")'返回数值0
(注意:
以上返回的数值均为Double型)
Str(34.56)'返回字符串"34.56"
四、随机函数
每次产生相同的随机数x<0
Rnd[(x)]产生的随机数与上次相同x=0
每次产生不同的随机数x>0(缺省值)
由于系统提供的“随机化种子”的初值相同,所以,每次产生的随机数序列是相同的。
为了能做到真正的“随机化”,VB提供了一个随机化语句:
RANDOMIZE[表达式]
省略“表达式”时,VB取内部Timer函数返回的时间值作为新随机数的“种子数”。
2.5VisualBasic的命名规则
我们在命名常量、变量、函数和过程时,需遵循以下规则:
(1)必须以字母开头。
对于中文版的VisualBasic可以用汉字开头或者直接用汉字作为变量名、对象名或者过程名。
(2)不能在命名中出现句点“.”、空格或者嵌入下列字符:
!
#@$%&
也不能在命名中嵌入类型声明字符,如:
Integer、Long、Single、Double、String等。
(3)变量名的长度不能超过255个字符。
控件、窗体、类和模块的名字不能超过40个字符。
(4)变量名在有效的范围内必须是惟一的。
有效范围是指引用变量在某一个过程或者某一个窗体中有效,可以使程序识别。
(5)变量名不能和关键字同名。
关键字是VisualBasic系统内部定义的词,是语言的组成部分。
包括预定义语句(比如If、While、Loop等)、函数(比如Abs、Len、String等)和操作符(比如And、Or等)。
2.6算法与N-S流程图
一、算法的概念
算法——解题的方法和步骤。
同一个问题,往往会有不同的解题方法。
为了有效地解决问题,不仅要保证算法正确,还要考虑算法的质量。
计算机科学家沃思提出一个公式:
程序=算法+数据结构
数据是计算机操作的对象,具有一定的属性(整型,实型……)和存储方法,即数据结构。
算法是对数据实施的有序操作,采用不同的数据结构会有不同的算法。
有了算法,还要根据算法,利用程序设计语言编写出程序,在计算机上调试运行,得出结果。
程序=算法+数据结构+结构化程序设计方法+计算机语言
二、算法的基本结构和N-S流程图
结构化程序设计的3种基本结构:
(1)顺序结构。
(2)选择结构(也称分支结构)。
(3)循环结构(也称重复结构)。
算法有如下几种主要的表示形式:
(1)自然语言——汉、英语等。
易懂,但冗长,有歧义性
(2)伪代码——介于自然语言与计算机语言之间的无严格规则的语言
(3)传统流程图
(4)N-S流程图
1.顺序结构
A
B
图2-1顺序结构
2.选择结构
如果条件P
真
A
假
B
图2-2选择结构
3.循环结构
循环结构可分为:
当型循环和直到型循环。
当型循环(WHILE型)——当指定的条件成立时执行循环体。
当型循环又包括:
“前测试”型和“后测试”型。
当条件P真
A
A
当条件P真
前测试当型循环后测试当型循环
图2-3当型循环
直到型循环(UNTIL型)——执行循环体直到指定的条件成立。
直到型循环同样包括:
“前测试”型和“后测试”型。
直到条件P真
A
A
直到条件P真
前测试直到型循环后测试直到型循环
图2-4直到型循环