570 likes | 808 Views
第三章 VB 语言基础. 3.1 数据类型 3.2 变量和常量 3.3 运算符和表达式 3.4 程序结构和编码规则 3.5 综合应用. 本章目录. 3.1 数据类型. 标识符 : 是为变量、常量、数据类型、过程、函数和类等定义用的名字。 VB 中命名规则如下: 以字母或汉字开头,后可跟汉字、字母、数字或下划线组成,长度小于等于 255 个字符; 不要使用 VB 中的关键字;. 3.1 数据类型. 本章目录. 1 、数值型. 1) 整数 定义:不带小数点和指数符号的数。 特点:数精确表示,但数范围有限。
E N D
第三章 VB语言基础 3.1 数据类型 3.2 变量和常量 3.3 运算符和表达式 3.4 程序结构和编码规则 3.5 综合应用 本章目录
3.1 数据类型 • 标识符:是为变量、常量、数据类型、过程、函数和类等定义用的名字。VB中命名规则如下: • 以字母或汉字开头,后可跟汉字、字母、数字或下划线组成,长度小于等于255个字符; • 不要使用VB中的关键字;
3.1 数据类型 本章目录
1、数值型 1) 整数 • 定义:不带小数点和指数符号的数。 • 特点:数精确表示,但数范围有限。 • 类型:整型Integer或%(默认) 2字节 长整型Long或& 。 4字节 • 形式:±n[&] 例: 123、123%、123& 、+123 正确的整数 123.0 、1,230 错误
2)实数:4,8字节 • 定义:带小数点或指数符号的数。 • 特点:数据不精确表示,但数范围大。 • 类型:单精度 Single或!, 双精度Double或# 。 • 形式: 尾数 [ E | D 指数 ] • 其中: E表示单精度指数符号 、D表示双精度指数符号 尾数可以整数(必须要求指数)也可以小数 例: 123.45、 123.45!、0.12345E+3、 12345E-2 都是 单精度表示的同值实数 0.12345D+3 双精度表示的
3) 货币类型(Currency) 8字节 • 是定点实数或整数,用于货币计算。符号@ * * *……* * * * . * * * * 最多15位 最多4位 1234@, 3415.453@ 4) 字节类型(Byte) • 占一字节的无符号整数 (0-255)
2、字符串型数据(String) $ • 字符型:存放字符型数据,可以包括所有西文字符和汉字。VB中有定义和可变长两种表示。 • String * n 定长 • String 可变长 • 形式: “字符串”, 例: "abc" "ABC" "计算机" "12.34" "3+2" ""(空串) • 注意:如果字符串本身包括双引号,可用连续两个双引号表示。 • 例: 要打印以下字符串: "You must study hard", he said. 在程序中需要将该字符串表示成: " ""You must study hard"" , he said. "
3、逻辑型数据(Boolean)2字节 • 逻辑型数据只有两个值: • 真(True)和假(False) • 注意: • 当把数值型数据转换为逻辑型数据时, 0 转换为False,非0值转换为True。 • 当把逻辑型数据转换为数值型数据时, False转换为0,True转换为-1。
思考: • 下列各表达式运算显示结果是什么: ?6 < 8 ?6>8 ? 5+(6<8)-2 ? 5+(6>8)-2 true false 2 3
形式: #……#一般为:月/日/年 VB接受许多种日期时间格式 例: 下面的 Date/Time 值全部有效。 #3-6-93 13:20# #March 27,1993 1:20am# #Apr-2-93# #14 April 1993# #12/18/1999# 4、日期型数据(Date) 8字节
5、变体型(Variant) 根据需要分配长度 • 代表一种可变的数据类型。用于未经定义而用的变量 • 要测定变量中所存数值类型可用VarTYpe函数检测,根据返回值来确定是何数据类型 6、对象型(Object) 4字节 • 用来表示引用应用程序中的对象 • 控件对象 • OLE对象
3.2 变量和常量 3xy ' 数字开头 y - z ' 不允许出现减号 Wang Ping ' 不允许出现空格 Dim ' VB.NET的关键字 Cos '标准函数名 表达式: s=3.14*r*r 其中:r、s是变量,3.14是常量 • 变量 :是内存中保存信息(值)的内存区域,在程序运行中其存储的值可以改变。不同数据类型变量所分配的存储空间不同 1、变量名命名规则: • 必须以字母或汉字开头,由字母、汉字、数字或下划线组成,长度小于等于255个字符 • 不能使用VB中的关键字 • VB不区分变量名的大小写,一般变量名首字母用大写,其余用小写字母表示;常量全部用大写字母表示 非法变量名 本章目录
变量的命名规则 例:下列为非法变量名的是。 A、stud.no B. st_add C. Bool* D. mass_4 E. #12disk F. 924k 下列为合法变量名的是。 A、4*Dale B、Alpha C、LOOP D、PAπ E、A(A+B) F、C23A G、dim A C E F B F
2、变量声明 (1)用Dim语句显式声明变量 Dim 变量名 [As 类型] 或 Dim 变量名类型符 例 Dim iCount As integer , sAllsum As single 等价于 Dim iCount%, sAllsum! • As部分缺省,创建的变量为变体类型 • 注意:一条Dim语句可同时定义多个变量,但每个变量应有类型说明,否则为变体型 。 • 例如:Dim m,n As Integer, x,y As Single • 则创建了变体型变量m、x,整型变量n和单精度型变量y 表示整型
也可以用常用的类型说明符来定义: • 整型 : % • 长整型 : & • 单精度: ! • 双精度: # • 货币型: @ • 字符型: $
变量类型: 类型符 变量名 类型名 • 数值型变量 • Dim count as Integer或 dim count% • Dim lng count as long或 dim lng count& • Static Dimaas single 或static dima! • publicbas double 或 public b# • 字符串型变量 • Static Dim che as string或static dim che$ • Dim aa as string*5‘表示只接收5个字符的变量(长度固定) • 日期型变量 • Dim dat as date 赋值:dat=#10/29/98# • 日期变量可进行加减运算,但不能乘除
布尔型变量(逻辑变量) • 缺省值为false(0),结果两种状态true(-1)或false(0) • 进行逻辑运算:NOT、AND、OR、XOR • 对象型变量object • 利用它访问实际对象 • 变体型变量variant • 未具体指名类型的,如:dim bb • 或未声明就引用的变量 Private Sub Form_Click() Dim aa As String * 10 aa = "abcdefghijklmnopqrst" bb = "fkfkds" Print aa, bb bb = 567 Print bb End Sub Abcdefghij fkfkds 567
变量的数据类型 八进制、十六进制数 &O334 &H9Af 八进制、十六进制数 &O334&&H9Af& 其中:2/16的含义是2个字节,或16位,即1字节=8 位, 其他类推。
数值数据类型 • 标准数据类型
(2) 隐式声明(默认) 不声明直接使用。其类型为 Variant 类型 为可变类型,易出错、浪费空间 (3) 强制显式声明 在模块的声明段中使用语句: Option Explicit 如果设置: 工具→选项→编辑器→要求变量声明,则在后续模块中自动插入 Option Explicit
例: Dim a as integer Dim a% Dim B as integer,stname as string,ab Dim B%,stname$ ,ab • 变量声明位置和作用范围 • 过程内部声明变量,只在该过程执行时存在 • 窗体模块、标准模块或类模块中声明变量,在模块中所有过程有效 • 带public关键字声明变量,该变量在整个应用程序中有效 • 带static关键字声明局部变量,过程运行结束,但值保留
常量 • 常量是在程序运行中不变的量,VB有三种常量: • 直接常量 • 字符串常量:用双引括起,例“asdfg”、”12345” • 逻辑常量:只有true 和False两个值 • 整数常量:有三种形式,如1234(十进制)、&H12A(十六进制,以&H开头)、&O123(八进制,以&O或&开头) • 长整常量:有三种形式,如:12 345 678(十进制)、&H12A&(十六进制,以&H开头,&结尾)、&O123&(八进制,以&O或&开头,以&结尾) • 单精度常量:有三种形式:如12.34 , 123! , 123.45E-5 • 双精度常量:有两种形式 如:12.34# , 123.45D-5 • 日期型常量:用一对# #括起,如:#12/27。0001# , #13:30:45# • 用户自定义常量(符号常量) 用户声明,便于程序阅读或修改 Const 符号常量名 [As 类型] = 表达式 例如: Const PI = 3.14159 • 省略 [AS 类型] ,常量的类型由表达式值的类型决定。 为使与变量名区分,一般常量名使用大写字母。 • 系统常量 系统提供许多内部常量 • 系统定义常量位于对象库中,可通过“对象浏览器”查看。 例:vbNormal vbMinimized、vbMaximized等 注意:避免在不同模块中定义常量时出现循环定义 • 例如:vbCrLf 回车/换行组合符
3.3 运算符和表达式 • 操作数 • 操作数是运算对象 • 可以是常数、变量、函数 或 表达式 • 运算符 • 表示运算方法的符号,由简单符号表示 • 表达式 • 由运算符连接操作数形成的运算字符序列 • 必须“一行”书写,必要时加括号 单对象运算称单目运算,两对象运算称双目运算
运算符及优先级 算术运算符 ^ - * \ / Mod + -高到低 字符运算符 + &同级 关系运算符 = > >= < <= <> Is Like 同级 逻辑运算符 Not And Or高到低 由高到低 3.3 运算符和表达式 • 运算符和表达式 : 结果类型 算术运算符与算术表达式 数值 字符串运算符与字符串表达式 字符串 关系运算符与关系表达式 逻辑 逻辑运算符与逻辑表达式 逻辑
1、算术运算符 • 注意:对算术运算符两边的操作数应是数值型,若是数字字符或逻辑型,则自动转换成数值类型后再运算。 • 例如: • 30-True结果是31,逻辑量True转为数值-1,False转为数值0 • False + 10 + "4"结果是14 整数相余 例:5+10 mod 10 \ 9 / 3+2 ^2 结果:10 3 4 3 1 10
1. 算术运算符与算术表达式 • 说明: (1)运算结果的数据类型由精度低的数据类型向精度高的类型转换。 (2)整除(\ )运算时,被除数先四舍五入为整数然后相除,结果为整数或长整数。 (3)Mod运算的结果是整数。 (4)在VB中用“\”表示整除,而在其他语言可能不一样,用其他的符号。 例: 25.36\7.65 10\3+2 25.36 mod 7.6 3 5 1
2、字符串运算符与字符串表达式 • 字符串运算符:& 、+ 字符串连接 • " 123 " + " 456 " 结果 " 123456 " • “ 123 ”&“ 456 ”结果 “123456 ” • “ABC”+”123”结果为”ABC123” • 123 & 456 结果为”123456” (仅VB中可用) • 区别:+两边必须是字符串,& 不一定 • 例如: • 操作 结果 操作 结果 • "ab" & 123 "ab123 " "ab"+ 12 出错 • "12" & 456 " 12456 " "12" + 456 468 • "12" & True "12True" "12" + True 11
2、字符串运算符与字符串表达式 • 例如: "abcdef" & 12345 ' 结果为 "abcdef12345 " "abcdef " + 12345 ' 出错 "123" & 456 ' 结果为" 123456 " "123" + 456 ‘结果为579 100+"100"& 100 注意: "123 " + True ' 结果为122 True转换为数值-1,False转换为数值0 200100
2、关系运算符 关系运算符是双目运算符,作用是对两个操作数进行大小比较,若关系成立,则返回True,否则返回False。操作数可以是数值型、字符型。 本章目录
关系运算符与关系表达式 • 运算规则 1) 运算符前后的两个操作数都是数值型,则大小比较 2) 操作数都是字符型,则按ASCII码值从左到右比较 3) 两个操作数的类型一般情况下最好一致 4) 关系运算符的优先级相同,运算时从左到右依次进行
关系运算符与关系表达式 关系表达式 例如: (3>1)=(4<2) 0=(4<2) 18.5<15.4 false true false
Eqv 等价 4 两个操作数相同时,结果才为真 T Eqv T T T Eqv F F 3、逻辑运算符 逻辑运算符除Not是单目运算符外,其余都是双目运算符,作用是将操作数进行逻辑运算,结果是逻辑值True或False。 true (15>23) or (6>12) true 例: (3>8) Eqv (10>20) 例:(2>3 )and (3 > 4) false
A B A And B A Or B NotA True True True True False True False False True False False True False True True False False False False True 逻辑运算符真值表 设变量X=5,下列表达式的值为True的是: A.(X>=5)And(x<=8)B. (X<=5)And(X>=8) C.(X>=5)Or(X<=8)D. (X>=5)Xor(X>=8) E. Not(x<>5) A C D E
逻辑运算符与逻辑表达式 –例 • 计算下面表达式的值: 1) (15>3) And (6>2) 结果为True 2) (7>3) Or (2>6) 结果为True 3) Not (2>6) And (6>2) 结果为True 15 or 6 15 Xor 6 15 and 6 15 9 6
日期表达式 • 日期运算符 + : - : • 日期表达式 日期-日期:#09/01/2002# - #08/01/2002# 日期+天数:#09/01/2002# + 100 日期-天数:#09/01/2002# - 100
表达式小结 1. 组成 变量、常量、函数、运算符和圆括号。 2.书写规则 (1) 运算符不能相邻。例a+ -b是错误的。 (2) 乘号不能省略。例x 乘以y 应写成:x*y。 (3) 括号必须成对出现,均使用圆括号。 (4) 表达式从左到右在同一基准上书写,无高低、大小。 3. 不同数据类型的转换 运算结果的数据类型向精度高的数据类型靠。 Integer<Long<Single<Double<Currency 4. 优先级 算术运算符>=字符运算符>关系运算符>逻辑运算
【例】用一个逻辑表达式表示满足闰年的条件 闰年的条件是: 1) 能被4整除,但不能被100整除的年份都是闰年 2) 能被400整除的年份是闰年 用Y表示一个年份,则有如下的判断条件: Y Mod 4=0 And Y Mod 100 <>0 Or Y Mod 400=0
表达式书写举例 例逻辑表达式书写,选拔优秀生的条件为:年龄(Age)小于19岁,三门课总分(Total)高于285分,其中有一门为100分,如果其表达式写为: Age<19 And Total>285 And Mark1=100 Or Mark2 =100 Or Mark3=100 有何问题?该如何修改? ( )
3.3.3 常用函数 VB函数: 内部函数和用户自定义函数 数学函数 转换函数 字符串函数 日期函数 格式输出函数 内部函数 调用函数的形式: 函数名[(参数列表)] 本章目录
函数名 含义 实例 结果 Abs(N) 取绝对值 Abs(-3.5) 3.5 Cos(N) 余弦函数 Cos(0) 1 Exp(N) en Exp(3) 20.086 Fix(N) 取整 Fix(-3.5) Fix(3.9) -3 3 Log(N) 自然对数 Log(10) 2.3 Int(N) 取小于或等于 N的最大整数 Int(-3.5) Int(3.5) -4 3 数学函数 注意:Int (x)函数是取小于x的最大整数 Fix(x)函数是取x的整数部分 本章目录
函数名 含义 实例 结果 Rnd[(N)] 产生随机数 Rnd [0,1)之间的数 Round(N) 四舍五入取整 Round(-3.5) Round(3.5) -4 4 Sin(N) 正弦函数 Sin(0) 0 Sgn(N) 符号函数 Sgn(-3.5) -1 Sqr(N) 平方根 Sqr(9) 3 Tan(N) 正切函数 Tan(0) 0 数学函数 Rnd函数返回0和1(包括0但不包括1)之间的双精度随机数. 每次运行时,要产生不同序列的随机数,先执行Randomize 语句。产生a~b的之间的随机整数:Int(Rnd *(b-a)+a)
(1) -3 ÷6+8 × INT24.7 (2)[(x+y )- z ]×80 - 5(C+D) (3)cos x(sin x+l)(4)(5) e2+2 • 写出下列数学表达式的VB表达式 a*b*c*d/e/f/g 或a*b*c*d/(e*f*g) sin(45*3.14/180)+(exp(10)+log(10))/sqr(x+y+1) ((x+y)-z)*80-5*(C+D) (-3)/6+8*Int(24.7) exp(2)+2 cos(x)*(sin(x)+1) y^2+n/m
2 例:如果x是一个正实数,下列VB表达式将对x的第位小数四舍五入。 0.1 * Int (10*(x+0.05)) 例:如果x是一个正实数,下列VB表达式将对x的第位小数四舍五入。 0.001* Int (1000*(x+0.0005)) 例:在VB中,表达式Int (9.555*100+0.5)/100的值为。 例:函数表达式Sgn(Sqr(64))的值为 4 9.56 1 Sgn是符号函数,如sgn(-45)=-1
字符串函数 本章目录
例:在VB中,表达式MID(TRIM(”ABCDE ”),3,2)的值为。 例:在VB中,语句:a=123+Mid(“123456”, 3,2 )执行后,a的值是。 哪若是:a=123&Mid(“123456”, 3,2 ),则答案是? 例:函数表达式Mid$(“Visual Basic” ,1,6)的值为 CD 157 123 34 Visual
函数名 说明 实例 Date[()] 返回系统日期 Date Day(C|N) 返回日期代号(1~31) Day("2003,05,01") Hour(C|N) 返回小时(0~24) Hour(#1:12:56PM#) Minute(C|N) 返回分钟(0~59) Minute(#1:12:56PM#) Month(C|N) 返回月份代号(1~12) Month("2003,05,01") Now 返回系统日期和时间 Now Second(C|N) 返回秒(0~59) Second(#1:12:56PM#) Time[()] 返回系统时间 Time Year(C|N) 返回年代号(1753~2078) Year(365) 日期函数 例 计算从当前日期到2007年6月30日有多少天?表达式为: DateDiff("d", Now, #6/30/2007#)
函数名 功能 实例 结果 Asc(C) 字符转换成ASCII码值 Asc("A") 65 CDate 转换成日期型 CDate("2003/11/13") 2003-11-13 Chr(N) ASCII码值转换成字符 Chr$(65) "A" Hex(N) 十进制转换成十六进制 Hex(100) 64 Lcase$(C) 大写字母转为小写字母 Lcase$("ABC") "abc" Oct (N) 十进制转换成八进制 Oct$(100) "144" Str(N) 数值转换为字符串 Str$(123.45) "123.45" Ucase(C) 小写字母转为大写字母 Ucase$("abc") "ABC" Val(C) 数字字符串转换为数值 Val("123AB") 123 转换函数
说明 1.Chr和ASC函数互为反函数,即Chr(Asc(C))、Asc(Chr(N)的结果都是C或N(原来自变量的值)。 • 如表达式Chr(Asc(7))7 Chr(Asc(122))1 Asc(Chr(122) 122 2、Str函数将非负数值转换成字符型值后,会在转换后的字符串左边增加空格即数值的符号位。如: str(124)”□124”非”124” 3.Val将数字字符串转换为数值,当字符串中出现数值类型规定的数字字符以外的字符时,则停止转换,函数所返回的是停止转换前的结果。 如:Val(“-123.43cy”-123.43 876554 例:A$="87654321" 求:Val(left$(A$,4)+Mid$(A$,4,2)) 例: 123+2 mod l0\7+Asc("A") 188 本章目录