Visual Basic 程序设计教程
第四讲 VB语言基础(2)
本讲教学内容 3.3 运算符、函数和表达式
3.3 表达式、运算符和函数 一、表达式 1. 表达式是数据之间运算关系的表达形式,由常量、变量、函数等数据和运算符组成。 2. 单个常量或变量也可以看作是表达式。 二、运算符 1. 运算符是表示数据进行什么运算的符号。 2. 运算符可分成算术运算符、关系运算符、逻辑运算符和字符串运算符四大类。
(一)算术运算符 1. 算术运算符可以对数值型数据进行运算,运算结果为数值。 2. 算术运算符与运算优先级
3. 有关运算符的使用说明 (1) 幂运算:用来计算乘方和方根 例如:2^4, 5^2, 10^-2, 36^0.5
(2) 浮点除法与整数除法 浮点除法(/) 整数除法(\) 操作数可以是整数或小数,结果可以是整型数,也可以是浮点数。 整数除法(\) 操作数一般为整型值,如果操作数带有小数,首先将其四舍五入为整型数(即小数≤0.5整数不进1,否则进1)。操作结果为整型值。
例如:10/4 (结果为2.5) 10/2.5 (结果为4) 10\4 (结果为2) 10\2.5 (结果为5) 10\2.51 (结果为3) 26.5\9 (结果为2) 26.51\9 (结果为3)
(3) 取模运算 取模运算用来求第一个操作数整除第2个操作数所得的余数。 通常用来判断一个数是否能被另一个数整除。 例如:8 Mod 3 (结果为2) 8 Mod -3 (结果为2) -8 Mod 3 (结果为-2) -8 Mod -3 (结果为-2)
(二) 字符串运算符 1. 字符串运算符有“&”和“+”两个运算符。 2. 用来连接两个或更多个字符串。 3. 其运算结果是字符型的。 4. “+”连接符其操作数必须是字符型的;否则可能会进行算术加法或出错。 5. “&”连接符在运算中会忽略操作数的类型,而强行将两个操作数的值进行连接。
例如:10+5 (结果为15,是数值型) “10”+5 (结果为15 ,是数值型) 10+“5” (结果为15 ,是数值型) “10”+“5”(结果为105,是字符型) “a”+”5” (结果为a5) “a”+5 (结果出错) 10 & 5 (结果为105) “10” & 5 (结果为105) 10 & “5” (结果为105) “10” & “5” (结果为105) “a”&“5”与“a”& 5 (结果都是a5)
(三) 关系运算符 1. 关系运算符也称比较运算符,用来对两个相同类型的表达式进行比较。 2. 其结果是一个逻辑值,即真(True)或假(False);VB一般用“-1”表示True,”0”表示False。 3. 进行比较的数据可以是数值型、字符型或日期型。
4. 常用关系运算符 运算符 含义 示例 结果 = 等于 “abc”=“aBc” False <> 不等于 123< >156 True > 大于 “ABc”>”ABC” < 小于 34<12 >= 大于等于 12>=12 <= 小于等于 “ABCD”<=“ABC” Like 字符串匹配 “abcdefg” Like “??cd*”
5. 关系运算规则 数值型数据按其值大小进行比较; 日期型数据将日期看成“yyyymmdd”的8位整数,按数值大小进行比较; 单个字符按ASCII码值进行比较; 字符串比较是从左至右逐一字符进行比较。
(四) 逻辑运算符 1. 参加逻辑运算的对象必须是逻辑对象。 2. 其运算结果为逻辑型,即True或False。 3. 逻辑运算符及运算优先级如下表所示。
运算符 运算 示例 结果 Not 非 Not (8>4) False And 与 (4<8) And (7>3) True Or 或 (4<8) Or (4>5) Xor 异或 (4<8) Xor (7>3) Eqv 等价 Imp 蕴含 (2<7) Imp (3>5)
5. 用逻辑运算符连接两个或多个关系表达式,构成逻辑表达式。 4. 各种逻辑运算符说明 5. 用逻辑运算符连接两个或多个关系表达式,构成逻辑表达式。 P Q Not P P And Q P Or Q P Xor Q P Eqv Q P Imp Q T F
(五) 日期运算符 1. 日期型数据只有加(+)和减(-)两个运算符。 2. 两个日期型数据相减,结果是一个整型数据,即两个日期相差的天数。 例如:#12/20/2002# -#12/10/2002# (结果为10) 3. 日期型数据加上(或减去)一个整型数据,结果仍为一个日期数据。 例如:#12/10/2002#+10 (结果为2002-12-20) #12/10/2002#-5 (结果为2002-12-5)
=、>、<、>=、<=、< >、Like、Is (六) 运算符的优先级 名称 运算符 优先级 算术运算符 ^ - *、/ \ Mod +、- 高 字符运算符 +、& 关系运算符 =、>、<、>=、<=、< >、Like、Is 逻辑运算符 Not And Or Xor Eqv Imp 低
三、 VB的函数 函数是用来实现数据处理过程中的特定的运算与操作。 函数可分为内部函数和用户自定义函数。 自变量称为参数,不同的函数其自变量都有其规定的数据类型。 函数一般都有一个返回值,也有相应的数据类型。
(一) 数学函数 (常用数学函数如下表所示) 函数形式 函数名称及含义 Abs(x) 绝对值函数 Cos(x) 余弦函数 Exp(x) (常用数学函数如下表所示) 函数形式 函数名称及含义 Abs(x) 绝对值函数 Cos(x) 余弦函数 Exp(x) 指数函数,即ex Log(x) 以e为底对数函数,即logeX Rnd(x) 随机函数,产生[0,1)内的一个数 Sin(x) 正弦函数 Sgn(x) 符号函数 Sqr(x) 平方根函数 Tan(x) 正切函数
常用数学函数的使用说明: 1. Sin(x)和Cos(x)函数 2. Abs(x)函数 功能:返回x的正弦值或余弦值。
3. Sgn(x)函数 4. Sqr(x)函数 5. Exp(x)函数 功能:返回x的符号。 说明:x<0返回-1; x=0返回0; x>0返回1; 4. Sqr(x)函数 功能:求x的平方根(即x开方)。 说明:x>=0 5. Exp(x)函数 功能:求ex的值。
(二) 字符串函数 字符串函数的格式及基本功能如下列表格所示。
返回数值的字符串函数 函数形式 函数名称及含义 Len(X) 字符串长度函数 LenB(X) 字符串字节数函数 InStr(N,X1,X2,[M]) 匹配位置函数 StrComp(X1,X2,[M]) 字符串比较函数
返回字符串的字符串函数 函数形式 函数名称及含义 Left$(X,N) 左取字符串函数 Mid$(X,N,M) 中取字符串函数 Right$(X,N) 右取字符串函数 Ltrim$(X) 去左空格函数 Trim$(X) 去前后空格函数 Rtrim$(X) 去右空格函数 Space$(X) 空格填充函数 String$(N,X) 字符填充函数
新增的字符串函数 函数形式 函数名称及含义 InStrRev(X1,X2,N,M) 匹配位置反查函数 Join(A,X) 合并数组为串函数 Replice$(X,X1,X2) 字符串替换函数 Split$(X1,X2) 分隔串为数组函数 StrReverse$(X) 字符串反序函数
2. 举例说明 Print Len(“abc一二三”) 6 Print LenB(“abc一二三”) 12 Print InStr(1, "abcdefg", "de") 4 Print StrComp("abcdf", "abcde") 1
Print Left("abcdefg", 3) abc Print Mid("abcdefg", 3, 2) cd Print Right("abcdefg", 5) cdefg Print "|" & LTrim(" abcd ") & "|" |abcd | Print "|" & Trim(" abcd ") & "|" |abcd|
Print "|" & RTrim(" abcd ") & "|" | abcd| Print "|" & Space(6) & "|" | | Print String(4, "#") #### Print InStrRev("abcdefg", "de") 4
a = Array("abc", "12", "3") Print Join(a, "@") abc@12@3 Print Replace("abcdefg", "c", "C") abCdefg s = Split("ab,cd,efg", ",") Print s(0), s(1), s(2) ab cd efg Print StrReverse("abcdefg") gfedcba
(三) 数据类型转换函数 函数形式 函数名称及含义 Asc(C) 取ASCII值函数 Val(C) 字符串转换函数 Fix(N) (三) 数据类型转换函数 函数形式 函数名称及含义 Asc(C) 取ASCII值函数 Val(C) 字符串转换函数 Fix(N) 截尾取整函数 Hex$(N) 转十六进制函数 Int(N) 返回不大于N的最大整数 Oct(N) 转八进制函数 Chr$(N) ASCII码值转字符串函数 Lcase(C) 大写转小写函数 Ucase(C) 小写转大写函数 Str(N) 数值转字符串函数
Print Asc("A") 65 例如: Print Chr(99) b Print Val(“123.4567”) 123.4567(数值型) Print Str(123.456) 123.456(字符型) Print Fix(4.657), Fix(-3.2) 4 -3
Print Int(4.657), Int(-3.2) 4 -4 Print Hex(100) 64(十六进制数) Print Oct(100) 144(八进制数) Print LCase("AbCdEfG") abcdefg Print UCase("AbCdEfG") ABCDEFG
(四) 日期和时间函数 函数形式 函数名称及含义 Date( ) 取系统日期函数 DateSerial(Y,M,D) 日期设置函数 DateValue(C) DateAdd(G,N,T) 增减日期函数 DateDiff(G,T1,T2) 间隔日期函数 Day(C) 取日期函数 Month(C) 取月份函数 Year(C) 取年份函数 Now 返回系统日期时间函数 Time( ) 取系统当前时间函数 WeekDay(C) 返回星期代号函数
例如 Print Date 2005-10-9 Print DateSerial(90, 12, 30) 1990-12-30 Print DateValue("06,18,2005") 2005-06-18 Print DateAdd("ww", 2, #5/11/2022#) 2022-05-25 Print DateDiff("M", #11/20/2005#, #5/11/2006#) 6
例如 Print Day(Date) 9 Print Month(Date) 10 Print Year(Date) 2005 Print Now 2005-10-9 15:42:37 Print Time 15:42:37 Print Weekday(Date) 1
(五) 随机函数与随机数语句 1. 随机函数 (1) 格式:Rnd([x]) (2) 功能:产生一个0-1之间的single类型的随机数。 (3) 产生指定区间的随机数的方法为: (0,x)区间的随机浮点数:Rnd*x (m,n)区间的随机浮点数:m+Rnd*(n-m) [i,j]区间的随机整数:Int(i+Rnd*(j-i+1))
例:如果需要产生0-10之间的随机整数,可用:Int(Rnd*10) 如果需要产生两位随机整数,可用: Int(10+Rnd*90) 如果需要产生三位随机整数,可用: Int(100+Rnd*900) 如果需要产生50-80随机整数,可用: Int(50+Rnd*31)
2. 随机数语句 格式:Randomize[expN1] 功能:根据一套算法产生随机数。 说明: 当一个应用程序不断重复使用随机函数Rnd,同一序列的随机数可能会反复出现,用该语句可以消除这种情况。 expN1是一个整型数。 若省略参数,则用系统时钟返回的值作为参数。