Visual Basic程序设计基础 教师:夏学梅 电话:135 1811 1706 邮箱:herpburn@qq.com
第二章 Visual Basic语言基础知识 2.1 数据类型 2.2 常量和变量 2.3 运算符与表达式 2.4 常用内部函数 本章 主要学习构成VB应用程序的基本元素: 2018/12/7
2.1 数据类型 基本 数据 类型 字符串 货币 数值 字节 布尔 日期 变体 对象 数据是程序的必要组成部分,也是程序处理的对象。为了对数据进行快速处理和有效地分配存储空间,VB把数据分为各种不同的数据类型。 包括:系统定义的基本数据类型和用户自定义数据类型。 2018/12/7
2.1 数据类型 字符串型 关键字:String,类型说明符:$ 存放字符型数据,字符型数据包括所有的英文、汉字和数字等 字符串放在双引号(“ ”)内,其中长度为0(即不包含任何字符)的字符串为空串(空串不等于空格串) 变长字符串和定长字符串(最长不超过65535个字符) "欢迎使用Visual Basic" 、"abcde123"、"12345" 变长字符串长度不固定,而定长是字符个数确定的。 2018/12/7
2.1 数据类型 数值型 整型数:存放整数,取值范围:-32767—32767 浮点数:存放带小数的数,浮点数可以用科学计数法来表示,所以小数点可以出现在任意位置。 整型 Integer % 占2个字节 长整型 Long & 占4个字节 ,123.45=0.12345E+3 数值型数据又分为整型数和浮点数两类。其中整型数可分为整数和长整数,浮点数可分为单精度浮点数和双精度浮点数。 (1)整型数 整型数是指不带小数点和指数符号的数。在计算机内部,它以二进制补码的形式来表示和参加运算。整数(Integer)的存储长度为2个字节(16位),数的表示范围是-32,768到+32,767。长整数(Long)为4个字节(32位)存储长度,范围为-2,147,483,648到+2,147,483,647。 (2)浮点数 浮点数由三部分组成:符号、指数以及尾数。指数分别用"E"表示单精度和"D"表示双精度。浮点数的符号均占一位。 单精度浮点数(Single)以4个字节存储(32位)。指数部分除了符号占一位外,数值占7位;尾数部分除了符号占一位外,数值占23位。单精度数可以精确到7位十进制数。 单精度负数的范围为:-3.402,823E+38到-1.401,298E-45。 单精度正数的范围为:+1.401,298E-45到+3.402,823E+38。 双精度浮点数(Double)以8个字节存储(64位)。指数部分除了符号占一位外,数值占11位;尾数部分除了符号占一位外,数值占51位。双精度数可以精确到15位或16位十进制数。 双精度负数的范围为: -1.797,693,134,862,315D+308到-4.940,656,458,412,465D-324 双精度正数的范围为: +4.940,656,458,412,465D-324到+1.797,693,134,862,315D+308 单精度型 Single ! 占4个字节 123.45 123.45! 0.12345E+3 双精度型 Double # 占8个字节 123.45# 0.12345D+3 2018/12/7
2.1 数据类型 变体型 布尔型 日期型 关键字:Variant 一种类型可变的数据类型,可以表示任何类型数据 关键字:Boolean 取值为:True或False 日期型 关键字:Date 以8个字节浮点数形式存储 日期文字必须以一对符号(#)括起来 如:#9/10/2001 12:30:00 货币型是定点数据型。注意货币型不是浮点型 3. 货币型(Currency) 货币数据类型是为表示货币金额而设置的。该类型数据以8个字节存储(64位),精确到小数点后4位,小数点前有15位。与浮点数中的小数点是“浮动”的不同,货币类型数据的小数点是固定的,因此称为定点数据类型。其取值范围为: -922,337,203,685,477.580,8到+922,337,203,685,477,580,7 4. 变体型(Variant) 变体数据类型是一种类型可变的数据类型,它可以表示任何类型的数据。变体数据类型在不同的场合代表不同的数据类型,在没有说明数据类型时,则系统视为变体数据类型。 6. 布尔型(Boolean) 布尔型数据是一个逻辑值,用2个字节存储。它只有两种取值,即True(真)或False(假),默认值为False。 2018/12/7
例子 Dim TestDate As Date 为变量TestDate正确赋值的表达方式是( ) (A) TextDate=#1/1/2002# (B) TestDate=#“1/1/2002”# (C) TextDate=date(“1/1/2002”) (D) TestDate=Format(“m/d/yy”,“1/1/2002”) A 2018/12/7
Visual Basic基本数据类型-简表 数据结构 关键字 类型符 占字节数 举例 字节型 Byte 无 1 0~255 整型 Integer % 2 -32768~32767 长整型 Long & 4 -2147483648~2147483647 单精度型 Single ! -3.4E19 1.4E-10 双精度型 Double # 8 1.75686267D36 货币型 Currency @ $12.345 日期型 Date(Time) #03/25/1999# 逻辑型 Boolean True False 字符型 String $ 字符串 "abcdef" 对象型 Object Command 变体型 Variant 按需分配 任一值 VarType()检测 2018/12/7
变长/定长字符串 Dim a as String Dim a As String * 6 2018/12/7
2.1 数据类型 2表示的类型是? 1.2表示的类型是? 2%表示2以整型数据存储 5&表示5为长整型数据存储 3.6e+5表示数学中的3.6×105,7.45E-6表示7.45×10-6 是不带小数点的数据,和数学中整数的含义类似,只是整型数据取值范围在-32768~32767之间,存放在计算机中用2个字节(即16位)来表示。类型符为%,即在数据尾加上%就表示此数据为整型数据。 和整型数据类似,都表示整数,但所能表示的数据范围比整型大,取值范围为-2147483648~2147483647,长整型数据在计算机中用4个字节表示。类型符为&。 55.87d+5表示数学中的55.87×105,7.45D-6表示7.45×10-6 23.5@表示23.5以货币型数据存储 2018/12/7
变体型 dim a As Variant '定义a为变体型数据 a=123 'a为整形数据 a=“visual basic”‘a为字符型数据 说明: (1) 不同类型的数据,所占的存储空间不一样。 (2) 数据的类型可在数据之后加上一个类型符来表示,例如,413&,86!,104.67#等。 变体型数据可以表示任何一种数据类型,其大小由所赋予的数据类型决定。 2018/12/7
第二章 Visual Basic语言基础知识 2.1 数据类型 2.2 变量和常量 2.3 运算符与表达式 2.4 常用内部函数 2018/12/7
常量 什么是常量? 1 文字常量 2 符号常量 3 系统常量 (1)字符串常量 代替数值 或字符串 (2)数值常量 当程序运行时,存储单元中内容保持不变的称为常量。 1 文字常量 2 符号常量 3 系统常量 (1)字符串常量 代替数值 或字符串 vbCrLf (2)数值常量 直接常量是在程序中直接给出的数值、字符、日期等具体的数据值。按照数据类型分类,可以将直接常量分为以下几类: 系统预定义的常量(如:回车-换行符),可在“对象浏览器”中查看 Const PI = 3.14 2018/12/7
文字常量 (1)字符串常量 (2)数值常量 “China” “95.3%“ ”计算机软件” 整型/ 长整型 八进制数 &123或&0123 十进制数 123 十六进制数 &H123 货币型 定点数 浮点型 实数 3.89E-3 9.39D7 字符串常量由字符组成,可以是除双引号和回车符之外的任何ASCII字符。 数值常量: 整型(2个字节。16位): 十进制整数:0——9组成,取值范围-32768——32767 八进制:0——7组成,前面以&或&O开头 十六进制:0——9和A——F组成,前面以&H开头。 浮点数由尾数、指数符号和指数3部分组成 浮点数表示: E(或D)字母前必须有数值 E(或D)字母后必须为整数 2018/12/7
Const 常量名称 = 表达式[,常量名称=表达式] 如:Const PI&=3.14 Const ONE%=250 符号常量 定义符号常量代替数值或字符串。一般格式: Const 常量名称 = 表达式[,常量名称=表达式] 注意: 符号常量一般定义为大写字母,声明后可以在常量名称后面带上类型说明符.在程序中引用时通常省略类型符 如:Const PI&=3.14 Const ONE%=250 定义好符号常量后,不能定义和其名称一样的变量 符号常量一经定义,其值就不能在程序中的其他位置进行改变. (1)“常量名”按变量名的规则定义,可加以类型说明符(见后)。 (2)“表达式”通常是数值常量或字符串,但不能是用户定义的函数或内部函数。例如: Const PI = 3.141593 , C0UNTRY$ = "China" 定义符号常量PI的值是3.141593,C0UNTRY$的值是“China”。 (3)符号常量一经定义,就不能在程序中的其他位置改变其值。程序中如果多处使用到相同的数据,采用符号常量表示该数据,当需要修改数据的值时,只要在Const语句中修改定义的符号常量的值即可,不必在程序中作多处修改。 注意: 符号常量和变量不能同名,在定义了符号常量后,不能再使用相同的名字的变量。符号常量的类型由类型说明符或表达式的类型决定。例如上面定义了符号常量PI,则PI$、PI#、PI%、PI&等不能再作变量名。习惯上,符号常量一般用大写字母定义。 2018/12/7
思考 说明下列哪些表示的是VB合法的常量值,分别指出它们是什么类型? (1) 100.0 (2) %100 (3) 1E1 (4) 123D3 (5) 123,456 (6) 0100 (7) "ASDF" (8) ”1234” (9) #2000/10/7# (10) 100# (11) π (12) &O100 (13) &O78 (14) &H123 (15) True (16) T (17) &H12ag (18) -1123! 合法的有:(1)整型(3)单精度(4)双精度(6)整型(7)字符串(10)双精度(12)八进制整型(14)十六进制整型(15)逻辑型(布尔型)(18)单精度 2018/12/7
什么是变量 数据信息可以暂时存放在计算机的存储单元中。当程序运行时,存储单元中内容可被改变称为变量。 Private sub form_click( ) Dim a as integer a = 3 a = a + 1 print a End sub 4 3 2018/12/7
变量 什么是变量 数据信息可以暂时存放在计算机的存储单元中。当程序运行时,存储单元中内容可被改变称为变量。 3 命名规则 声明方法 2018/12/7
变量的命名规则 1、只能由字母、数字和下划线(或汉字)组成,长度不能多于255个字符 2、必须以字母或汉字开头,最后一个字符可以是类型说明符 abc_12 2、必须以字母或汉字开头,最后一个字符可以是类型说明符 abc$ 程序设计# 3、变量名不能使用VB中的保留字(关键字) 如Sub是不能做为变量名 4、VB中不区分变量名中字母的大小写 但可以把保留字嵌入到变量名中,同时变量名也不能是末尾带有类型说明符的保留字 变量名最好做到“见名知意” 2018/12/7
例子 Dim intCount As Integer intCount = 100 Dim sngCount As Single Dim strFname As String strFname = "Smith" Dim M_Variant As Variant M_Variant = 123 M_Variant = "123“ M_Variant = True
思考 下列符号中,那些是VB合法的变量名? (1) a123 (2) a12_3 (3) 123_a (4) a 123 (5) Integer (6) XYZ (7) False (8) sin(x) (9) sinx (10) 变量名 (11) abcdefg (12) π 合法的变量名有(1)(2)(6)(9)(10)(11) 2018/12/7
变量的类型 Declare 变量名 As 数据类型 (1) 定义变量时声明其类型 显式声明 Dim Static Public Dim a as integer Dim S1 As String(变长) Dim S2 As String * 50 (定长) Dim Static Public Private 变量的声明就是向程序说明要使用的变量 DIM:用于在标准模块、窗体模块中定义变量和数组 (变长和定长:字符串变量的长度通过加上“*数值”来确定) 注意:dim语句定义多个变量时,每个变量都要通过AS子句声明其类型 否则看做变体类型 STATIC:用于在过程中定义静态变量和数组变量,该变量成为静态变量!! 在每次应用该变量时其值会继续保留。而当应用DIM定义的变量时,变量值会被重新设置(数值型变量=0,字符串变量为空) Public 主用用于在标准模块中定义全局变量,定义的该变量可以在当前过程中的任何窗体和模块中使用它。 注意:VB中不允许在定义变量的同时对其赋值 如:Dim a% = 100(错误) 2018/12/7
变量的类型 (2) 用类型说明符来标识 % 整型 & 长整型 ! 单精度浮点数 # 双精度浮点数 @ 货币型 $ 字符串型 Num%和Str1$均是 合法的变量名 比较: Dim a as integer,b as long Dim a%,b& Dim a,b 2018/12/7
变量声明 隐式声明 变量未定义(或声明时不指定类型)直接使用,VB默认该变量为变体类型(Variant)。 Dim 变量名 [As Variant] Dim SomeValue '缺省为 Variant SomeValue = “17” ‘SomeValue包含 “17”(有两个字符的字符串) SomeValue = SomeValue - 15 ‘现在, SomeValue 包含数值 2 SomeValue = "U" & SomeValue '现在, SomeValue 包含 "U2" (双字符的串) 如果未定义一个变量的类型,或者对该变量不作定义而直接使用,则Visual Basic系统默认该变量为变体类型。变体类型变量可以用一般格式定义,也可以使用默认定义。例如: Dim M_Variant As Variant Dim M_Variant 以上两行语句的作用相同,都是把变量M_Variant定义为变体类型变量。如前所述,该变量也可以不经定义而直接使用,则系统视该变量为变体类型变量。 在变体变量中可以存放任何类型的数据,包括数值、字符串、日期和时间等。向变体变量赋值时不必进行任何转换,Visual Basic系统自动执行必要的转换。下面两行赋值语句中,随着所赋值的不同,变量M_Variant的类型在不断变化,说明了“变体数据类型”的含义。 M_Variant = "200" + "1" (字符串“2001”) M_Variant = M_Variant + 4 (数值2005) 在对变体变量进行算术运算时,必须确保变量中存放的是某种形式的数值,包括可以解释为数值的字符串。虽然变体类型变量的使用十分灵活,但是在对存放字符串的变体变量进行操作时可能会产生歧义。特别是用“+”运算符对两个变体变量进行运算时,如果两个变量都是数值,则执行数值相加运算;如果两个变量中存放的都是字符串,则执行字符串连接操作。如果一个变量中是数值而另一个变量中是字符串,Visual Basic将字符串转换为数值,如果转换成功则进行相加运算,转换不成功则出现“类型不匹配”错误。 2018/12/7
常量和变量 隐性声明 如果没有声明就直接使用,Visual Basic会自动根据数据值对其规定数据类型。 X=35 'X为Integer类型 Y="Visual Basic 6.0编程" 'Y为String类型 2018/12/7
例题 以下声明语句中错误的是( ) B A)Const var1%=123 B)Dim var2 = 'ABC’ C)Dim s 以下声明语句中错误的是( ) A)Const var1%=123 B)Dim var2 = 'ABC’ C)Dim s D)Static var3 As Integer B 2018/12/7
变量的初值 说明:定义一变量后,系统自动为该变量赋初始值。 数值型的初值为0; 字符型变量的初值为空字符串 2018/12/7
强制变量声明 在通用声明处加 “Option Explicit “语句来强 制显式声明变量。 工具 -》选项 -》编辑器 -》要求变量声明 如果程序中有大量的未定义变量(并且名字取得不好) 变量的类型容易混淆 所以可以使用Option Explicit语句来强制显示声明变量 Option Explicit 强制变量声明 2018/12/7
第二章 Visual Basic语言基础知识 2.1 数据类型 2.2 常量和变量 2.3 运算符与表达式 2.4 常用内部函数 2018/12/7
运算符类型 关系 运算符 算术 运算符 字符串 连接 逻辑 运算符 运算是对数据进行加工的过程,描述不同运算的符号称为运算符,参与运算的数据称为操作数。 在VB中,运算符有算术运算符、字符串运算符、关系运算符、逻辑运算符。 2018/12/7
1.算术运算符 例: 5 * 4 + 10 mod 10 \ 9 / 3 + 2 ^ 2 运算符 含义 优先级 实例 结果 ^ 幂运算 1 乘 3 5 * 4 20 / 除 9 / 3 \ 整除 10 \ 3 Mod 取余数 5 10 mod 3 +(-) 加(减) 6 20 + 1 + 4 25 算术运算符是专用来进行数学计算的运算符。Visual Basic提供的算术运算符共有7个,除负号为单目运算符外,其余的都为双目运算符,即需要两个操作数完成的运算。 2018/12/7
1.算术运算符 把数学表达式转换为VB的表达式 2018/12/7
= + \ 整除运算与取模运算 例 37.77 \ 5.88 和 37.77 Mod 5.88 37.77 5.88 商 余数 38 6 6 2 当除数或被除数带有小数时,首先被四舍五入为整数或长整数,然后进行整除运算, 其运算结果被截断为整数(Integer、Long),不进行舍入处理。 取模运算的结果为一个整型数值,这个值是整数除法的余数。 2018/12/7
代码分析 分析以下代码的结果 Private Sub Form_Click() a = 2 b = 3 Print a + b, a - b Print a * b, a Mod b Print a / b, a \ b Print a ^ b End Sub 2018/12/7
代码分析 给定一个两位正整数(如36),交换个位数和十位数的位置,并将处理后的结果显示在窗体上 编写的窗体单击事件过程代码如下: Private Sub Form_Click() Dim x As Integer, a As Integer Dim b As Integer, c As Integer x = 36 a = x \ 10 '求十位数 b = x Mod 10 '求个位数 c = b * 10 + a '生成新的数 Print "处理后的数: "; c End Sub 2018/12/7
2、字符串运算符 + , & “+”运算符 当两边操作数为字符串时,进行字符串的连接 2、字符串运算符 + , & “+”运算符 当两边操作数为字符串时,进行字符串的连接 当两边操作数为数值数据或为可转换为数值数据的逻辑值True(-1)、False(0)或字符串时,则做数值相加运算 其他情况:出错 "abcdef" & 12345 ' 结果为 "abcdef12345 " "abcdef" + 12345 ' 出错 "123" & 456 ' 结果为" 123456 " "123" + 456 ' 结果为 579 "123" + True ‘ 结果为 122 2018/12/7
2、字符串运算符 + , & "123" & "xyz" '结果为新字符串"123xyz" 2、字符串运算符 + , & "123" & "xyz" '结果为新字符串"123xyz" 123 & 456 '结果为新字符串"123456" 123 & "xyz" '结果为新字符串"123xyz" 字符串运算符的作用是实现字符串的连接,也称连接运算符,字符串运算符有&和+。 当参加运算的操作数都是字符型数据时,两运算符的作用和结果相同,都是将两个字符串连接起来,组成一个新的字符串。 当连接运算的操作数并非都为字符串的时候,两个连接运算符的结果有所差别。&连接符在任何时候都做字符串连接操作,如果操作数有非字符串数据,先将其转换为对应的字符串数据,再进行连接操作。 2018/12/7
2、字符串运算符 + , & "123"+45 '结果为数据168 123+45 '结果为数据168 2、字符串运算符 + , & "123"+45 '结果为数据168 123+45 '结果为数据168 " Visual Basic 编程" + 45 '程序会提示出错 123 & 456 建议使用 当+连接符作为运算符时,若其中一个字符串为数字字符型数据,另一个为数值型数据时,先将数字字符型变为数值型,再实现算术加法运算;若两个都为数值型数据,则直接按照算术运算符实现加法运算;若其中一个为数值型数据,另外一个为非数字字符型数据,系统则会提示出错。 为了避免“+”做连接运算时与加法运算混淆,一般都使用&作为连接符号使用,但使用“&”连接符时必须在“&”的前面和后面各增加一个空格避免出错。这是因为符号“&”的另一个含义是长整型的类型符,如果变量与符号&接在一起,VB系统先把它作为类型定义符处理,因而会出现语法错误。 2018/12/7
2、字符串运算符 + , & “123456” “123“ + “456“ “123“ & “456“ “ 123 ” + 456 2、字符串运算符 + , & “123456” “123“ + “456“ “123“ & “456“ “ 123 ” + 456 “ 123 ” & 456 579 “123456” “ a23 ” + 456 “ a23 ” & 456 出错 “a23456” 区别:+ 两边必须是字符串才连接,& 不一定 书写时,操作数与&之间要加空格 2018/12/7
字符串运算符及其表达式 例如: 答案 "100" + 123 ' 结果为 223 "100" + "123" ' 结果为 "100123" "100" + 123 ' 结果为 223 "100" + "123" ' 结果为 "100123" "Abc" + 123 ' 出错 "100“ & 123 ' 结果为 "100123" 100 & 123 ' 结果为 "100123" "Abc" & "123" ' 结果为 "Abc123" "Abc" & 123 ' 结果为 "Abc123" 答案 2018/12/7
字符串运算符及其表达式 任务3 编写一个简单的加法程序,用两个文本框存放被加数和加数,另外一个文本框存放结果,单击“计算”按钮将计算结果显示在结果框中,单击“算式”按钮将整个算式完整显示在算式的标签中。 2018/12/7
字符串运算符及其表达式 Private Sub Command1_Click() Dim s1 As Integer, s2 As Integer, s3 As Integer s1 = Val(Text1.Text) s2 = Val(Text2.Text) s3 = s1 + s2 Text3.Text = s3 End Sub Private Sub Command2_Click() Label3.Caption = Label3.Caption & Text1.Text & "+" & _ Text2.Text & "=" & Text3.Text End Sub 2018/12/7
练 习 Private sub form_click() a=“西南” : b=“石油大学” print a & b print a+b 想一想 Private sub form_click() a=“西南” : b=“石油大学” print a & b print a+b c=123 print c & 4, c & “4” print c+4, c+”4” d=“123” print d & 4 , d & “4” print d+4, d+”4” End sub 2018/12/7
关系、逻辑运算符 关系运算符 = 、>、>=、<、<=、<> 逻辑运算符 Not、And、Or 运算符的优先级 算术运算符 > 字符运算符 > 关系运算符 > 逻辑运算符 关系运算符也称为比较运算符,用来比较两个操作数之间的大小关系 关系运算的结果是逻辑值,即运算的结果只有True和False两种。 在表达式中,先进行算术运算符,接着进行比较运算,然后才进行逻辑运算符。所有比较运算符的优先级都相同;也就是说,要按它们出现的顺序从左到右进行处理。 2018/12/7
关系运算符及其表达式 关系运算符也称为比较运算符,用来比较两个操作数之间的大小关系,操作数可以是数值型数据、字符(串)型数据、日期型数据等,但不能是逻辑型数据,若为逻辑型数据则需要根据逻辑型数据向数值型数据转换的规则转换后再进行运算。关系运算的结果是逻辑值,即运算的结果只有True和False两种。 数值型数据 字符型数据 运算 日期型数据 逻辑型数据 数值型数据 2018/12/7
关系运算符及其表达式 数值型数据在进行比较的时候,直接比较其值大小。 例如:5>3的结果为True 日期型数据比较大小时,VB会把日期型数据看成一个yyyymmdd的8位整数,按照数值比较其大小。 例如:#1999-5-6# > #2003-6-13#的结果为False 2018/12/7
关系运算符及其表达式 结果为 False 关系运算的规则如下: (1)当两个操作数均为数值型,按数值大小比较。 (2)字符串比较,则按字符的ASCII码值从左到右一一比较,直到出现不同的字符为止.。 例: " ABCDE " > " ABRA " 结果为 False 2018/12/7
关系运算符及其表达式 常见字符ASCII码大小关系如下: 例如: "sab">"aab"的结果为True "空格"<……<"0"<"1"<……<"9"<…… <"A"<"B"<……<"Y"<"Z"<…… <"a"<"b"<……<"y"<"z"<"任何汉字" 例如: "sab">"aab"的结果为True "abc"="ABC"的结果为False 字符型数据比较大小时,若为单个字符,比较其ASCII码值;若为字符串时,依次从左边第一个字符开始比较,直到发现一个不相同的为止,由第一个不相同的字符的大小的关系代表字符串的大小,若字符串长度不相等,短字符串尾部可以补空格比较。常见的字符值由对应的ASCII码表中的顺序决定. 2018/12/7
关系运算符及其表达式 逻辑值不能参加运算,如果比较中出现逻辑值,先将逻辑值转换为对应的数值型数据再进行比较。 10 <= 3 < 20 False True 例如:10 <= 3 < 20的结果先计算10<=3的结果为False,然后将False转换为数值0,将结果再和20比较,结果为True。 2018/12/7
关系运算符及其表达式 数值型数据与数字字符型数据比较时,将字符型数据转换为对应的数值型数据进行计算 数值型与不能转换成数值型的字符型比较. 如:29>“189”,按数值比较,结果为False 数值型与不能转换成数值型的字符型比较. 如:77>"sdcd",不能比较,系统将提示出错 关系运算没有优先级,也可以认为具有相同的优先级,所以计算的时候按照从左到右的顺序进行计算 2018/12/7
关系、逻辑运算符 【例】使用逻辑运算符。 Private Sub Command1_Click() Dim A As Integer, B As Integer, C As Integer A = 10 B = 8 C = 6 Print A > B And B > C Print B > A Or B > C Print Not A > B End Sub 2018/12/7
关系、逻辑运算符 10 = 00001010 8 = 00001000 Or Not -11 = 11110101 (补码取反加1) 如果逻辑运算的操作数(运算量)中有一个是数值型值。则VB会将所有的运算量转换为整数进行“按位逻辑运算”。 运算规则是将整数以二进制形式按位进行逻辑运算,结果转换为十进行制整数。 (1) 10 Or 8的值为10。 10 = 00001010 8 = 00001000 Or (2) Not 10 的值为 -11。 Not -11 = 11110101 (补码取反加1) 2018/12/7 54
练习 设三个边长分别为A、B、C,则用来判断这三个边能组成三角形的表达式是什么? A+B>C and B+C>A and A+C>B 2018/12/7
练习 Private sub form_click() print 3>2 and 3<4 想一想 Private sub form_click() print 3>2 and 3<4 print not (3>2 and 3<4) print 1>3 or 2<3 Print 10 <= 3 < 20 End sub 2018/12/7
练 习 Private sub form_click() a = 1 b = 2 c = 3 Print a + 5 >= b * 3 想一想 Private sub form_click() a = 1 b = 2 c = 3 Print a + 5 >= b * 3 Print "Visual Basic" < "Pascal" Print "qaz" = "QAZ" Print a <> b End sub 2018/12/7
表达式 表达式由变量、常量、运算符、函数和圆括号按一定的规则组成 表达式 (1) 乘号不能省略:X乘以Y X * Y (2) 圆括号必须成对出现 (3) 注意运算符的优先级和圆括号的使用 表达式用来表示某个求值规则,可以由关键字、运算符、常量、变量、函数、对象和配对的圆括号以合适的形式组合而成。 每个表达式都有一个惟一的值作为表达式的值。根据运算符的不同,可以将表达式分为算术表达式、字符串表达式、关系表达式、逻辑表达式 。 (1)每个符号占一个位置,必须在同一基准并排书写所有符号都不能出现在上标、下标,如:23应该写成2^3,x1要写成x1。 (2)数学表达式中省略的乘号必须要写上,如数学表达式2x的VB算术表达式是2*x,否则含义就不同了。 (3)所有的括号都应该用(),括号必须配对,不能出现[ ]或者{ }。 (4)数学中的有些符号不能出现在VB中,如±、α、β、∑、∏等。 2018/12/7
表达式求值 表达式求值3>2>1 3>2>1 True > 1 -1>1 false 2018/12/7
第二章 Visual Basic语言基础知识 2.1 数据类型 2.2 常量和变量 2.3 运算符与表达式 2.4 常用内部函数 2018/12/7
常用内部函数 数学函数 字符串函数 转换函数 日期/时间函数 2018/12/7
数学函数 Abs(1) -> 1 Abs(-5) -> 5 Exp(1) e1(e=2.718281828……) 含义 示例 结果 Abs 返回数的绝对值 Abs(-3.2) 3.2 Abs(1) -> 1 Abs(-5) -> 5 函数 含义 示例 结果 Exp 返回e的指定次幂 Exp(1) 2.718281828 Exp(1) e1(e=2.718281828……) Exp(-5) e-5(6.73794699908547E-03) 2018/12/7
数学函数 函数 含义 示例 结果 Sqr 返回数的平方根值 Sqr(9) 3 符号函数Sgn返回值有三种: 返回数的符号值 Sgn(-2) -1 符号函数Sgn返回值有三种: Sgn(-3)=-1(参数为负数) Sgn(0)= 0 Sgn(3)=1 (参数为正数) 函数 含义 示例 结果 Sqr 返回数的平方根值 Sqr(9) 3 只有非负数才有平方根(可以是实数) Sqr(9) Sqr(9. 56) 2018/12/7
Sqr(a+b)*sin(30*3.14/180)/((x1^2+1)*(y^3-2)) 表达式转换 将数学公式转换为VB表达式 程序中写为: Sqr(a+b)*sin(30*3.14/180)/((x1^2+1)*(y^3-2)) 2018/12/7
随机数函数 函数 含义 示例 结果 Rnd[(x)] 返回小于1且大于或等于0的随机数 Rnd 0~1间的随机数 直接使用Rnd函数每次得到的序列都是一样的,在使用中有时希望每次都得到不同的序列,那么就可以使用Randomize随机数种子生成器语句,使用在Rnd函数之前,这样可以使得Rnd函数产生的随机数为不同的序列 2018/12/7
例题 设a = 5,b = 10,则 c = Int((b - a) * Rnd + a) + 1后,C值的范围为( ) (A)5~10 C 2018/12/7
随机数函数 若要产生1-100的随机整数:Int(Rnd *100)+1 Int(4*Rnd+1)可以产生1~4之间(含1和4)的随机整数 若要生成[a, b]区间范围内的随机整数,可以用公式 Int((b-a+1)*Rnd + a) 2018/12/7
产生随机数 Int((b-a+1)*Rnd + a) 产生300~500的随机整数 产生-500~-300的随机整数 Int(Rnd*201+300) Fix(Rnd*201+300) 产生-500~-300的随机整数 Int(Rnd*201-500) Fix(Rnd*200-500) 用Int生成[a, b] 范围内的随机整数 Int(Rnd *(b-a+1) + a) 用Fix生成[a, b] 范围内的随机整数 b≥0:Fix(Rnd *(b-a+1) + a) b<0:Fix(Rnd *(b-a) + a) 2018/12/7
随机数函数 任务 通过随机函数产生2个两位正整数,求这2个数之和并显示出来(产生[10,99]区间内的随机整数) 2018/12/7
随机数函数 编写的窗体单击事件过程代码如下: Private Sub Form_Click() Dim a As Integer, b As Integer, c As Integer Randomize '初始化随机数生成器 a = Int(90 * Rnd + 10) '产生[10,99]区间内的随机整数 b = Int(90 * Rnd + 10) c = a + b '求两数之和 Print "产生的两个随机数: "; a, b Print "和数: "; c End Sub 2018/12/7
字符串函数 说明:如果返回是字符型,则函数后有“$”字符。 Ltrim(" abcd ") = "abcd " 含义 Ltrim 去掉字符串Str左边的空白字符,并返回 Rtrim 去掉字符串Str右边的空白字符,并返回 Trim 去掉字符串Str左边和右边的空白字符,并返回 Ltrim(" abcd ") = "abcd " Rtrim(" abcd ") = " abcd" Trim(" abcd ") = "abcd" 2018/12/7
字符串函数 ld orl 函数 含义 Left $(C , N) 从C中左边起取N个字符 Right$(C , N) 从C中右边起取N个字符 Mid$(C , N1 ,N2) 从C中第N1位取N2个字符 Left$(“World”,2) 结果: Right$(“World”,2) 结果: Mid$(“World”,2,3) 结果: Wo “ ” ld “ ” orl “ ” 2018/12/7
字符串函数 String(3, "s")的结果为:"sss" String(3, "sab")的结果同样为"sss" 含义 Len(C) 返回C的长度 Len(“name”) 结果: 4 函数 含义 String$(n,Str) 返回由Str第一个字符重复n次所组成的字符串 Space$(n) 返回包含n个空格的字符串 String(3, "s")的结果为:"sss" String(3, "sab")的结果同样为"sss" Space(6)的结果为:" " 2018/12/7
Instr(4,”xxpxxpXp”,”p”) x p 字符串函数 函数 含义 Instr([N1,]C1,C2[,M]) 返回C2在C1中首次出现的位置(从N1开始) Instr(4,”xxpxxpXp”,”p”) x p 结果为6 从第4位开始 第6位 函数 含义 Lcase(c) 将C中大写字母变为小写字母 Ucase(c) 将C中小写字母改为大写字母 UCase("How Are You") = "HOW ARE YOU" LCase("How Are You") = " how are you " 2018/12/7
练习 s1 = "ABCDEFGH" s2 = Left(s1, 2) s3 = Right(s1, 3) s4 = Mid(s1, 3, 2) Print s2, s3, s4 s1 = "Visual Basic" i = Len(s1) Print InStr("ABCDEF", "BC") Print InStr(2, "ABCDEF", "BC") Print InStr(4, "ABCDEF", "BC") Str1 = "Hello" s1 = UCase(Str1) s2 = LCase(Str1) Str1 = Space(2) Print s1, s2, Str1, 10
练 习 100 mod 3 1 100\3+20 53 “ABC”>”abc” False Date 当前系统日期 Int(-45.235) Fix(45.235) Len(“how are you!”) Left(“visual basic”,6) 1 53 False 当前系统日期 -46 45 12 visual 2018/12/7
转换函数--ASCII码转换函数 Asc(“China”) 结果: 67(大写字母C的ASCII码值为67) 函数名 一般格式 功能 字符转换为ASCII码值 Asc(Str) 返回字符串Str中首字符的ASCII码 ASCII码转换为字符 Chr(n) 返回ASCII码为整数n的字符 Asc(“China”) 结果: 67(大写字母C的ASCII码值为67) Chr(100) 结果:“ d ”(小写字母d的ASCII码值为100) 2018/12/7
转换函数--直接转换函数 函数名 一般格式 功能 数值转换为字符串 Str(n) 返回由数值n组成的字符串 字符串转换为数值 Val(Str) 返回包含于字符串Str内的数字 Str(323.1) 结果:“ └┘323.1”正数无符号,转换成空格 Str(-323.1) 结果:“-323.1”负数的符号直接转换,无空格 N1= Val(“1.234”) N1的值是 1.234数值转换 N2= Val(“1.34ASD45”) N2的值是 1.34字母后忽略 N3= Val("-12ASD") N3的值是-12字母后忽略 N4= Val(“ASD123”) N4的值是0字母开头为0 N5= Val(“&HFFFF”) N4的值是-1可以识别八、十六进制 N6= Val(“1.2e2”) N6的值为 120单精度型数据 2018/12/7
日期和时间函数 函数 一般格式 说明 Now 返回当前系统日期和时间 Date 返回当前系统日期 Time 返回当前系统时间 Year Year(T) 返回表达式T的年份(yyyy) Month Month(T) 返回表达式T的月份(1-12) Day Day(T) 返回表达式T的日期(1-31) WeekDay WeekDa(T) 返回表达式T的星期(1-7) Hour Hour(T) 返回表达式T的小时(0-23) Minute Minute(T) 返回表达式T的分钟(0-59) Second Second(T) 返回表达式T的秒(0-59) Timer 返回系统当前时间从午夜算起经过的秒数 2018/12/7
日期和时间函数 说明: (1)日期和时间函数使用相对简单,若无参数,则返回系统的时间或日期,若有参数,确定其参数均为日期型的数据,即可操作。 (2)函数的参数可为任何日期型数据,包括函数的结果。例如: Year(Now) 返回当前日期的年份。 Day(#7/25/2006#) 结果为25。 (3)WeekDay函数的结果是将周日认为是一个星期的开始,即,周日对应的返回值为1,依次类推。 2018/12/7
日期/时间函数示例 Private Sub Form_Click() x = #1/1/2015# a = x - Date b = Weekday(x) c = Year(Date) d = Month(Date) e = Hour(Time) f = Minute(Time) Print "现在距离2015年元旦还有: "; a; "天" Print “2015年元旦是:该星期的第"; b; "天" Print "本月份是:"; c; "年"; d; "月" Print "现在是:"; e; "时"; f; "分" End Sub 2018/12/7
格式输出函数 函数 一般格式 说明 Format Format(expression[, format[, firstdayofweek[, firstweekofyear]]]) 将数据转换为指定格式字符串 说明: (1)expression为有效表达式,即要转换的数据,format参数一般不省略,当省略时,可以简单认为此时Format函数的作用和CStr函数一致。 例如:Format(-455)的结果为"-455"。 2018/12/7
课堂练习 表达式16 / 4 - 2 ^ 5 * 8 / 4 MOD 5 \ 2 的值为_________ 赋值语句:a=123 + Mid("123456",3,2)执行后, a变量为________ 赋值语句:a=123 & Mid("123456",3,2)执行后, 已知A=“12345678” ,则表达式 Val(Left(A,4)+Mid(A,4,2))的值为____ ① 4 ②157 ③ "12334" ④ 123445 2018/12/7
本章小结 1.数据类型: 基本数据类型。 用户定义的数据类型。 2.常量和变量: 局部变量和全局变量。 变体类型变量。 缺省声明。 3.常用内部函数。 4.运算符和表达式: 算术运算符。 关系运算符和逻辑运算符。 表达式的执行顺序。 2018/12/7