第3章 Visual Basic语言基础 郭清溥
第3章 Visual Basic语言基础 【本章要点】 各种数据类型数据类型的含义; 常量和变量的定义和使用; 运算符、表达式和函数的具体用法; 编程的基本知识。 【课时安排】 2学时(理论),2学时(上机)
3.1 字符集 1.字符集 数字:0~9 字母:a~z,A~Z 字符:!,#,$,%,等。 2.关键字 关键字又叫保留字。主要是指 VB命令、函数名等。
3.2 数据类型 在程序中,不同数据类型的存储方式、处理方法都有所不同,因此,使用时一定要搞清所用变量的类型。 数据的类型可以通过“类型说明符”或“类型名”来说明。
3.2 数据类型 3.2.1 标准数据类型 1.字符串型 字符串是一个字符序列,专门用来存放字符文本信息的。在Visual Basic中,字符串是放在双引号内的若干个字符。其中长度为0(即不含任何字符)的字符串称为空字符串。 字符串类型说明符为“$”,类型名为“String” 。类型前缀为“str”。 例如: "This a book " "显示123456789 " "" (空字符串)
3.1 数据类型 215=32768 3.2.1 标准数据类型 2.数值型 数值型数据用来具体的数值。 整型 3.2.1 标准数据类型 2.数值型 数值型数据用来具体的数值。 215=32768 整型 不带小数和指数的数值,在内存中占两个字节,取值范围在:- 32768 ~ + 32767。 类型说明符为“%” ,类型名为“Integer” 。类型前缀为“int”。
3.1 数据类型 “整型”和“长整型”叫整型数 231= 2147483648 3.2.1 标准数据类型 2.数值型 3.2.1 标准数据类型 2.数值型 “整型”和“长整型”叫整型数 数值型数据用来具体的数值。 231= 2147483648 长整型 不带小数和指数的数值,在内存中占四个字节,取值范围在:- 2147483648 ~ + 2147483647。 类型说明符为“&” ,类型名为“Long” 。类型前缀为“lng”。
3.1 数据类型 3.2.1 标准数据类型 2.数值型 数值型数据用来具体的数值。 单精度 3.2.1 标准数据类型 2.数值型 数值型数据用来具体的数值。 单精度 在内存中占四个字节,可以精确到7位十进制数,取值范围在:- 3.402823E38 ~ + 3.402823E38 。 类型说明符为“!” ,类型名为“Single” 。类型前缀为“sng”。
3.1 数据类型 2.3564E+07 3.2.1 标准数据类型 2.数值型 科学计数法 3.2.1 标准数据类型 2.数值型 科学计数法 单精度的浮点数采用科学计数法:用10的整数次幂表示,其中用“E(e)”表示底数10。 如:23.564×106 = 23.564E06 = 23.564e6。 计算机输出时采用标准科学计数法:小数点前有且只有一位非零数字。 如:0.00078×10-23 =7.8E-27。 2.3564E+07
3.1 数据类型 “单精度”和“双精度”叫浮点数 双精度浮点数的科学计数法中用 “D(d)”表示底数10。 3.2.1 标准数据类型 2.数值型 “单精度”和“双精度”叫浮点数 数值型数据用来具体的数值。 双精度 在内存中占八个字节,可以精确到16位十进制数,取值范围在: -1.79769313486232D308 ~ +1.79769313486232D308 。 类型说明符为“#” ,类型名为“Double” 。类型前缀为“dbl”。 双精度浮点数的科学计数法中用 “D(d)”表示底数10。 如:3.22×10101=3.22D101。
3.1 数据类型 3.2.1 标准数据类型 3.货币型 货币型数据为表示钱款而设置。 在内存中占八个字节,小数点后固定四位。取值范围在: 3.2.1 标准数据类型 3.货币型 货币型数据为表示钱款而设置。 在内存中占八个字节,小数点后固定四位。取值范围在: - 922337203685477.5808 ~ +922337203685477.5807 。 类型说明符为“@” ,类型名为“Currency” 。
3.2 数据类型 3.2.1 标准数据类型 4.字节型 字节型数据实际上是一种数值型数据。表示在内存中占一个字节的无符号二进制数。取值范围在:0 ~ 255 。类型名为“Byte” 。
3.2 数据类型 3.2.1 标准数据类型 5.布尔型 布尔型数据表示一个逻辑值。在内存中占两个字节。它只有两个取值:True 和False 。类型名为“Boolean” 。类型前缀为“bln”。 当逻辑值与数值进行运算时,数值与逻辑值的对应关系为:0 对应 False ,非0 (-1)对应 True 。
3.2 数据类型 3.2.1 标准数据类型 6.日期型 日期型数据用来表示日期信息。其格式为“mm/dd/yyyy”或“mm-dd-yyyy”。取值范围在:1-1-100 ~ 12-31-9999 。 类型名为“Date” 。
3.2 数据类型 3.2.1 标准数据类型 7.对象型 对象型变量用于引用程序可以识别的一个对象(图形、OLE对象等)。类型名为“Object” 。
3.2 数据类型 3.2.1 标准数据类型 8.变体型 变体型变量是一种可以改变变量类型的变量,它包含了所有未定义的默认数据类型。类型名为“Variant” 。 变体型变量的类型可以通过函数 VarType() 检测其所代表的类型。
3.2 数据类型 3.2.1 标准数据类型 布尔型 数值型 字符型
3.2 数据类型 3.2.2 自定义数据类型 自定义数据类型指用户根据需要定义自己的数据类型,指由若干标准数据类型组成的一种复合类型。
数值型常量中还可以使用八进制数(前面加&O)和十六进制数(&H) 3.3 常量与变量 3.3.1 常量 常量是指在程序运行过程中保持不变的量。 数值型常量中还可以使用八进制数(前面加&O)和十六进制数(&H) 直接常量 用双引号引起来的字串 字符型 "Visual Basic" 整型 123% , &H1A3 长整型 1234567& 单精度 3.14! 双精度 3.14159D10 使用了标志符 “%”、“&”、“!” 指数中使用了标志符“D”
3.3 常量与变量 3.3.1 常量 符号常量 VB中可以用一个符号来代表一个具体的值。 3.3 常量与变量 3.3.1 常量 符号常量 VB中可以用一个符号来代表一个具体的值。 Const 常量名 = 表达式 [ ,常量名 = 表达式] 例如, Const Pi = 3.14159
3.3 常量与变量 3.3.2 变量 变量是用来存放程序运行过程中用到的各种中间数据。它是内存中存储单元的符号地址,是内存中一个命名的存储单元。在整个程序的执行过程中,变量的值是可以变化的,也就是说存储单元中存放的信息是可以改变的。但在程序执行的每个瞬间,变量的值都是明确的、已知的。 存放
3.3 常量与变量 A 3.3.2 变量 例如:将数值 3.14 存放到变量A中。 3.3 常量与变量 3.3.2 变量 例如:将数值 3.14 存放到变量A中。 在内存中符号地址为A的存储单元里存放一个数值“3.14”。A当前的值为3.14。 程序中可以根据需要改变符号地址为A的存储单元里的值(如100)。 此时,新的值100 就覆盖了原来的 3.14。 A 存储单元的符号地址 存储单元中存放的信息 3.14 100
3.3 常量与变量 建议: 变量名要使用有明确意义的字符串; 变量名要简单明了; 尽量添加变量类型前缀。 3.3.2 变量 变量的命名规则 3.3 常量与变量 3.3.2 变量 变量的命名规则 1)变量名必须由英文字母或汉字开头,后可以跟英 文字母、数字、汉字; 2)变量名不能超过255个字符; 3)变量名不能是VB的保留字。 建议: 变量名要使用有明确意义的字符串; 变量名要简单明了; 尽量添加变量类型前缀。
3.3 常量与变量 3.3.2 变量 变量类型的命名 1) 在“说明语句”中使用“类型名” 3.3 常量与变量 3.3.2 变量 变量类型的命名 1) 在“说明语句”中使用“类型名” { Dim | Private | Static | Public } <变量名> As <类型名> 用于在标准模块、窗体模块、或过程中定义变量或数组,Dim和Private定义的变量为私有的模块级变量。 例如, Dim strStuName As String
3.3 常量与变量 3.3.2 变量 变量类型的命名 1) 在“说明语句”中使用“类型名” 用于在标准模块中定义静态变量。 3.3 常量与变量 3.3.2 变量 变量类型的命名 1) 在“说明语句”中使用“类型名” { Dim | Private | Static | Public } <变量名> As <类型名> 用于在标准模块中定义静态变量。
3.3 常量与变量 用于在过程中定义全局变量。 3.3.2 变量 变量类型的命名 1) 在“说明语句”中使用“类型名” 例如: 3.3 常量与变量 用于在过程中定义全局变量。 3.3.2 变量 变量类型的命名 1) 在“说明语句”中使用“类型名” { Dim | Private | Static | Public } <变量名> As <类型名> 例如: Dim lngTotal As Long, intI As Integer Dim strStuName As String Dim A As Single
3.3 常量与变量 3.3.2 变量 变量类型的命名 2) 在“说明语句”中使用“类型说明符” 例如: Dim lngTotal&,intI% Dim strStuName$ Dim A! 例如: Dim lngTotal As Long, intI As Integer Dim strStuName As String Dim A As Single
3.3 常量与变量 类型 前缀 整型 Int 单精度 Sng 字符 Str 长整型 Lng 双精度 Dbl 布尔 Bool 3.3.2 变量 3.3 常量与变量 3.3.2 变量 变量类型的命名 3) 使用 Def 说明语句 Def 类型前缀 <字母范围> 类型 前缀 整型 Int 单精度 Sng 字符 Str 长整型 Lng 双精度 Dbl 布尔 Bool 例如, DefInt A-C
3.3 常量与变量 Option Explicit 3.3.2 变量 使用变量需要注意的几个问题 3.3 常量与变量 3.3.2 变量 使用变量需要注意的几个问题 1)VB中将未定义的变量默认为变体类型的变量。 但程序中使用未经定义的变量是一个不好的习 惯; 2)类型说明符的优先权最高; 3)程序中应该根据需要定义变量的类型,不要过高 的要求变量的精度。 命令行 可以强制变量先声明后使用! Option Explicit
3.4 运算符与表达式 运算符是描述各种不同运算的符号 操作数是参与运算的数据 表达式是由操作数和运算符组成的 符号序列
* 3.4 运算符与表达式 运算符 含义 + 加 - 减 乘 / 除 \ 整除 ^ 乘方 3.4.1 运算符 Mod 求模 算术运算符 3.4 运算符与表达式 3.4.1 运算符 运算符 含义 + 加 - 减 * 乘 / 除 \ 整除 ^ 乘方 Mod 求模 算术运算符 由算术运算符连接起来的式子叫算术表达式。其运算结果是数值型数据。
3.4 运算符与表达式 整除运算 3.4.1 运算符 X\Y 的值为将X除以Y写成真分式以后的整数部分 ,符号与 X / Y相同。 3.4 运算符与表达式 整除运算 3.4.1 运算符 X\Y 的值为将X除以Y写成真分式以后的整数部分 ,符号与 X / Y相同。 算术运算符 例:29 \ 5 因为 29 / 5 = 所以 29 \ 5 :5 例:-29 \ 5 因为 -29 / 5 = - 所以 -29 \ 5 :-5 例 (-29) \ (-5) 因为 (- 29) / (- 5) = 所以 29 \ 5 :5 例:29 \ (-5) 因为 29 / (- 5) = - 所以 29 \ (-5) :-5
3.4 运算符与表达式 取模运算 3.4.1 运算符 X Mod Y的值为将X除以Y写成真分式以后的分子部分,符号与 X 相同。 算术运算符 3.4 运算符与表达式 取模运算 3.4.1 运算符 X Mod Y的值为将X除以Y写成真分式以后的分子部分,符号与 X 相同。 算术运算符 例:29 Mod 5 因为 29 / 5 = 所以 29 Mod 5 :4 例:-29 Mod 5 因为 -29 / 5 = - 所以 -29 Mod 5 :-4 例 (-29) Mod (-5) 因为 (- 29) / (- 5) = 所以 29 Mod 5 :-4 例:29 Mod (-5) 因为 29 / (- 5) = - 所以 29 Mod (-5) :4
3.4 运算符与表达式 3.4.1 运算符 算术运算符 优先顺序 括号 负号 函数 乘方 乘除 整除 求模 加减 高 低
3.4 运算符与表达式 & 3.4.1 运算符 字符串运算符 字符串运算符有+和 &(字符串连接) 3.4 运算符与表达式 3.4.1 运算符 & 字符串运算符 字符串运算符有+和 &(字符串连接) +:要求两个运算符的类型一致, 如果不一致就 可能导致不是字符型的运算; & :允许两个运算符的类型不一致,但其结果一 定是字符型数据。
3.4 运算符与表达式 3.4.1 运算符 字符串运算符 例如:123 + "10" → 133 "123" + 10 3.4 运算符与表达式 3.4.1 运算符 字符串运算符 例如:123 + "10" "123" + 10 "123" + "10" "abc" & 123 123 & 10 → 133 → 133 → "12310" → "abc123" → "12310"
3.4 运算符与表达式 3.4.1 运算符 运算符 含义 = 等于 > 大于 < 小于 <= , =< 小于等于 3.4 运算符与表达式 3.4.1 运算符 运算符 含义 = 等于 > 大于 < 小于 <= , =< 小于等于 >= , => 大于等于 <>, >< 不等于 Like 字符串匹配 Is 对象引用比较 关系型运算符 由关系运算符连接起来的式子叫关系表达式。其运算结果是布尔型数据。
Option Compare Text 不区分大小写 Option Compare Binary 区分大小写 (默认值) 3.4 运算符与表达式 3.4.1 运算符 关系型运算符 Option Compare Text 不区分大小写 Option Compare Binary 区分大小写 (默认值) 注意 1.关系运算符两边的表达式类型必须一致! 2.数值型数据按其值的大小进行比较; 3.字符型数据是取相应的字符按其 ASCII 码值的大小进行比较:┗┛ ,0 — 9 ,A — Z ,a — z 汉字是按照其对应的拼音字符比较大小的 小 大 4.关系表达式的结果只有两个:“True” 、 “False”。
3.4 运算符与表达式 3.4.1 运算符 关系型运算符 字符串比较规则 3.4 运算符与表达式 3.4.1 运算符 关系型运算符 字符串比较规则 两个字符串比较时,从组成这两个字符串的最左端第一个字符开始逐一向右比较。 在从左到右的比较过程中,以第一次出现的比较结果作为两个字符串的比较结果; 如果两个字符串长度一样,每一个相应位置上的字符都一样,这两个字符串相等。
3.4 运算符与表达式 3.4.1 运算符 关系型运算符 例 10>9 True "10" > "9 " False 3.4 运算符与表达式 3.4.1 运算符 关系型运算符 例 10>9 "10" > "9 " "a1" < "aA" "ABCD" < "ABa" "ABCD" < "AB" "河南" < "上海" True False
3.4 运算符与表达式 3.4.1 运算符 关系型运算符 问题: X ∈(0,1)可以用 0 < X < 1表示吗? 3.4 运算符与表达式 3.4.1 运算符 关系型运算符 问题: X ∈(0,1)可以用 0 < X < 1表示吗? 1.当 X < = 0 时, 0 < X 为“假”, 可以用数值 “ 0 ”表示 0 < X < 1 变为 0 < 1 , 为真 故 0 < X < 1 为真 2.当 X > =1 时, 0 < X 为“真”,可以用数值“-1”表示 0 < X < 1 变为 -1 < 1 ,为真 3.当 X ∈(0,1) 时, 0 < X 为“真”,可以用数值“-1”表示 则 0 < X < 1 恒为真!
3.4 运算符与表达式 运算符 含义 Not 逻辑非 And 逻辑与 Or 逻辑或 Xor 异或 Eqv 等价 Imp 蕴含 3.4 运算符与表达式 3.4.1 运算符 运算符 含义 Not 逻辑非 And 逻辑与 Or 逻辑或 Xor 异或 Eqv 等价 Imp 蕴含 高 逻辑型运算符 由逻辑运算符连接起来的式子叫逻辑表达式。其运算结果是布尔型数据。 低
3.4 运算符与表达式 3.4.1 运算符 逻辑型运算符 逻辑运算符的真值表 关系 表达式1 表达式2 Not And Or Xor Eqv 3.4 运算符与表达式 3.4.1 运算符 逻辑型运算符 逻辑运算符的真值表 关系 表达式1 表达式2 Not And Or Xor Eqv Imp 真 假
3.4 运算符与表达式 VB表达式中的任何一个参数只能使用一次! X ∈(0,1)可以用逻辑式表示: 0 < X X < 1 3.4 运算符与表达式 3.4.1 运算符 逻辑型运算符 问题: X ∈(0,1)可以用 0 < X < 1表示吗? 由于 0 < X < 1 恒为真! 因此 0 < X < 1 不能表示 X ∈(0,1) VB表达式中的任何一个参数只能使用一次! X ∈(0,1)可以用逻辑式表示: 0 < X X < 1 And
3.4 运算符与表达式 3.4.2 表达式 表达式依据不同的运算符可以分为算术表达式、字符表达式、关系表达式、逻辑表达式等。 3.4 运算符与表达式 3.4.2 表达式 表达式依据不同的运算符可以分为算术表达式、字符表达式、关系表达式、逻辑表达式等。 实际上程序中最常用的还是混合表达式。 运算符的优先级 算术运算 关系运算 逻辑运算 高 低
3.4 运算符与表达式 3.4.2 表达式 表达式的书写规则 1) 每个符号占一个格,所有符号都写在同一行上; 2) 运算符不能缺省; 3.4 运算符与表达式 3.4.2 表达式 表达式的书写规则 1) 每个符号占一个格,所有符号都写在同一行上; 2) 运算符不能缺省; 3) 所有括号都用小括号; 4) VB中没有无理数。π、e 等无理数要用其近似值 (或函数)表示。
3.4 运算符与表达式 ( X * (1+0.1) +2^3 ) /(-2) -2 (a+b)/(a*b) (a+b)/a*b 3.4 运算符与表达式 行吗? 为什么? X(1+10%)+23 -2 ( X * (1+0.1) +2^3 ) /(-2) -2 2*2*2 分子 分母 注意括号! 注意括号! 10%为什么写成0.1 a+b ab 注意乘号! 乘方运算尽量用连乘实现! (a+b)/(a*b) (a+b)b a (a+b)/a*b 行吗? 为什么? 2πR 2*3.14159*R 无理数要用近似值表示
3.4 运算符与表达式 3.4.2 表达式 Not 3<-1+2 And 2<3 Or 1<0 And Not 1>0 ① 1 ③True ④ False ⑤ True ② False ⑦ False ⑥ True ⑨ False ⑧ True ⑩ True
3.5 常用内部函数 函数的格式 函数名( 参数 ) 括号不能缺省!
3.5 常用内部函数 3.5.1 转换函数 函数 功能 Hex$(x) 一个十进制数转换为十六进制数和八进制数 Oct$(x) 3.5 常用内部函数 3.5.1 转换函数 函数 功能 Hex$(x) 一个十进制数转换为十六进制数和八进制数 Oct$(x) 一个十进制数转换为八进制数 Asc(字符串) 返回"字符串"中第一个字符的ASCII码 Chr$(x) 把x的值转换为相应的ASCII字符 Val(字符串) 把"字符串"转换为数值 Str$(x) 把x的值转换为一个字符串 Cint(x) 把x的小数部分四舍五入,转换为整数 Ccur(x) 把x的值转换为货币类型,最多保留4位小数 CDbl(x) 把x的值转换为双精度 CLng(x) 把x的小数部分四舍五入,转换为长整形 CSng(x) 把x的值转换为单精度数 Cvar(x) 把x的值转换为变体类型值
3.5 常用内部函数 3.5.1 转换函数 Asc( X$ ) 将X$的第一个字符转换为对应的ASCII,以 十进制形式表示。 3.5 常用内部函数 3.5.1 转换函数 Asc( X$ ) 将X$的第一个字符转换为对应的ASCII,以 十进制形式表示。 Chr$( n ) 将n转换成ASCII码对应的字符。 Asc("A") Chr$(65) Asc("AB") Chr$(66) 65 A 65 B
3.5 常用内部函数 3.5.1 转换函数 Unicode(统一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
3.5 常用内部函数 3.5.1 转换函数 DBCS (双字节字符集)最初的128个代码是ASCII,较高的128个代码中的某些总是跟随着第二个位元组(位,Bit)。这两个位元组(位,Bit)一起(称作首位元组和跟随位元组)定义一个字元,通常是一个复杂的象形文字。
3.5 常用内部函数 3.5.1 转换函数 AscW( X$ ) 返回 Unicode 字符代码 。 ChrW$( n ) 3.5 常用内部函数 3.5.1 转换函数 AscW( X$ ) 返回 Unicode 字符代码 。 ChrW$( n ) 返回包含 Unicode 的 String。 若平台不支持Unicode,则 AscW(ChrW) 与 Asc(Chr)函数的功能相同。
3.5 常用内部函数 3.5.1 转换函数 Str$(n) 将算术表达式n的值转换为字符串 当n≥0时,转换后的字符串有一个前导空格。 3.5 常用内部函数 3.5.1 转换函数 Str$(n) 将算术表达式n的值转换为字符串 当n≥0时,转换后的字符串有一个前导空格。 Val(X$) 将X$转换为数值 Val( )函数自动忽略X$中的空格; 如果X$中的第一个字符不是数字,Val(X$)的值 为0。
3.5 常用内部函数 3.5.1 转换函数 ? "1234" = Str ( Val ( "1234" )) False
3.5 常用内部函数 注:X的单位为弧度值 3.5.2 数学函数 Sin(X) 正弦函数 Cos(X) 余弦函数 Tan(X) 正切函数 3.5 常用内部函数 3.5.2 数学函数 Sin(X) 正弦函数 Cos(X) 余弦函数 Tan(X) 正切函数 Atn(X) 反正切函数 注:X的单位为弧度值
3.5 常用内部函数 2*R*Sin(B) Cos(40*3.14/180) 例如: 2RSinβ Cos400 3.5.2 数学函数 3.5 常用内部函数 3.5.2 数学函数 可以用任意一个合法变量表示! 例如: 2RSinβ 2*R*Sin(β) 行吗? 2*R*Sin(B) Cos400 Cos(40*3.14/180) 角度必须转换!
3.5 常用内部函数 3.5.2 数学函数 Sqr(x) 求X的平方根,X>=0 Abs(x) 求X的绝对值 3.5 常用内部函数 3.5.2 数学函数 Sqr(x) 求X的平方根,X>=0 Abs(x) 求X的绝对值 Int(x) 求不大于X的最大整数 (正舍负入) Int(-2.1): - 3 ,Int(4.9): 4 Fix(X) 舍去小数部分 Fix(-2.1): - 2, Fix(4.9): 4 Round(X,N) 对 X 的第N+1位四舍五入
3.5 常用内部函数 用 Exp1 表示 e 可以吗? Exp(1) → e 3.5.2 数学函数 1 X>0 3.5 常用内部函数 3.5.2 数学函数 1 X>0 Sgn(x)= 0 X=0 -1 X<0 Exp(X) 自然常量e(2.71828)的X次幂 用 Exp1 表示 e 可以吗? Exp(1) → e
3.5 常用内部函数 3.5.2 数学函数 Log(X) 求以e为底的自然对数logeX logeb 3.5 常用内部函数 3.5.2 数学函数 Log(X) 求以e为底的自然对数logeX logeb logab= = Log(b)/Log(a) logea
3.5 常用内部函数 3.5.2 数学函数 测长度函数 Len(<表达式>) <表达式>可以是常量,也可以是变量 3.5 常用内部函数 3.5.2 数学函数 测长度函数 Len(<表达式>) <表达式>可以是常量,也可以是变量 如果<表达式>是数值型数据,它返回存放空间的值 如果<表达式>是字符型数据,它返回字符的长度 没有任何字符的串为空串,长度为零
3.5 常用内部函数 3.5.2 数学函数 Len("1234") 4 Len("") Dim I% I=1024 3.5 常用内部函数 3.5.2 数学函数 Len("1234") 4 Len("") Dim I% I=1024 Len(I) Len("abcd " ) 5 Len("你好! " ) 3 2
3.5 常用内部函数 3.5.3 字符串函数 字符串检索函数 InStr(n,Y$,X$) 从Y$ 中第n个位置开始查找子串X$的位置, 3.5 常用内部函数 3.5.3 字符串函数 字符串检索函数 InStr(n,Y$,X$) 从Y$ 中第n个位置开始查找子串X$的位置, X$、Y$为字符表达式; n为数值表达式,默认值为1 如果Y$包含有X$,输出X$在Y$中位置; 如果n >Len(Y$),则InStr()的值为0; 如果从n开始,X$在Y$中出现多次,则 只返回第一次出现的位置。
3.5 常用内部函数 3.5.3 字符串函数 子字符串 子字符串:从一个字符串中取出一组连续的字符组成的新 的字符串 3.5 常用内部函数 3.5.3 字符串函数 子字符串 子字符串:从一个字符串中取出一组连续的字符组成的新 的字符串 说明: 一个字符串有多个子字符串 可以利用左函数Left$( )、右函数Right$( )、 中间函数Mid$( )取得子字符串 有字符串: "BASIC" “BA”、“SIC”、“B”、“BASIC”等都是其子串 “QA”、“BS”等不是其子字符串
3.5 常用内部函数 3.5.3 字符串函数 取左子字符串函数 Left$(X$,n ) 3.5 常用内部函数 3.5.3 字符串函数 取左子字符串函数 Left$(X$,n ) 从X$左边第一个字符起,取出n个字符组成一个子字符串 n 可以是数值型常量、变量或表达式; n 的值在0~32767之间; 当 n>=Len(X$),得到整个字符串; 当 n=0 时,得到一个空串。 Left$( "Visual Basic" ,3) Vis
3.5 常用内部函数 3.5.3 字符串函数 取右子字符串函数 Right$(X$,n ) 3.5 常用内部函数 3.5.3 字符串函数 取右子字符串函数 Right$(X$,n ) 从X$右边第一个字符起,取出n个字符组成一个子字符串 n 可以是数值型常量、变量或表达式; n 的值在0~32767之间; 当 n>=Len(X$),得到整个字符串; 当 n=0 时,得到一个空串。 Right$( "Visual Basic" ,5) Basic
3.5 常用内部函数 3.5.3 字符串函数 取中间子字符串函数 Mid$(X$,m [,n] ) 3.5 常用内部函数 3.5.3 字符串函数 取中间子字符串函数 Mid$(X$,m [,n] ) 从X$中间第m个字符起,取出n个字符组成一个子字符串 m,n 可以是数值型常量、变量或表达式; m,n 的值在0~32767之间; 当 n省略或n>=Len(X$),得到从m开始的所有字符; 当 n=0或m >Len(X$) 时,得到一个空串。 Mid$("Visual Basic ", 4,3 ) ual
3.5 常用内部函数 3.5.3 字符串函数 Dim T% T=1234 Mid(Str(T),3,1) ? Mid(T,3,1) 2 3
3.5 常用内部函数 3.5.4 日期和时间函数 函数 功能 Date 返回当前的日期 Year(Now) 返回当前的年份 3.5 常用内部函数 3.5.4 日期和时间函数 函数 功能 Date 返回当前的日期 Year(Now) 返回当前的年份 Month(Now) 返回当前的月份 Day(Now) 返回当前的天数 WeekDay(Now) 返回当前的星期 Time(Now) 返回当前的时间 Hour(Now) 返回当前的小(0~23) Minute(Now) 返回当前的分钟(0~59) Second(Now) 返回当前的秒(0~59)
3.5 常用内部函数 3.5.5 随机函数 Rnd(X) 产生(0,1)之间的伪随机数 当 X>0 或缺省时产生序列中的下一个随机数; 3.5 常用内部函数 3.5.5 随机函数 Rnd(X) 产生(0,1)之间的伪随机数 当 X>0 或缺省时产生序列中的下一个随机数; 当X≤0时产生的随机数与上一个相同; 只有当使用了Randomize以后,函数Rnd产生的随机数才会有所不同。
3.5 常用内部函数 3.5.5 随机函数 Rnd(X) 产生(0,1)之间的伪随机数 3.5 常用内部函数 3.5.5 随机函数 Rnd(X) 产生(0,1)之间的伪随机数 利用 Rnd(X)可以产生一个指定区间(>0)的随机数: ( 0, X ) Rnd * X ( M, N ) M + Rnd * (N-M) [ M, N ]整数 Int ( M + Rnd * (N-M+1) )
3.6 Visual Basic 语句 程序结构 “通用”声明 事件过程 “自定义”过程
3.6 Visual Basic 语句 3.6.1 书写规则 1) VB不区分大小写,但对语句进行简单的格式处理; 3.6.1 书写规则 1) VB不区分大小写,但对语句进行简单的格式处理; 2) 程序由若干个语句行构成,每行可以是一句也可以 是多句。如果是多句,则句与句之间应该用语句分割 符“:”分割。每个语句行均以回车键结束; 3) 如果一行语句过长,可使用续行符“ _”(空格+ 下划线) 续行; 4) VB通常不使用行号,但有时会使用行标号。行标号 是以字母开头最后用冒号“:”结束的任意字符串; 5) 所有关键字必须是ASCII码字符; 6) 命令关键字与参数之间必须有空格。
3.6 Visual Basic 语句 建议: 3.6.1 书写规则 程序应该使用“按结构缩格”的形式书写; 3.6.1 书写规则 建议: 程序应该使用“按结构缩格”的形式书写; 建议控件名采用“前缀+标识”的方法命名; 变量名应该尽量采用“前缀+标识”的方法命名。
3.6 Visual Basic 语句 3.6.2 基本语句 在计算机中让一个没有被赋予具体值的变量参与运算是没有意义的。因此给变量提供初值是程序中不可缺少的步骤。
3.6 Visual Basic 语句 3.6.2 基本语句 1. 赋值语句 格式 3.6.2 基本语句 1. 赋值语句 格式 [Let] <变量> = <表达式> 或 [Let] <对象>. <属性> = <表达式> 功能 计算表达式的值,并将其提供给变量 或 修改指定对象的属性值。
3.6 Visual Basic 语句 3.6.2 基本语句 1. 赋值语句 例如 Let intMax = 0 3.6.2 基本语句 1. 赋值语句 例如 Let intMax = 0 该语句将数值型数据0保存在变量intMax中。 txtShow.Text = "河南财经政法大学" 该语句将名称为txtShow的TextBox控件的Text属性值修改为“河南财经政法大学”。
3.6 Visual Basic 语句 3.6.2 基本语句 1. 赋值语句 说明 1. 命令关键字 Let 可以缺省; 3.6.2 基本语句 1. 赋值语句 说明 1. 命令关键字 Let 可以缺省; 2. 语句格式中的符号“ = ”是 赋值号, 与数学中的等号只是形式上一样; 3. 一个赋值语句只能给一个变量赋值; 4. 赋值符号“=”左边只能是变量名或对象的属性引 用,不能是表达式; 5. 赋值号两边的数据类型一般应该一致。
3.6 Visual Basic 语句 3.6.2 基本语句 1. 赋值语句 以下赋值语句对吗? X = 8 ,Y = 9 3.6.2 基本语句 1. 赋值语句 以下赋值语句对吗? X = 8 ,Y = 9 N = N + 1 M = X = 8 Exp = Sqr(3) 5 = X + Y X + Y = 5 X = 8 : Y = 9 表示 N 累加 1 将 X = 8 的值(逻辑量)赋给 M Exp1 = Sqr(3) 赋值号左边不能是常量 赋值号左边不能是表达式
3.6 Visual Basic 语句 3.6.2 基本语句 1. 赋值语句 例1 编写程序,求摄氏温度与华氏温度的转换 3.6.2 基本语句 1. 赋值语句 例1 编写程序,求摄氏温度与华氏温度的转换 分析: 我们用 F 表示华氏温度 用 C 表示摄氏温度 则它们的关系为:C=5(F-32)/9 (或:F=32+9C/5)
3.6 Visual Basic 语句 3.6.2 基本语句 1. 赋值语句 例1 编写程序,求摄氏温度与华氏温度的转换 3.6.2 基本语句 1. 赋值语句 例1 编写程序,求摄氏温度与华氏温度的转换 分析: F 和 C 的值都用文本框输入和显示 一个命令按钮处理已知 F 计算 C 另一个命令按钮处理已知 C 计算 F
3.6 Visual Basic 语句 3.6.2 基本语句 1. 赋值语句 例1 编写程序,求摄氏温度与华氏温度的转换
3.6 Visual Basic 语句 3.6.2 基本语句 1. 赋值语句 例1 编写程序,求摄氏温度与华氏温度的转换 F To C 开始 3.6.2 基本语句 1. 赋值语句 例1 编写程序,求摄氏温度与华氏温度的转换 F To C 开始 从文本框中获得F的值,即:F=Val(txtF.Text) 用5*(F-32)/9计算C的值,即:C=5*(F-32)/9 用文本框输出C的值,即: txtC.Text = Str(C) 结束
从文本框中获得C的值,即: C=Val(txtC.Text) 用文本框输出F的值,即: txtF.Text = F 3.6 Visual Basic 语句 3.6.2 基本语句 1. 赋值语句 例1 编写程序,求摄氏温度与华氏温度的转换 C To F 开始 从文本框中获得C的值,即: C=Val(txtC.Text) 用9*C/5+32计算F的值,即:F=9*C/5+32 用文本框输出F的值,即: txtF.Text = F 结束
只有当文本框中的数据可以转换成数值数据时,这么写才可以。 3.6 Visual Basic 语句 3.6.2 基本语句 1. 赋值语句 例1 编写程序,求摄氏温度与华氏温度的转换 F to C 命令按钮 C to F 命令按钮 只有当文本框中的数据可以转换成数值数据时,这么写才可以。 Private Sub cmdFtoC_Click() Dim F As Single, C As Single Let F = Val(txtF.Text) Let C = 5 * (F - 32) / 9 Let txtC.Text = Str(C) End Sub Private Sub cmdCtoF_Click() Dim F!, C! C = Val(txtC.Text) F = 9 * C / 5 + 32 txtF.Text = F End Sub txtC.Text
3.6 Visual Basic 语句 3.6.2 基本语句 2. 注释语句 格式 { ' | Rem } 注释内容 功能 3.6.2 基本语句 2. 注释语句 格式 { ' | Rem } 注释内容 功能 对程序中的某些语句做出解释,使程序便于理解。
3.6 Visual Basic 语句 3.6.2 基本语句 3. 暂停语句 格式 Stop 功能 产生一个断点,使程序停在那里。
3.6 Visual Basic 语句 3.6.2 基本语句 4. 结束语句 格式 End 功能 终止程序的运行。
第3章 作业 P61 习题:一、二、三大题 讲义中的例1。 第3章 作业 P61 习题:一、二、三大题 讲义中的例1。 修改讲义中的例1:将各个对象初始属性的设置用代码实现(放在Form_Load中)。 修改讲义中的例1:将计算结果用标签显示。