




已阅读5页,还剩74页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本章内容及要求: 4.1 数据类型 4.2 常量和变量 4.3 变量的作用域 4.4 常用内部函数 4.5 字符处理与字符串函数 4.6 运算符与表达式 数据是信息在计算机内的表现形式,也是程序处 理的对象。VB提供了系统定义的基本数据类型,还 允许用户定义自己的数据类型。 一、基本数据类型 1.字符串型String 字符串是一个字符序列,由ASCII字符组成。字符串通常 要用双引号括起来。 例如:“Hello!” “湖南省衡阳市“ “8888” “*” “” 空字符串 “ “ 有一个空格的字符串 若字符串中有双引号,例如ABD“XYZ,则用连续两个双引 号表示,即:“ABD“XYZ“ VB中的字符串分为两种:变长字符串和定长字符 串。 变长字符串的长度是不确定的,可以从0231(约 21亿)个字符。 定长字符串含有确定个数的字符,最大长度不超 过216(65535)个字符。 2.数值型 数值型数据分为整型数和浮点数两类。 (1)整型数 整型数是不带小数点和指数符号的数,在机器内部以二进 制补码形式表示。正数的补码和它的二进制形式(即源码)相同 ;负数的补码为该数的绝对值的二进制形式取反加1。 例如,整型数4,-4分别以下面的形式存放:(最高位为符 号位,其中0为正,1为负) 4 00000000 00000100 -4 11111111 11111100 整数的运算速度快,而且比其他数据类型占据的内存少。 整型数又分为整数和长整数: u整数Integer 以2个字节(16位)的二进制数存储,取值范围为 -32,76832,767。 u长整数Long 以4个字节(32位)的二进制数存储,取值范围为 -2,147,483,6482,147,483,647。 二进制十进制 00000000 000000000 00000000 000000011 00000000 000000102 00000000 000000113 01111111 1111111132767 10000000 00000000-32768 10000000 00000001-32767 10000000 00000010-32766 11111111 11111110-2 11111111 11111111-1 思考:为什么16位整数Integer的取值范围为-32,76832,767 ? 注意:16位整数Integer如果超出了这个取值范围 (-32,76832,767),数据便会溢出。请看下面的代 码: Private Sub Form_Load() Dim a As Integer a = 32767 a = a + 1 MsgBox a End Sub (2)浮点数 浮点数也称实数,是带有小数部分的数值。分为单精度浮点数 和双精度浮点数。 u单精度Single 以4个字节(32位)存储,可以精确到7位十进制数。其中符号占 1位,指数占8位,其余23位表示尾数,还有一个附加的隐含位 。其负数的取值范围为-3.402823E+38 -1.401298E-45,正 数的取值范围为1.401298E-45 3.402823E+38。 表示形式为: n.nEm 其中n.n是尾数,m是指数(以10为 底的幂) 例:-123.4E-3或-123.4e-3,相当于-0.1234 1.2345E3或1.2345e3,相当于1234.5 u双精度Double 以8个字节(64位)存储,可以精确到15到16位十进制数。其 中符号占1位,指数占11位,其余52位表示尾数,还有一个 附加的隐含位。 表示形式为: n.nDm 其中n.n是尾数,m是指数(以 10为底的幂) 例:123.4567D3或123.4567d+3,相当于123456.7 (3)货币型Currency 货币数据类型通常用于表示钱款。以8个字节(64位)存储,精 确到小数点后面4位(小数点前面有15位)。在小数点后4位 以后的数字将被舍去。其取值范围为-922,337,203,685, 477.5808 -922,337,203,685,477.5807 浮点数中的小数点是“浮动”的,小数点可以出现在数的任何 位置,而货币型数据的小数点是固定的,因此称为定点数据类 型。 (4)字节型Byte 以1个字节(8位)的无符号二进制数存储,其取值范围为 0255。 注:在实际应用中,应根据需要使用数据类型。能用整型 就不要用浮点型或货币型;如果要求的精度不高,则应使用单 精度变量。这样不仅节省内存空间,而且可以提高处理速度。 3.布尔型Boolean 布尔型数据是一个逻辑值,用2个字节存储,它只取两个 值:True/False。布尔型变量的默认值为False。 将逻辑数据转换成整型时:True为-1,False为0;其它数 据转换成逻辑数据时:非0为True, 0为False。 例如,下面的代码定义一个布尔型变量,并输出该变量: Dim mybln As Boolean mybln=3 MsgBox mybln 4.日期型Date 日期型数据占用8个字节,以浮点数形式存储。小数点左 边的数值表示日期(距离1899-12-30的天数),小数点右边的数 值表示时间。 日期型数据的日期表示范围:100年1月1日9999年12 月31日,时间表示范围:0:00:0023:59:59。日期常数必须用 “#”符号括起来。 例如:下面的几种日期型数据的格式都是合法的: #9/1/2009# 或 #2009-09-01# #September 1,2009# #08:30:00 AM# #2002-5-4 14:30:00 PM# 5.变体型Variant 变体数据类型是一种可变的数据类型,可以表示任何值, 包括数值、字符串、日期/时间等。 当变体数据为数值时,以16个字节存储,最大可达 Double的取值范围;当变体数据为字符时,以22字节+字符串 长,与变长String有相同的取值范围 。 6.对象型Object 对象型数据作为32位(4个字节)地址来存储,该地址可 以引用程序中的任何对象。 7.Decimal数据类型 Decimal数据以12个字节存储,最多支持29个有效数位, 在内存中的表示形式比浮点数更精确。适用于要求使用大量有 效的整数及小数位数,并且不能容忍舍入误差的财务计算。 Decimal数据类型只能在变体类型(Variant)中使用,不能 把一个变量声明为Decimal类型。 二、用户定义的数据类型 用户自定义类型,也称为记录类型,通过Type 语句来实现,其语法格式如下: Type 数据类型名 元素名 As 类型名 元素名 As 类型名 End Type 例如: 对于一个学生的“学号”、“姓名”、“性别”、“年龄” 、“入学成绩”等数据,为了处理数据的方便,常常需要把这 些数据定义成一个新的数据类型(如Student类型) Type Student Xh As String Xm As String Xb As String Nl As Integer Score As Single End Type 二、用户定义的数据类型 使用Type语句,应注意以下几点: 1.记录类型的定义必须放在模块(包括标准模块和窗体模 块)的声明部分,在使用记录类型之前,必须用Type语句加 以定义。 2.一般情况下,记录类型在标准模块中定义,其变量可以 出现在工程的任何地方。当在标准模块中定义时,关键字 Type前可以有Public(默认)或Private;而如果在窗体模 块中定义,则必须在前面加上关键字Private。 3.在记录类型中不能使用动态数组。 下面的代码声明了一个Student类型变量st,然后为 其各个元素赋初值,最后输出: Private Sub Form_Load() Dim st As Student st.Xh = “20050001“ st.Xm = “王一“ st.Xb = “男“ st.Nl = 17 st.Score = 92.5 MsgBox “学号:“ Total End Sub 每个变量都有它的作用范围,即作用域。根据变 量在VB应用程序中的定义位置和所使用的定义语句 的不同,可以分为局部变量、模块变量和全局变量。 VB应用程序的构成 在过程(事件过程或通用过程)内定义的变量叫 做局部变量,其作用域是它所在的过程。因此,在不 同的过程中可以定义相同名字的局部变量。 局部变量在过程内用Dim、Static定义,例如: Sub Command1_Click() Dim Tempnum As Integer Static Total As Double End Sub 一、局部变量Local 模块变量包括窗体变量和标准模块变量。 窗体变量可用于该窗体内的所有过程(事件过程 或通用过程)。当同一窗体内的不同过程使用相同的 变量时,必须定义窗体层变量。 窗体层变量不能隐式声明。方法是:在程序代码 窗口的“对象”框中选择“通用”,并在“过程”框中选择“ 声明”。 标准模块中模块层变量的声明和使用与窗体层变 量类似。 二、模块变量Module 默认情况下,模块级变量对该模块中的所有过程 都是可见的,但对其他模块不可见。模块级变量在模 块的声明部分用Private、Dim声明。例如: Private intTemp As Integer 或 Dim intTemp As Integer 全局变量的作用域最大,可以在工程的每个模块 、每个过程中使用。全局变量必须在标准模块的声明 部分中声明,不能在过程或窗体模块中声明;并且, 全局变量必须用Public或Global语句声明,不能用 Dim语句声明。例如: Public intNumber As Integer 三、全局变量Public 对于局部变量来说,可以不用Dim或Static定义,而是在 需要时直接给出变量名(不建议)。 默认声明只适用于局部变量,模块级变量和全局变量必须 用Dim或Public语句显式声明。 默认声明局部变量,有可能使程序出现无法预料的结果, 而且较难查出错误。为了安全起见,最好能显式地声明程序中 使用的所有变量。 下面通过实例说明。 四、默认声明(隐式声明) VB提供了上百种内部函数,要求掌握表4.4中常用函 数的功能及使用:数学函数、转换函数、日期和时间函 数、随机数函数。 函数调用方法: 函数名(参数列表) 有参函数 函数名 无参函数 说明: (1) 使用内部函数要注意参数的个数及其参数的数据类 型; (2) 要注意函数的定义域(自变量或参数的取值范围) ; (3)要注意函数的值域。 常用的数学函数有: Sin(x) Cos(x)Tan(x) Atn(x) Abs(x) Sgn(x) Sqr(x)Exp(x) 说明: (1)在三角函数中的自变量是以弧度为单位。 如:sin300 sin(3.14159/180*30) (2) sqr(x)函数要求自变量 x=0 (3) Exp(x) 函数要求自变量x不能超过709.782712893,否 则函数的值就会超出实数在计算机中的表示 范围,导致错误 发生。 一、数学函数 常用转换函数见表4.4,相关说明如下: (1)要区别两个取整函数int()和fix() Fix(N)为截断取整,即去掉小数后的数。 Int(N)为不大于N的最大整数。 例如: Fix(9.59) =9, Int(9.59) =9 Fix(-9.59) =-9, Int(-9.59) =-10 (2)Asc(“Abcd“) 值为: 65 (只取首字母的AscII值) (3)Val(“abc123”) 值为:0, Val(“1.2sa10“) 值为1.2 注意: Val( )函数只将最前面的数字字符转换为数值。 二、转换函数 1. Date、Now、Time函数 Date函数:返回当前系统日期。语法: Date Now函数:返回当前系统日期和时间。语法: Now Time函数:返回当前系统时间。语法: Time 2. Year、Day、Month函数(年、月、日) Year函数:返回年份。语法:Year(Now) Day函数:返回年份。语法: Day(Now) Month函数:返回年份。语法: Month(Now) 3. Hour、Minute、Second函数(时、分、秒) Hour函数:返回小时。语法: Hour(Now) Minute函数:返回分钟。语法: Minute(Now) Second函数:返回秒。语法: Second(Now) 三、日期和时间函数 语法:Rnd(number) Rnd函数可以省略参数和括号。返回0 1)(即 包括0,但不包括1)之间的单精度随机数。 四、随机数函数Rnd 如果number的值Rnd生成 小于0 每次都使用number作为随机数种子得到相同的结果 大于0序列中的下一个随机数 等于0最近生成的数 默认序列中的下一个随机数 若要产生1100的随机整数,则可通过下面的表 达式来实现: Int(Rnd*100)+1 包括1和100 Int(Rnd*99)+1 包括1,但不包括100 思考:怎样产生N,M区间的随机数? Int(Rnd *(M-N+1)+N 当应用程序不断地重复使用随机数时,同一序列的随机数 会反复出现,用Randomize语句可以消除这种情况,其格式 为: Randomize ( x ) 功能:初始化随机数生成器。如省略参数,则用系统计时 器返回的值作为新的种子值。 例如:下段程序每次运行,将产生不同序列的20个10, 99之间的随机整数。 Private Sub Form_click() Randomize For i = 1 To 20 Print Int(Rnd * 90) + 10; Next i Print End Sub ANSI方式:早前的版本采用。西文字符用一个字节编码, 中文字符用两个字节编码。一个中文字符相当于两个西文字符 。 UniCode方式:4.0以后的版本采用。中西文字符统一编码 ,一个英文字符或一个汉字都看作一个字符,均用两个字节编 码。 Print Len(“BASIC程序设计“) 9 Print LenB(“BASIC程序设计”) 18 注:VB6.0中,LenB 返回的是用于存储字符串的字节数 ,而不是返回字符串中字符的数量。 一、VB的字符处理机制 为了实现ANSI与UniCode之间的转换,VB提供了一个转 换函数StrConv,格式如下: 新字符串=StrConv(待转换字符串,转换格式) 其中,“转换格式”可以取值为: vbUnicode(值为64) 将ANSI转换为 UniCode vbFromUnicode(值为128) 将UniCode转换为 ANSI 例4.1 编写程序,测试StrConv函数功能。 一、VB的字符处理机制 1.去空格函数 Ltrim$(字符串):去除字符串左边的空白字符;$可以省略 。 RTrim$(字符串) :去除字符串右边的空白字符; Trim$(字符串):去除字符串两边的空白字符。 例如: a$ = “ Good Morning “ b$ = LTrim$(a$) c$ = RTrim$(b$) Print b$; c$; “ABC“ 输出结果:Good Morning Good MorningABC 二、字符串函数 2.字符串截取函数 左部截取:Left$(字符串,n) 返回字符串的前n个字符。例:Left$(“ABCDEF”,4) 中部截取:Mid$(字符串, p , n ) 从第p个字符开始,向后截取n个字符。n可以省略,此时, 将从第p个字符开始向后截取到字符串的末尾。 例如:Mid$(“ABCDEFGHIJK”,3,4) 右部截取:Right$(字符串,n) 返回字符串的最后n个字符。例:Right$(“ABCDEFGHIJK”,4) 二、字符串函数 3.字符串长度测试函数 格式:Len(字符串):返回字符串的长度(长整型值) 。 Len(变量名):返回存储变量所需的字节数。 例如: Len(“ABCDEFGHIJK”) 返回11 Len(testvar%) 返回2 Len(testvar!) 返回4 Len(testvar#) 返回8 二、字符串函数 4. String$函数 格式:String$(n,ASCII码) 或 String$(n,字符串) 当为ASCII码时,返回由该ASCII码对应的n个字符;当为字 符串时,返回由第一个字符组成的n个字符。 例如: a$ = String$(5, 65) b$ = String$(5, “-“) c$ = String$(5, “abcd“) Print a$; b$; c$ 输出结果: AAAAA-aaaaa 二、字符串函数 5.空格函数 格式:Space$(n) 返回n个空格。 例如: a$ = “a“ + Space(4) + “b“ 输出结果: a b 二、字符串函数 6.字符串匹配函数 格式:InStr( 首字符位置 , 字符串1 , 字符串2 , n ) 该函数在“字符串1”中查找“字符串2”,如果找到,就返回“ 字符串2”的第一个字符在“字符串1”中的位置。“字符串1”的第 一个字符的位置为1。 例如: a$ = “Microsoft Visual Basic“ x = InStr(a$, “Visual“) Print x 输出结果: 11 二、字符串函数 格式:InStr( 首字符位置 , 字符串1 , 字符串2 , n ) 说明: “字符串2”的长度必须小于65,535个字符; InStr的返回值是一个长整型数。在不同的条件下,函数的 返回值也不一样(见表4.5)。 “首字符位置”是可选的。如果有,则从该位置开始查找,否 则从起始位置开始查找。 自变量n是可选的,用来指定字符串比较方式。该自变量的 取值可以是0、1或2。 0:进行二进制比较,区分字母的大小写;默认为0。 1:比较时忽略大小写; 2:对数据库中的信息进行比较。 也可以通过语句限定: Option Compare Binary Option Compare Text Option Compare Database 7.字母大小写转换 格式: Ucase$(字符串):小写字母转换为大写字母 Lcase$(字符串) :大写字母转换为小写字母 例如:a$ = “Microsoft Visual Basic“ b$ = UCase$(a$) c$ = LCase$(a$) Print b$, c$ 输出结果: MICROSOFT VISUAL BASIC microsoft visual basic 二、字符串函数 8.插入字符串语句Mid$ 格式:Mid$(字符串 , 位置 , L )=子字符串 该语句把从“字符串”的“位置”开始的字符用“子字符串”代替 。如果含有L自变量,则替换的内容是“子字符串”左部的L个字符 。“位置”和L均为长整型数。 Dim MyString, FirstWord, LastWord, MidWords MyString = “Mid Function Demo” 建立一个字符串。 FirstWord = Mid(MyString, 1, 3) 返回 “Mid“。 LastWord = Mid(MyString, 14, 4) 返回 “Demo“。 MidWords = Mid(MyString, 5) 返回 “Funcion Demo“。 运算是对数据的加工。最基本的运算形式常常用 一些简洁的符号来描述,这些符号称为运算符。被运 算的数据,称为运算量。由运算符和运算量组成表达 式。运算量可以是常量,也可以是变量,还可以是函 数。例如:A+3 , T+Sin(a) , PI*r*r 。 运算符和表达式的类型可以分为以下4种: u算术运算符与算术表达式 u字符运算符与字符表达式 u关系运算符与关系表达式 u逻辑运算符与逻辑表达式 一、算术运算符与算术表达式 运算运算符优先级表达式例子结果 幂1XYa29 取负-2-X-a-3 乘法*3X*Ya*a*a27 浮点除法/3X/Y10/a 3.333333 整数除法4XY10a3 取模Mod5X Mod Y10 Mod a1 加法+6X+Y10+a13 减法-6X-Ya-10-7 (a=3) 1.幂运算 用于计算乘方和方根,运算符为“”。例如: 102结果为100 10-2 结果为0.01 250.5结果为5 8(1/3) 结果为2 注意:幂运算符优先级最高。当指数是一个表达 式时,必须加上括号。 例如,X的Y+Z次方必须写作 X(Y+Z),不能写作XY+Z 。 2. “/”与 “” 浮点除法运算符“/”用来计算两个数或表达式的商 ,并返回相应的浮点数。 例如:3/2的值是1.5。 整数除法运算符“”在运算前把两个运算量四舍五 入转换成整数,然后计算两个运算量的商,并返回结 果的整数部分。 例如:25.636.78的值为。 3.取模运算Mod 取模运算即求余数,在运算前把两个运算量四舍 五入转换成整型数,然后对两个运算量进行除法运算 ,并返回余数(第一个操作数整除第二个操作数的余 数)。例如: 7 Mod 4结果为3 25.68 Mod 6.99先把25.63和6.78转化为 26和7,再求得余数为 4.算术运算符的优先级 运算运算符优先级 幂1 取负-2 乘法*3 浮点除法/3 整数除法4 取模Mod5 加法+6 减法-6 思考与练习 5+10 mod 10 9 / 3 +2 2 步骤: = 5 + 10 mod 10 3 + 4 = 5 + 10 mod 3 + 4 = 5 + 1+ 4 = 10 字符串连接符:“”和“+” “”:用于强制将两个表达式作为字符串连接。 “+” :当连接符两边的表达式都为字符串时,将两个字 符串连接;如果一个是字符串而另一个是数字,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届山东省安丘市红沙沟镇红沙沟中学九年级化学第一学期期中联考试题含解析
- 2026届湖北襄阳五中学实验中学化学九上期中教学质量检测试题含解析
- 2025年教师资格证考试(高中化学)教育知识与能力专项试题
- 2026届北京市通州区九级化学九年级第一学期期末达标检测模拟试题含解析
- 矿山开采项目地质勘查与施工承包合同规范
- 离婚后财产分配及子女监护权调整协议模板
- 离婚后房产及子女抚养权分割补充协议
- 二手房租赁合同中租赁房屋租赁权转让及条件合同
- 专利法考试题目及答案
- 2026届安徽省寿县化学九上期末预测试题含解析
- 面馆员工制度管理制度
- 初中英语仁爱版单词表(按单元顺序)(七至九年级全6册)
- 手术室急危重患者抢救与配合
- 临床用血知识培训课件
- KPI绩效考核管理办法
- 2024年中小学学校传染病疫情及突发公共卫生事件报告制度
- 本科毕业论文完整范文(满足查重要求)城市社区部分居民失业的现状、问题与对策研究
- 生物安全管理体系文件
- 天然气开采流程
- 《新课程标准解读》课件
- 2025年高校教师资格证考试题库(带答案能力提升)
评论
0/150
提交评论