470 likes | 607 Views
第 2 ç« . VB è¯è¨€åŸºç¡€. æœ¬ç« è¦ç‚¹: æ•°æ®ç±»åž‹ 常é‡å’Œå˜é‡ è¿ç®—ç¬¦è¡¨è¾¾å¼ å‡½æ•°. 基本数æ®ç±»åž‹. 分为. 用户自定义的数æ®ç±»åž‹. 2.1 æ•°æ®ç±»åž‹. 基本数æ®ç±»åž‹ï¼š å—符型 数值型 布尔型 日期型 对象型 å¯å˜ç±»åž‹. 1 å—符型数æ®( String). ç”±åŒå¼•å·""括起æ¥çš„ä¸€ä¸²ç¬¦å· ä¾‹: " abc " " ABC " " 计算机 " "12.34" "3+2" ""(空串)
E N D
第2章 • VB语言基础 • 本章要点: • 数据类型 • 常量和变量 • 运算符表达式 • 函数
基本数据类型 分为 用户自定义的数据类型 2.1 数据类型 • 基本数据类型: • 字符型 • 数值型 • 布尔型 • 日期型 • 对象型 • 可变类型
1 字符型数据(String) • 由双引号""括起来的一串符号 • 例: "abc" "ABC" "计算机" • "12.34" "3+2" ""(空串) • (1)定长字符串:在程序执行过程中长度始终保持不变的字符串,字符长度不超过65535。 • (2)变长字符串:长度不固定的字符串,随着对字符串变量赋予新的值,其长度可增可减。
2 数值型数据 • Integer(整型) • Long(长整型) • Single(单精度浮点型) • Double(双精度浮点型)
(1) 整型(Integer) • 以2个字节存储 • 十进制表示: 由+ -号,0~9 组成 • 范围: -32768~32767 • 八进制表示: 以&O开头,由 0~7组成 • 范围: &O0 ~&O177777 • 十六进制表示: 以&H开头,由 0~9,A~F组成 • 范围: &H0 ~&HFFFF • 例: -325 0 56 +100 • &O456 &O36 • &H1AC &H38 &H2
(2) 长整型(Long) • 以4个字节存储 • 十进制表示: 由+ -号,0~9 组成 • 范围: -2147483648~+2147483647 • 八进制表示: 以&O开头,以&结束 • 范围: &O0& ~&O37777777777& • 十六进制表示: 以&H开头,以&结束 • 范围: &H0& ~&HFFFFFFFF& • 例: 453466 -34568 +1000000 • &O456&&O36& • &H1AC&&H38&&H2&
(3) 单精度浮点型(Single) • 以4个字节存储,可以精确到7位十进制数 • 例: 3.234E+2 表示3.234102 • -28E9 表示-28109 • 4.56E-17 表示4.5610-17 • (4) 双精度浮点型(Double) • 以8个字节存储,可以精确到16位十进制数 • 3.234D+2 表示3.234102 • -28D9 表示-28109 • 4.56D-17 表示4.5610-17
3 货币类型(Currency) • 以8个字节存储,用于表示定点数,其小数点左边有15位数字,右边有4位数字。 4. 字节型(Byte) 用一个字节存储数据,其取值范围为0~255。
5 布尔型数据(Boolean) • 用于表示某个条件的成立或不成立。 • 只有True和False两个值
6 日期型数据(Date) • 用于表示日期和时间 • 格式: #……# • VB接受许多种日期时间格式 • 例: 下面的 Date/Time 值全部有效。 • #3-6-93 13:20# • #March 27,1993 1:20am# • #Apr-2-93# • #14 April 1993# • #12/18/1999#
7 通用类型(Variant) • 也称变体类型,是一种通用的、可变的数据类型,它可以表示上述任何一种数据类型。 • 对象型数据(Object) • 以4个字节存储,用于引用程序中的对象。
2.1.2 用户自定义类型 • 是用户自己定义的类型,这种类型可以包含多个基本类型。使用Type语句定义。 • Type语句格式: • [Private|Public] Type <用户自定义类型名> • <元素名>[(下标)] As <类型> • … • End Type
说明: • 1)<用户自定义类型名>、<元素名>应遵循标识符的命名规则。<类型>可以是Visual Basic系统提供的基本数据类型或已声明的用户自定义类型。缺省[Private|Public]选项时,默认是Public。 • 2)用户自定义类型必须在窗体模块或标准模块的通用声明段进行声明。在窗体模块中定义用户自定义类型时必须使用Private关键字。 • 3)如果用户自定义类型的元素为数组,则需要使用<下标>参数。 • 4)在使用用户自定义类型前,必须先声明用户自定义类型的变量。
例:定义一个Students数据类型,该类型中的每一个数又包含了学生的系、班级、姓名、年龄信息。定义格式为:例:定义一个Students数据类型,该类型中的每一个数又包含了学生的系、班级、姓名、年龄信息。定义格式为: • Private TypeStudents • Dept As String * 20 ' 系 • ClassNo As String * 10 ' 班级 • Name As String ' 姓名 • Age As Integer ' 年龄 • End Type
2.2 常量和变量 • 2.2.1常量:指在程序运行期间其值不发生变化的量。 两种形式: 直接常量;符号常量 • 1 直接常量 • 例: "欢迎使用Visual Basic" 字符串常量 • 12345 数值型常量 • True 布尔型常量 • #11/10/2001# 日期型常量 • 2 符号常量 • 格式:Const <常量名> [As<类型>]=<表达式>
例: Const Pi = 3.14159 • 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
… 5 A … 2.2.2 变量 1. 什么是变量? • 一个有名称的内存单元称为变量。 • 程序执行期间,用变量临时存储数值。 • 变量的值可以发生变化。 • 每个变量都有名称和数据类型。
第一个字符必须是字母 • 长度不超过255个字符 • 不可以包含小数点或者内嵌的类型声明字符 • 不能使用关键字 • 不能与过程名或符号常量同名 • 例: Student1 MyName intMax strName 不区分大小写;变量名应便于识别、记忆 • 2. 变量的命名遵循标识符的命名规则,即
3. 变量的声明 • (1) 显式声明 • 格式: • Dim|Private|Public| Static <变量名> [As <类型>] • 说明: • Dim: 在窗体模块、标准模块或过程中声明变量。 • Private: 在窗体模块或标准模块中声明变量,使变量仅在该模块中有效。 • Public: 在标准模块中声明全局变量,使变量在整个应用程序中有效。 • Static: 在过程中定义静态变量,即使该过程结束,也仍然保留变量的值。
例: 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
例: 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, 比较以上两个事件过程的执行效果
2.3 运算符表达式 • 操作数: 常量、变量、函数、对象 • 运算符: 圆括号 • 算术运算符(算术表达式) • 字符串运算符(字符串表达式) • 关系运算符(关系表达式) • 布尔运算符(布尔表达式)
1 算术运算符与算术表达式 书 写: 一条线、无[ ] 、无{ }
1. 乘方运算 • 例: 10^2 10的平方,结果为100 • 10^(-2) 10的平方的倒数,结果为0.01 • 2. 整数除法 • 例: 10\4 结果为2 • 25.68\6.99 先四舍五入再整除,结果为3 • 3. 取模运算 • 例: 10 Mod 4 结果为2 • 25.68 Mod 6.99 先四舍五入再求余数,结果为5 • 11 Mod – 4 结果为3 • -11 Mod 5 结果为-1 • -11 Mod -3 结果为-2 结果符号同第一个操作数
2 字符串运算符 • 字符串运算符有两个: & + • &:自动将两侧的操作数作为字符进行连接 • 例: "Hello" & " World" 结果为"Hello World" • "Check" & 123 结果为"Check123" • 123 & 456 结果为"123456" • "123" & 456 结果为"123456" • +:仅当两侧操作数都为字符串时才做字符串连接 • 123 + 456 结果为579 • "123" + 456结果为579 • "123" + "456"结果为"123456" • "Check" + 123 错误
3 关系运算符 • 1. 关系运算符(比较运算符) • <(小于) <=(小于或等于) • >(大于) >=(大于或等于) • =(等于) <>(不等于) • 2. 关系表达式: • <表达式1> <比较运算符> <表达式2> • 例:X > Y+Z • A >= 5 • StudName <> "Shelly"
3. 运算规则 • 数值比较 • 按数值大小 • 字符串比较 • 根据当前的比较方式从左开始逐个比较,按其ASCII码值进行比较 。 • 典型的二进制排序顺序如下: • " "<"0"<"1"<……<"9" • <"A"<"B"<…… < "Z" • <"a"<"b"<……<"z" • 日期数据比较 • 将日期看成“yyyymmdd”的8位整数,按数值大小比较。
数值型与可以转换为数值型的数据比较 • 按数值大小 • 汉字字符按区位顺序比较。
4. 比较结果:True False • 例: 45 < 35 结果为 False • 45 = 45 结果为True • 4 <> 3 结果为True • "abc" > "cdf" 结果为False • "for" < "fortran" 结果为True
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
5 表达式的运算顺序 ( ) →函数运算→算术运算→关系运算→布尔运算 例:设a=3,b=5,c=-1,d=7,求以下表达式的值。 a + b > c + d And a >= 5 Or Not c > 0 Or d < 0 ④False ①8 ②6 ⑥False ⑤ False ③True ⑦True ⑧ False ⑨True ⑩True
内部函数 函数分类 用户自定义函数 2.4 函数 • 函数形式: 函数名[(<参数表>)] • 参数:常量、变量或表达式。 • 若有多个参数,参数之间以逗号分隔。 • 函数值:也叫“返回值” • 函数的使用: 函数在表达式中被调用。
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
(4)log(x)求以e为底x为指数的值 • Log(10) 结果为2.30258509299405 • (5)sgn(x)求x的符号代码,x为正数时函数值为1,x为0时函数值为0,x为负数时函数值为-1 • Sgn(3) 结果为1 • Sgn(-6) 结果为-1 • Sgn(0) 结果为0
2 日期和时间函数 返回系统的日期和时间、或返回指定日期和时间的一部分。 • Now:返回系统日期和时间。 • Date:返回系统日期。 • Time:返回系统时间。 • Day(d):返回参数d中指定的日期是月份中的第几天。 • WeekDay(d):返回参数d中指定的日期是星期几。 • Month(d):返回参数d中指定日期的月份。 • Year(d):返回年份。
Hour(d):返回小时(0~23)。 • Minute(d):返回分钟(0~59)。 • Second(d):返回秒(0~59)。 • Timer:返回从午夜开始到现在经过的秒数。
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"
(7)len(字符串)返回字符串中所包含的字符个数(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"
4 转换函数 • 例: • (1)asc(字符串)求字符串中首字符的ASCII码 • Asc("A") 结果为65 • Asc("ABC") 结果为65 • (2)chr(表达式)求以表达式值为ASCII码的对应字符 • Chr(65) 结果为"A" • (3)str(数值表达式)把数值表达式的值转换为对应的字符串 • Str(123) 结果为"∪123" • Str(-123) 结果为"-123"
(4)val(字符串)把字符串中的数字转换为对应的数值(4)val(字符串)把字符串中的数字转换为对应的数值 • Val("123") 结果为123 • Val("123AB") 结果为123 • Val(".123AB") 结果为.123 • Val("a123AB") 结果为0 • Val("12E2ABC") 结果为1200
(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(32766.6) 结果为32767 • CInt(32767.8) 溢出错误 • CInt(0.5) 结果为0
(4)clng(数值表达式)把数值表达式值转换为长整型,小数四舍五入(4)clng(数值表达式)把数值表达式值转换为长整型,小数四舍五入 • CLng(10.5) 结果为10 • (5)csng(数值表达式)把数值表达式值转换为单精度型 • CSng(123.56789) 结果为123.5679 • (6)cdbl(数值表达式)把数值表达式的值转换为双精度型 • CDbl(123.56789) 结果为123.56789
(7)ccur(数值表达式)把数值表达式值转换为货币型,小数四舍五入 • CCur(123.56789) 结果为123.5679 • CBool(5.8 * 4) 结果为True • CBool(-5.8) 结果为True • CBool(0) 结果为False • CBool("12") 结果为True • CBool("0") 结果为False • CBool("abc") 出错
5 格式输出函数 • 例: Format(123.45, "0000.000") 结果为"0123.450" • 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"
6 随机函数 • 1. 随机函数 • Rnd[(x)]产生[0,1)之间的单精度随机数。 • x<0: 每次使用x作为随机数种子得到相同的结果。 • x>0: 以上一个随机数作种子,产生序列中的下一个随机数。 • x=0: 产生与最近生成的随机数相同的数。 • 省略x: 同x>0 • 2. Randomize语句 • 初始化随机数发生器,格式: • Randomize[n] • n:种子,省略时以系统时间作为种子
生成[a,b] 范围内的随机整数 • Int(( b-a+1) *Rnd +a) • 例:生成[1,99]之间的随机整数的表达式为: • Int(99*Rnd+1) • 例:生成(1,99)之间的随机整数的表达式为: • Int(97*Rnd+2)
本章小结 • 1. 数据类型 • 字符类型、数值类型、布尔类型、日期类型 • 2. 常量变量 直接常量、符号常量、变量 • 3. 运算符表达式 • 算术运算、关系运算、逻辑运算 • 4. 函数 • 数学函数、字符串函数、转换函数、日期函数和随机函数