Download presentation
Presentation is loading. Please wait.
1
第2章 VB语言基础 本章要点: 数据类型 常量和变量 运算符表达式 函数
2
2.1 数据类型 用户自定义的数据类型 基本数据类型 分为 基本数据类型: 字符型 数值型 布尔型 日期型 对象型 可变类型
3
1 字符型数据(String) 由双引号""括起来的一串符号 例: "abc" "ABC" "计算机"
"12.34" "3+2" ""(空串) (1)定长字符串:在程序执行过程中长度始终保持不变的字符串,字符长度不超过65535。 (2)变长字符串:长度不固定的字符串,随着对字符串变量赋予新的值,其长度可增可减。
4
2 数值型数据 Integer(整型) Long(长整型) Single(单精度浮点型) Double(双精度浮点型)
5
(1) 整型(Integer) 以2个字节存储 十进制表示: 由+ -号,0~9 组成 范围: ~32767 八进制表示: 以&O开头,由 0~7组成 范围: &O0 ~&O177777 十六进制表示: 以&H开头,由 0~9,A~F组成 范围: &H0 ~&HFFFF 例: &O &O36 &H1AC &H &H2
6
(2) 长整型(Long) 以4个字节存储 十进制表示: 由+ -号,0~9 组成 范围: ~ 八进制表示: 以&O开头,以&结束 范围: &O0& ~&O & 十六进制表示: 以&H开头,以&结束 范围: &H0& ~&HFFFFFFFF& 例: &O456& &O36& &H1AC& &H38& &H2&
7
(3) 单精度浮点型(Single) 以4个字节存储,可以精确到7位十进制数 例: 3.234E 表示3.234102 -28E 表示-28109 4.56E 表示4.5610-17 (4) 双精度浮点型(Double) 以8个字节存储,可以精确到16位十进制数 3.234D 表示3.234102 -28D 表示-28109 4.56D 表示4.5610-17
8
3 货币类型(Currency) 4. 字节型(Byte) 以8个字节存储,用于表示定点数,其小数点左边有15位数字,右边有4位数字。
用一个字节存储数据,其取值范围为0~255。
9
5 布尔型数据(Boolean) 用于表示某个条件的成立或不成立。 只有True和False两个值
10
6 日期型数据(Date) 用于表示日期和时间 格式: #……# VB接受许多种日期时间格式 例: 下面的 Date/Time 值全部有效。
# :20# #March 27,1993 1:20am# #Apr-2-93# #14 April 1993# #12/18/1999#
11
7 通用类型(Variant) 也称变体类型,是一种通用的、可变的数据类型,它可以表示上述任何一种数据类型。 对象型数据(Object)
以4个字节存储,用于引用程序中的对象。
12
2.1.2 用户自定义类型 是用户自己定义的类型,这种类型可以包含多个基本类型。使用Type语句定义。 Type语句格式:
[Private|Public] Type <用户自定义类型名> <元素名>[(下标)] As <类型> … End Type
13
说明: 1)<用户自定义类型名>、<元素名>应遵循标识符的命名规则。<类型>可以是Visual Basic系统提供的基本数据类型或已声明的用户自定义类型。缺省[Private|Public]选项时,默认是Public。 2)用户自定义类型必须在窗体模块或标准模块的通用声明段进行声明。在窗体模块中定义用户自定义类型时必须使用Private关键字。 3)如果用户自定义类型的元素为数组,则需要使用<下标>参数。 4)在使用用户自定义类型前,必须先声明用户自定义类型的变量。
14
例:定义一个Students数据类型,该类型中的每一个数又包含了学生的系、班级、姓名、年龄信息。定义格式为:
Private Type Students Dept As String * ' 系 ClassNo As String * 10 ' 班级 Name As String ' 姓名 Age As Integer ' 年龄 End Type
15
2.2 常量和变量 2.2.1 常量:指在程序运行期间其值不发生变化的量。 两种形式: 直接常量;符号常量 1 直接常量
2.2 常量和变量 2.2.1 常量:指在程序运行期间其值不发生变化的量。 两种形式: 直接常量;符号常量 1 直接常量 例: "欢迎使用Visual Basic" 字符串常量 数值型常量 True 布尔型常量 #11/10/2001# 日期型常量 2 符号常量 格式: Const <常量名> [As <类型>]=<表达式>
16
例: Const Pi = Const Max As Integer = 9 Const BirthDate = #1/1/01# Const MyString = "friend" ' 用逗号分隔多个常量声明 Const Pi = 3.14, Max = 9, MyStr="Hello" ' 用先前定义过的常量定义新常量 使用: 在程序中引用 如: AREA=Pi*R^2 在程序中不可修改 如: Pi=3.14
17
变量 1. 什么是变量? 一个有名称的内存单元称为变量。 … 5 A 程序执行期间,用变量临时存储数值。 变量的值可以发生变化。 每个变量都有名称和数据类型。
18
2. 变量的命名遵循标识符的命名规则,即 第一个字符必须是字母 长度不超过255个字符 不可以包含小数点或者内嵌的类型声明字符 不能使用关键字 不能与过程名或符号常量同名 例: Student1 MyName intMax strName 不区分大小写;变量名应便于识别、记忆
19
3. 变量的声明 (1) 显式声明 格式: Dim|Private|Public| Static <变量名> [As <类型>] 说明: Dim: 在窗体模块、标准模块或过程中声明变量。 Private: 在窗体模块或标准模块中声明变量,使变量仅在该模块中有效。 Public: 在标准模块中声明全局变量,使变量在整个应用程序中有效。 Static: 在过程中定义静态变量,即使该过程结束,也仍然保留变量的值。
20
例: Dim Sum As Long Dim Address As String Dim No As String * 8 Private b As Integer Dim Num, Total As Integer ' Num为可变类型 Public Average As Single Static A As Long (2) 隐式声明 可变类型。易出错、浪费空间 (3) 强制显式声明 在模块的声明段中使用语句: Option Explicit 如果设置: 工具→选项→编辑器→要求变量声明 则在后续模块中自动插入Option Explicit
21
例: Static的作用。 设在窗体中放置按钮C1 Private Sub C1_Click() Static a As Integer a = a + 10 Print a End Sub Private Sub C1_Click() Dim a As Integer a = a + 10 Print a End Sub 运行时,多次单击命令按钮C1, 比较以上两个事件过程的执行效果
22
2.3 运算符表达式 操作数: 常量、变量、函数、对象 运算符: 圆括号 算术运算符(算术表达式) 字符串运算符(字符串表达式)
2.3 运算符表达式 操作数: 常量、变量、函数、对象 运算符: 圆括号 算术运算符(算术表达式) 字符串运算符(字符串表达式) 关系运算符(关系表达式) 布尔运算符(布尔表达式)
23
1 算术运算符与算术表达式 书 写: 一条线、无[ ] 、无{ } 优先级 运算符 运算 示例 1 ^ 乘方 3^2 2 - 取负 -9 3
1 算术运算符与算术表达式 优先级 运算符 运算 示例 1 ^ 乘方 3^2 2 - 取负 -9 3 * 乘法 3*5 / 浮点除法 10/3 4 \ 整数除法 5 Mod 取模 10 mod 3 6 + 加法 2+3 减法 2-3 书 写: 一条线、无[ ] 、无{ }
24
1. 乘方运算 例: 10^ 的平方,结果为100 10^(-2) 的平方的倒数,结果为0.01 2. 整数除法 例: 10\ 结果为2 25.68\ 先四舍五入再整除,结果为3 3. 取模运算 例: 10 Mod 结果为2 25.68 Mod 先四舍五入再求余数,结果为5 11 Mod – 结果为3 -11 Mod 结果为-1 -11 Mod 结果为-2 结果符号同第一个操作数
25
2 字符串运算符 字符串运算符有两个: & + &:自动将两侧的操作数作为字符进行连接
2 字符串运算符 字符串运算符有两个: & + &:自动将两侧的操作数作为字符进行连接 例: "Hello" & " World" 结果为"Hello World" "Check" & 结果为"Check123" 123 & 结果为"123456" "123" & 结果为"123456" +:仅当两侧操作数都为字符串时才做字符串连接 结果为579 "123" 结果为579 "123" + "456" 结果为"123456" "Check" 错误
26
3 关系运算符 1. 关系运算符(比较运算符) <(小于) <=(小于或等于) >(大于) >=(大于或等于)
3 关系运算符 1. 关系运算符(比较运算符) <(小于) <=(小于或等于) >(大于) >=(大于或等于) =(等于) <>(不等于) 2. 关系表达式: <表达式1> <比较运算符> <表达式2> 例:X > Y+Z A >= 5 StudName <> "Shelly"
27
3. 运算规则 数值比较 按数值大小 字符串比较 根据当前的比较方式从左开始逐个比较,按其ASCII码值进行比较 。 典型的二进制排序顺序如下: " "<"0"<"1"<……<"9" <"A"<"B"<…… < "Z" <"a"<"b"<……<"z" 日期数据比较 将日期看成“yyyymmdd”的8位整数,按数值大小比较。
28
数值型与可以转换为数值型的数据比较 按数值大小 汉字字符按区位顺序比较。
29
4. 比较结果: True False 例: 45 < 结果为 False 45 = 结果为True 4 <> 结果为True "abc" > "cdf" 结果为False "for" < "fortran" 结果为True
30
4 逻辑运算符 1. 逻辑运算符: Not And Or 2. 逻辑表达式:
4 逻辑运算符 1. 逻辑运算符: Not And Or 2. 逻辑表达式: <关系表达式1> <布尔运算符> <关系表达式2> 3. 优先级: Not→And→Or 例: A = 10: B = 8: C = 6。 Not (A > B) 结果为 False Not (B > A) 结果为True A > B And B > C 结果为True B > A And B > C 结果为False A > B Or B > C 结果为True B > A Or B > C 结果为True A < B Or B= C 结果为False
31
5 表达式的运算顺序 ( ) →函数运算→算术运算→关系运算→布尔运算 例:设a=3,b=5,c=-1,d=7,求以下表达式的值。
5 表达式的运算顺序 ( ) →函数运算→算术运算→关系运算→布尔运算 例:设a=3,b=5,c=-1,d=7,求以下表达式的值。 a + b > c + d And a >= 5 Or Not c > 0 Or d < 0 ①8 ②6 ④False ⑤ False ⑥False ③True ⑦True ⑧ False ⑨ True ⑩True
32
2.4 函数 内部函数 函数分类 用户自定义函数 函数形式: 函数名[(<参数表>)] 参数:常量、变量或表达式。
2.4 函数 函数分类 内部函数 用户自定义函数 函数形式: 函数名[(<参数表>)] 参数:常量、变量或表达式。 若有多个参数,参数之间以逗号分隔。 函数值:也叫“返回值” 函数的使用: 函数在表达式中被调用。
33
1 数学函数 例: (1)fix(x)舍去x的小数部分 Fix(45.67) 结果为45 Fix(-2.89) 结果为-2
1 数学函数 例: (1)fix(x)舍去x的小数部分 Fix(45.67) 结果为45 Fix(-2.89) 结果为-2 (2)int(x)取不大于x的最大整数 Int(45.67) 结果为45 Int(-2.89) 结果为-3 (3)abs(x)求x的绝对值 Abs(-4) 结果为4
34
(4)log(x)求以e为底x为指数的值 Log(10) 结果为 (5)sgn(x)求x的符号代码,x为正数时函数值为1,x为0时函数值为0,x为负数时函数值为-1 Sgn(3) 结果为1 Sgn(-6) 结果为-1 Sgn(0) 结果为0
35
2 日期和时间函数 返回系统的日期和时间、或返回指定日期和时间的一部分。 Now:返回系统日期和时间。 Date:返回系统日期。
Time:返回系统时间。 Day(d):返回参数d中指定的日期是月份中的第几天。 WeekDay(d):返回参数d中指定的日期是星期几。 Month(d):返回参数d中指定日期的月份。 Year(d):返回年份。
36
Hour(d):返回小时(0~23)。 Minute(d):返回分钟(0~59)。 Second(d):返回秒(0~59)。 Timer:返回从午夜开始到现在经过的秒数。
37
3 字符串函数 例: (1)ltrim(字符串)删除字符串左端空格字符 LTrim("∪∪∪ABC") 结果为"ABC"
3 字符串函数 例: (1)ltrim(字符串)删除字符串左端空格字符 LTrim("∪∪∪ABC") 结果为"ABC" 表示空格 (2)rtrim(字符串)删除字符串右端空格字符 RTrim("ABC∪∪∪") 结果为"ABC" (3)trim(字符串)删除字符串两端空格字符 Trim("∪∪∪ABC∪∪∪") 结果为"ABC" (4)left(字符串,n)截取字符串左端n个字符 Left("ABCDE",2) 结果为"AB" (5)right(字符串,n)截取字符串右端n个字符 Right("ABCDE",2) 结果为"DE" (6)mid(字符串,m,n)截取字符串中间从m个字符起的n个字符 Mid("ABCDE",2,3) 结果为"BCD" Mid("ABCDE",2,6) 结果为"BCDE"
38
(7)len(字符串)返回字符串中所包含的字符个数
Len("ABCDE") 结果为5 (8)string(n,字符串)生成n个字符串首字母 String(3,"ABC") 结果为"AAA" String(3,65) 结果为“AAA” (9)instr(字符串1,字符串2)字符串2首字母在字符串1中的位置 InStr("ABCDECDE","DE") 结果为4 InStr(5,"ABCDECDE","DE") 结果为7 (10)ucase(字符串)把字符串中的字母转换为大写字母 UCase("Abc") 结果为"ABC" (11)lcase(字符串)把字符串中的字母转换为小写字母 LCase("ABc") 结果为"abc"
39
4 转换函数 例: (1)asc(字符串)求字符串中首字符的ASCII码 Asc("A") 结果为65 Asc("ABC") 结果为65
4 转换函数 例: (1)asc(字符串)求字符串中首字符的ASCII码 Asc("A") 结果为65 Asc("ABC") 结果为65 (2)chr(表达式)求以表达式值为ASCII码的对应字符 Chr(65) 结果为"A" (3)str(数值表达式)把数值表达式的值转换为对应的字符串 Str(123) 结果为"∪123" Str(-123) 结果为"-123"
40
(4)val(字符串)把字符串中的数字转换为对应的数值
Val("123AB") 结果为123 Val(".123AB") 结果为.123 Val("a123AB") 结果为0 Val("12E2ABC") 结果为1200
41
(1)hex(x)十进制转换为对应的十六进制
Hex(27) 结果为"1B" Hex(45.7) 结果为"2E" (2)oct(x)十进制转换为对应的八进制 Oct(27) 结果为"33" Oct(45.7) 结果为"56" (3)cint(数值表达式)把数值表达式的值转换为整型,小数四舍五入 CInt(5.3) 结果为5 CInt(-5.7) 结果为-6 CInt( ) 结果为32767 CInt( ) 溢出错误 CInt(0.5) 结果为0
42
(4)clng(数值表达式)把数值表达式值转换为长整型,小数四舍五入
(5)csng(数值表达式)把数值表达式值转换为单精度型 CSng( ) 结果为 (6)cdbl(数值表达式)把数值表达式的值转换为双精度型 CDbl( ) 结果为
43
(7)ccur(数值表达式)把数值表达式值转换为货币型,小数四舍五入
CBool(5.8 * 4) 结果为True CBool(-5.8) 结果为True CBool(0) 结果为False CBool("12") 结果为True CBool("0") 结果为False CBool("abc") 出错
44
5 格式输出函数 例: Format(123.45, " ") 结果为" " Format(123.45, "0.0") 结果为"123.5" Format(123.45, "####.###") 结果为"123.45" Format(123.45, "#.#") 结果为"123.5" Format(0.123, ".##") 结果为".12" Format(0.123, "0.##") 结果为"0.12" Format("HELLO", "<") 结果为"hello" Format("This is it", ">") 结果为"THIS IS IT" 注: 经Format函数格式化后的结果为字符串类型 例: Format(123) + Format(456) 结果为"123456" 区别: Str(123) + Str(456) 结果为"∪123∪456"
45
6 随机函数 1. 随机函数 Rnd[(x)] 产生[0,1)之间的单精度随机数。 x<0: 每次使用x作为随机数种子得到相同的结果。
6 随机函数 1. 随机函数 Rnd[(x)] 产生[0,1)之间的单精度随机数。 x<0: 每次使用x作为随机数种子得到相同的结果。 x>0: 以上一个随机数作种子,产生序列中的下一个随机数。 x=0: 产生与最近生成的随机数相同的数。 省略x: 同x>0 2. Randomize语句 初始化随机数发生器,格式: Randomize[n] n:种子,省略时以系统时间作为种子
46
生成[a,b] 范围内的随机整数 Int(( b-a+1) *Rnd +a) 例:生成[1,99]之间的随机整数的表达式为: Int(99*Rnd+1) 例:生成(1,99)之间的随机整数的表达式为: Int(97*Rnd+2)
47
本章小结 1. 数据类型 字符类型、数值类型、布尔类型、日期类型 2. 常量变量 直接常量、符号常量、变量 3. 运算符表达式
算术运算、关系运算、逻辑运算 4. 函数 数学函数、字符串函数、转换函数、日期函数和随机函数
Similar presentations