1、1本章要点本章要点:数据类型数据类型 常量、变量常量、变量常用内部函数常用内部函数运算符与表达式运算符与表达式第第3 3章章 Visual BasicVisual Basic程序设计语言基础程序设计语言基础23.1 字符集字符集1.字符集字符集 Unicode字符集,其基本字符集包括字符集,其基本字符集包括:数字数字:09 英文字母英文字母:az,AZ 特殊字符特殊字符:空格空格 !#$%&()*+-/,.:;?_|等。等。2.关键字关键字 关键字又称为保留字关键字又称为保留字 VB自动将关键字的首字母转换为大写字母自动将关键字的首字母转换为大写字母 如:如:PrintPrint、SubSub
2、 等等33.2 数据类型数据类型数值类型数值类型字符串字符串类型:类型:String布尔布尔类型:类型:Boolean2字节字节日期日期类型:类型:Date8字节字节可变类型:可变类型:VariantByte(字节型字节型)1字节字节Integer(整型整型)2字节字节Long(长整型长整型)4字节字节Single(单精度浮点型单精度浮点型)4字节字节Double(双精度浮点型双精度浮点型)8字节字节Currency(货币型货币型)8字节字节4 整数的十进制、八进制、十六进制表示整数的十进制、八进制、十六进制表示 十进制表示十进制表示:由由+-号,号,09 组成组成 八进制表示八进制表示:以以
3、&O开头,由开头,由 07组成组成 十六进制表示十六进制表示:以以&H开头,由开头,由 09,AF组成组成 例例:-325 0 -34568 +1000000&O456 -&O36&H1AC -&H38&H25 浮点数的表示浮点数的表示1.普通表示法:普通表示法:1.23 -0.054 600.2.科学计数法,由尾数及指数组成科学计数法,由尾数及指数组成:e:代表单精度代表单精度 d:代表双精度代表双精度 例例:3.234D+2 表示表示3.234 102 -28E9 表示表示-28 109 4.56E-17 表示表示4.56 10-176n 字符串型数据字符串型数据(String)由由 括起
4、来的一串符号括起来的一串符号例例:abc ABC 计算机计算机 “12.34”“3+2”“”(空串空串)n 布尔型数据布尔型数据(Boolean)用于进行逻辑判断,只有两个值用于进行逻辑判断,只有两个值:True False7n 日期型数据日期型数据(Date)用于表示日期和时间。用于表示日期和时间。格式格式:#VB接受许多种日期时间格式。例接受许多种日期时间格式。例:#3-6-93 13:20#March 27,1993 1:20am#1993-5-10#14 April 1993#12/18/1999#83.3 常量常量指一个具体的量,在程序运行期间指一个具体的量,在程序运行期间不发生变化
5、不发生变化两种形式两种形式:直接常量直接常量;符号常量符号常量 1、整型常量中,八进制常量以、整型常量中,八进制常量以&或或&O开头,十六开头,十六进制常量以进制常量以&H开头。开头。例如例如:&O235,&H3AF2、字符型常量要用、字符型常量要用“”括起来括起来3、日期型常量要用括起来、日期型常量要用括起来 9例例:Const Pi As Double=3.14159 Const Max As Integer=9 Const BirthDate As Date=#1/1/01#Const MyString As String=friend Const Leap As Boolean=Tru
6、e例例:Const Pi=3.14159 Const Max=9 Const BirthDate=#1/1/01#Const MyString=friend Const Leap =True优点:使用简单。优点:使用简单。缺点:占用空间大,速度慢,类型不明确缺点:占用空间大,速度慢,类型不明确n用户自定义符号常量用户自定义符号常量 格式格式:Const As =103.4 3.4 变量变量变量变量实质上是一实质上是一个有名称的内存单元,用来临时个有名称的内存单元,用来临时存储数据存储数据程序执行期间,变量中存储的值可以发生变化程序执行期间,变量中存储的值可以发生变化变量的三个要素:变量的三个要
7、素:1.什么是变量?什么是变量?变量名变量名变量类型变量类型变量值变量值112.变量的声明变量的声明格式格式:Dim As As 类型类型:Integer Long Single Double String String*n Boolean Date Currency Byte Variant例例:Dim Sum As Long Dim Address As String例例:Dim A1 As Variant Dim A2 Num为可变类型为可变类型 Dim Num As Integer,Total As Integer123.5 常用内部函数常用内部函数函数分类函数分类内部函数内部函数用户
8、自定义函数用户自定义函数 函数形式函数形式:函数名函数名()参数参数:常量、变量或表达式。:常量、变量或表达式。若有多个参数,参数之间若有多个参数,参数之间以逗号分隔以逗号分隔。函数值函数值:也叫:也叫“返回值返回值”函数的使用:函数的使用:函数在表达式中被调用。函数在表达式中被调用。13绝对值函数绝对值函数 Abs平方根函数平方根函数 Sqr符号函数符号函数 Sgn取整函数取整函数 Int Fix Round三角函数三角函数 Sin Cos Tan Atn指数对数函数指数对数函数 Exp Log3.5.1 数学函数数学函数例例:Fix(45.67)Int(45.67)round(2.89)I
9、nt(-2.89)Abs(-4)Sqr(Abs(-4)例例:求求sin300 Sin(a*3.14/180)45453-342143.5.2 转换类函数转换类函数Str(x):将数值转换成数值字符串将数值转换成数值字符串Val(x):将数值字符串转换成数值将数值字符串转换成数值Hex(x):把一个十进制数转换为十六进制数把一个十进制数转换为十六进制数Oct(x):把一个十进制数转换为八进制数把一个十进制数转换为八进制数Chr(x):将将ASCII码转换成对应的字符串(只含有一个字符)码转换成对应的字符串(只含有一个字符)Asc(x):将字符转换成对应的将字符转换成对应的ASCII码值码值Int
10、(x):将带小数的数值转换成将带小数的数值转换成不大于不大于该数的整数该数的整数Fix(x):取整取整Lcase(x):将大写字母转换成小写字母将大写字母转换成小写字母Ucase(x):将小写字母转换成大写字母将小写字母转换成大写字母153.5.3 字符串函数字符串函数Instr(N,String1,String2,M):从字符串从字符串1中的第中的第N个字符个字符开始找字符串开始找字符串2,若找到,则返回找到的位置;若找不到,若找到,则返回找到的位置;若找不到,则返回则返回0注意:注意:至少有两个字符串参数至少有两个字符串参数N N可以省略,若省略,表示从位置可以省略,若省略,表示从位置0
11、0开始找开始找若若N N省略,则省略,则M M也必须省略也必须省略M M1 1,查找时不区分大小写,查找时不区分大小写M=0M=0或或M M省略,查找时区分大小写省略,查找时区分大小写?instr(3,abCDEfg,CD,1)3 3?instr(abCDEfg,EF)0 0?instr(1,abCDEfg,EF,1)5 5 16instrRev(String1,String2(N,M):从从string1的尾部开始找。的尾部开始找。注意:注意:N N表示从第表示从第N N个字符开始向左查找,若找到,则返回匹配的第一个字符开始向左查找,若找到,则返回匹配的第一个字符的顺序号,找不到则返回个字符
12、的顺序号,找不到则返回0 0MM含义同上含义同上?instrrev(acDDEfg,CD,3,1)2?instrrev(abCDEfg,EF,6)0 17Left(Sting,N):取出字符左边的取出字符左边的N个字符作为一个新的字符串个字符作为一个新的字符串Right(Sting,N):取出字符右边的取出字符右边的N个字符作为一个新的字符串个字符作为一个新的字符串Mid(Sting,N1,N2):从字符串第从字符串第N1个字符开始取个字符开始取N2个字符组成一个字符组成一个新字符串个新字符串Ltrim(string):去掉字符串左边的空格去掉字符串左边的空格Rtrim(string):去掉字
13、符串右边的空格去掉字符串右边的空格Trim(string):去掉字符串左边和右边的空格去掉字符串左边和右边的空格Len(string):求字符串的长度(字符串的字符数)求字符串的长度(字符串的字符数)Space(N):产生产生N个空格组成的字符串个空格组成的字符串String(N,string):产生产生string中中N个首字符组成的字符串个首字符组成的字符串strReverse(string):产生产生string的逆序组成的字符串的逆序组成的字符串18?left(abcdefg,3)abc?mid(abcdefg,3,4)cdef?ltrim(abcdefg)abcdefg?trim(a
14、bcd )abcd?len(abc )7?len(abc)3?space(3)?string(3,abc)aaa?strReverse(abcd)dcba字符串函数示例:字符串函数示例:19例例:LTrim(ABC)结果为结果为ABCTrim(ABC)Left(ABCDE,2)Mid(ABCDE,2,3)Len(ABCDE)String(3,“A)InStr(ABCDECDE,DE)ABCABBCD5AAA 4203.5.4 日期时间类函数日期时间类函数Now():提取系统日期时间提取系统日期时间(无参数,括号可省略无参数,括号可省略)Date():提取系统日期提取系统日期(无参数,括号可省略
15、无参数,括号可省略)Time():提取系统时间提取系统时间(无参数,括号可省略无参数,括号可省略)Day(datestring):返回返回datestring中的中的“日日”Month(datestring):返回返回datestring中的中的“月月”Monthname(N/string):返回月份所对应的月份名称返回月份所对应的月份名称Year(datestring/N):返回返回datestring中的中的“年年”Weekday(datestring):返回星期代号。返回星期代号。1为星期日,为星期日,7为星期六为星期六21Weekdayname(N):返回星期代号对应的星期名称返回星期
16、代号对应的星期名称Hour(time):返回返回time中的小时数中的小时数minute(time)返回返回time中的分钟数中的分钟数second(time)返回返回time中的秒数中的秒数22?now()2011-9-12 10:12:37?date()2011-9-12?time()10:12:48?day(now()12?month(2009-9-10)9?year(2009-9-10)2009?year(400)1901?monthName(4)四月四月?monthName(4)四月四月?weekday(now()7?weekday(3)3 日日期期时时间间类类函函数数示示例例23?
17、weekday(2008-8-8)6?weekdayname(3)星期二星期二?weekdayname(weekday(now)星期六星期六?hour(now()10?minute(now()26?second(now()44?hour(time()10 241.随机函数随机函数Rnd 产生产生0,1)之间的单精度随机数。之间的单精度随机数。2.Randomize语句语句 初始化随机数发生器,格式:初始化随机数发生器,格式:Randomize3.5.5 随机函数随机函数25例:生成例:生成1,9之间的随机整数的表达式为之间的随机整数的表达式为1,9Int(9*Rnd+1)1,10)9*Rnd+
18、11,10Int(10*Rnd+1)1,11)10*Rnd+10,9Int(10*Rnd)0,10)10*Rnd0,1)Rnd生成生成a,b 范围内的随机范围内的随机整数:整数:Int(b-a+1)*Rnd+a)例:生成例:生成1,99之间的随机整数的表达式为:之间的随机整数的表达式为:Int(99*Rnd+1)26【实例实例2.5】窗体中有窗体中有1个命令按钮。程序运行时,单击个命令按钮。程序运行时,单击“背背景色景色”命令按钮,随机改变窗体颜色。命令按钮,随机改变窗体颜色。27操作步骤操作步骤(1)设计用户界面)设计用户界面在窗体中添加在窗体中添加1个命令按钮个命令按钮(2)设置各对象的属
19、性)设置各对象的属性 28对象对象属性属性属性值属性值窗体窗体(名称)(名称)CaptionfrmEx2_5变色窗体变色窗体命令按钮命令按钮(名称)(名称)CaptioncmdBkColor背景色背景色29(3)编写单击)编写单击“背景色背景色”命令按钮的代码命令按钮的代码 Private Sub cmdBkColor_Click()Dim colnum As Integer Randomize colnum=Int(16*Rnd)frmEx2_5.BackColor=QBColor(colnum)End Sub 产生产生(0,1)之内的实数之内的实数 保证与前一次的产生值无关保证与前一次的产
20、生值无关 0至至15生成生成a,b 范围内的随机范围内的随机整数:整数:Int(b-a+1)*Rnd+a)30(4)运行程序验证)运行程序验证 313.5.6 判断函数判断函数IsNumeric(var):判断表达式或变量是否数字类型判断表达式或变量是否数字类型IsEempty(var):判断表达式或变量是否被初始化判断表达式或变量是否被初始化isDate(var):判断表达式或变量是否日期类型判断表达式或变量是否日期类型323.6 运算符与表达式运算符与表达式 运算符运算符:圆括号圆括号 算术运算符(算术表达式)算术运算符(算术表达式)字符串运算符(字符串表达式)字符串运算符(字符串表达式)
21、关系运算符(关系表达式)关系运算符(关系表达式)布尔运算符(布尔表达式)布尔运算符(布尔表达式)操作数操作数:常量、变量、函数、属性常量、变量、函数、属性333.6.1 算术运算符与算术表达式算术运算符与算术表达式优先级优先级运算符运算符运算运算示例示例1乘方乘方322-取负取负-93*乘法乘法3*53/浮点除法浮点除法10/34 整数除法整数除法1035Mod取模取模10 mod 36+加法加法2+36-减法减法2-334Mod运算与整除常用来获取整数的各位数值:如运算与整除常用来获取整数的各位数值:如n=456个位:个位:a=n mod 10十位:十位:b=n10 mod 10百位:百位:
22、c=n100 mod 10Mod运算符的用途:运算符的用途:浮点除:浮点除:/例如:例如:3/2=1.5,3.4/1.7=2整数除:整数除:操作数若为小数,则四舍五入再计算,计算结操作数若为小数,则四舍五入再计算,计算结果截取整数果截取整数 例如:例如:32=1 25.636.78=3取余:取余:mod 操作数若为小数,则四舍五入再计算操作数若为小数,则四舍五入再计算351.乘方运算乘方运算 例例:102 10的平方,结果为的平方,结果为100 10(-2)10的平方的倒数,结果为的平方的倒数,结果为0.01 223 运算顺序从左到右,结果为运算顺序从左到右,结果为642.整数除法整数除法 例
23、例:104 结果为结果为2 25.686.99 先四舍五入再整除,结果为先四舍五入再整除,结果为33.取模运算取模运算 例例:10 Mod 4 结果为结果为2 25.68 Mod 6.99 先四舍五入再求余数先四舍五入再求余数,结果为结果为5 36例例:将以下表达式写成将以下表达式写成VB合法的表达式合法的表达式(xy)za-b+a(-b)a(-b)+a*(-b)(xy)z a(1/n)y/(-x)+x/(-y)37【实例实例2.1】输入被除数和除数,计算商和余数。程序运行输入被除数和除数,计算商和余数。程序运行时,在文本框中输入被除数和除数,单击时,在文本框中输入被除数和除数,单击“=”命令
24、按钮,命令按钮,计算并将结果显示在相应的标签上。计算并将结果显示在相应的标签上。38操作步骤操作步骤操作步骤操作步骤操作步骤操作步骤 (1)设计用户界面)设计用户界面(2)设置对象属性)设置对象属性添加添加1个命令按钮和个命令按钮和7个标签;个标签;选取文本框图标选取文本框图标 ,添加,添加2个文本框个文本框 39对象对象属性属性属性值属性值窗体窗体(名称)(名称)CaptionfrmEx2_1除法运算除法运算标签标签1Caption被除数被除数标签标签2Caption除数除数标签标签3Caption商商标签标签4Caption余余标签标签5Caption40对象对象属性属性属性值属性值标签标
25、签6(名称)(名称)BorderStyle CaptionlblQ1-Fixed Single(置空)(置空)标签标签7(名称)(名称)BorderStyle CaptionlblR1-Fixed Single(置空)(置空)文本框文本框1(名称)(名称)TexttxtOp1(置空)(置空)文本框文本框2(名称)(名称)TexttxtOp2(置空)(置空)命令按钮命令按钮(名称)(名称)CaptioncmdEqual41(3)编写单击)编写单击“=”命令按钮的代码命令按钮的代码 Private Sub cmdEqual_Click()Dim m As Integer Dim n As Inte
26、ger Dim q As Integer Dim r As Integer m=Val(txtOp1.Text)n=Val(txtOp2.Text)q=m n r=m Mod n lblQ.Caption=Str(q)lblR.Caption=Str(r)End Sub 只能存放整数只能存放整数 整除运算符整除运算符 求余运算符求余运算符 42(4)运行程序验证。)运行程序验证。433.6.2 字符串运算符与字符串表达式字符串运算符与字符串表达式 字符串连接运算符:字符串连接运算符:和和&注意:注意:1 1、使用、使用“&”运算符时,前后应各加一个空格。因为它还是长运算符时,前后应各加一个空格
27、。因为它还是长整型类型符。整型类型符。2 2、使用、使用“”运算符时,注意一下几点:运算符时,注意一下几点:数值数值数值数值数值数值字符串数值数值字符串数值其他字符串数值其他字符串字符串字符串字符串字符串执行相加操作执行相加操作出错出错字符串相连接操作字符串相连接操作443 3、“&”运算符两边不管是字符型还是数值型,进行连接前,运算符两边不管是字符型还是数值型,进行连接前,系统先将操作数转换成字符型。系统先将操作数转换成字符型。例:写出下列的计算结果(可在立即窗口中验证)例:写出下列的计算结果(可在立即窗口中验证)123+123123+“123”“123”+“123”123+“abc”“12
28、3”+”abc”123&123123&“123”“123”&“123”123&“abc”“123”&”abc”246246123123出错出错123abc123123123123123123123abc123abc451.关系运算符关系运算符 (小于)(小于)(大于)(大于)=(大于或等于)(大于或等于)=(等于)(等于)(不等于)(不等于)2.表达式表达式:2n 数值比较数值比较:按数值大小按数值大小n 单字符比较单字符比较:缺省情况下按字符的缺省情况下按字符的ASCIIASCII码码比较比较n 字符串比较字符串比较:从左开始逐个字符比较:从左开始逐个字符比较3.比较结果比较结果:True
29、False 例例:45 cdf 结果为结果为False for fortran 结果为结果为True3.6.3 关系运算符与关系表达式关系运算符与关系表达式463.6.4 布尔运算符与布尔表达式布尔运算符与布尔表达式1.布尔运算符布尔运算符:Not And Or2.布尔表达式布尔表达式:3.优先级优先级:NotAndOr例例:A=10:B=8:C=6。Not(A B)A B And B C B A Or B C A B Or B=CFalseTrueTrueFalse47例例:将以下条件写成将以下条件写成VB布尔表达式布尔表达式 1.m-njm+n 2.X5 3.M和和N之一为之一为5,但不能
30、同时为,但不能同时为5 4.-100k=M-N)And(J=M+N)2.(X 5.0)3.(M=5)And(N5)Or(M 5)And(N=5)4.(K -100)And(K c+d And a=5 Or Not c 0 Or d、=、=、=布尔:布尔:not、and、or 转换函数、日期时间函数转换函数、日期时间函数6.表达式表达式:算术表达式算术表达式 字符串表达式字符串表达式 关系表达式关系表达式 布尔表达式布尔表达式 52【实例实例3.1】程序运行时,单击程序运行时,单击“重置重置”命令按钮,命令按钮,产生产生3个个0,20之间的随机整数之间的随机整数A,B,C,并显示在,并显示在相应
31、的标签上,单击相应的标签上,单击“A大于等于大于等于B?”按钮和按钮和“B不不等于等于C?”按钮进行数据的比较,并将结果显示在相按钮进行数据的比较,并将结果显示在相应的标签上。应的标签上。关系运算符关系运算符53操作步骤操作步骤(1)设计用户界面)设计用户界面 54(2)编写)编写“重置重置”命令按钮的命令按钮的Click事件过程事件过程 Private Sub cmdSet_Click()Dim a As Integer,b As Integer,c As Integer a=Int(Rnd*21)b=Int(Rnd*21)c=Int(Rnd*21)lblNumA.Caption=a lbl
32、NumB.Caption=b lblNumC.Caption=c lblResult1.Caption=lblResult2.Caption=End Sub55(3)编写单)编写单“A大于等于大于等于C?”按钮的按钮的Click事件过事件过程程 Private Sub cmdCmp1_Click()Dim k As Boolean Dim a As Integer,b As Integer a=Val(lblNumA.Caption)c=Val(lblNumC.Caption)k=(a=c)lblResult1.Caption=kEnd Sub运算结果运算结果True或或False 56(4)
33、编写)编写“B不等于不等于C?”按钮的按钮的Click事件过程事件过程 Private Sub cmdcmp2_Click()Dim k As Boolean Dim a As Integer,b As Integer,c As Integer a=Val(lblNumA.Caption)b=Val(lblNumB.Caption)c=Val(lblNumC.Caption)k=b c lblResult2.Caption=kEnd Sub运算结果运算结果True或或False 57【实例实例3.2】程序运行时,在文本框中输入某一年份,程序运行时,在文本框中输入某一年份,单击单击“是闰年吗?是
34、闰年吗?”命令按钮进行判断,并将结果命令按钮进行判断,并将结果显示在相应的标签上。显示在相应的标签上。逻辑运算符逻辑运算符58操作步骤操作步骤(1)设计用户界面)设计用户界面 59(2)编写)编写“是闰年吗?是闰年吗?”按钮的按钮的Click事件过程事件过程 Private Sub cmdIsLeap_Click()Dim k As Boolean Dim y As Integer y=Val(txtYear.Text)k=y Mod 4=0 And y Mod 100 0 Or y Mod 400=0 lblResult.Caption=kEnd Sub结果结果True或或False 闰年的条件:年号能被闰年的条件:年号能被4整除,但不能被整除,但不能被100整除;整除;或能被或能被400整除整除