Visual Basic程序设计基础.ppt_第1页
Visual Basic程序设计基础.ppt_第2页
Visual Basic程序设计基础.ppt_第3页
Visual Basic程序设计基础.ppt_第4页
Visual Basic程序设计基础.ppt_第5页
已阅读5页,还剩112页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章VisualBasic程序设计基础 本章主要内容 VisualBasic语言字符集及编码规则数据类型常量和变量运算符和表达式常用内部函数 学习重点 清楚各种常用数据类型 掌握其表示以及各类数据在内存中的存放形式 了解自定义数据类型理解常量和变量的概念 掌握其定义和使用掌握各类运算符 表达式和常用内部函数的功能和使用方法 4 1 1VisualBasic语言字符集 VB语言字符集与其他高级程序设计语言的字符集类似 包含字母 数字和专用字符三大类 共计89个字符 字母 大写英文字母A Z 小写英文字母a z数字 0 9专用字符 共计27个 见表4 1 4 1 2编码规则 1 VisualBasic中的语句是执行具体操作的指令 每条语句以回车键结束 在一般情况下 输入程序时要求按行书写 一行上书写一条语句 一句一行 VisualBasic允许使用复合语句行 即在同一行上书写多条语句 则各语句间必须用冒号 隔开 注意 一个语句行的长度最多不能超过1023个字符 且在一行的实际文本之前最多只能有256个前导空格 VisualBasic允许一条较长的语句分多行书写 但必须在续行的行末加入续行符 一个空格和下划线 表示下一行与该行属于同一个语句行 一个逻辑行最多只能有25个后续行 4 1 2编码规则 2 VB代码不区分字母的大小写VB代码中必须使用西文标点VB标识符的命名规则 必须以字母或汉字开头 由字母 汉字 数字或下划线组成字符必须并排书写 不能出现上下标形式长度小于等于255个字符不可以是系统关键字不能包含空格 西文标点符号和类型说明符 在作用域范围内必须唯一注意 虽然VB中可以使用汉字进行标识符命名 但是为了书写方便 一般不使用汉字 4 1 2编码规则 3 使用注释增加程序的可读性 注释语句格式 格式1 Rem注释内容格式2 注释内容说明 注释语句是非执行语句 仅仅对相应位置上的代码起到注释作用 格式1中的关键字Rem和注释内容之间必须用空格隔开 注释内容中可以包含任意字符 西文 中文等 格式1是以单独注释语句形式出现 格式2在使用时较格式1更加灵活 可以以单独注释语句形式出现 也可直接出现在某行语句后面进行注释 但是续行符后面不能加注释 4 2数据类型 数值数据类型字符数据类型String逻辑数据类型Boolean日期数据类型Date对象数据类型Object变体数据类型Variant 注意点 注1 数据类型问题选用什么类型满足数据的表示要求如何用最节约 最有效率的方法表示数据 原则 能用占用较少字节的类型尽量使用占用字节较少的数据类型注2 对象属性类型Width Height Top Left属性取值为数值类型Caption Text属性取值为字符串类型Visible Enabled属性取值为布尔类型 1 Integer和Long 用于保存带有符号的 不带小数点和指数符号的整数 存放整数的字节最高位是符号位 整数运算速度快 精确 但表示数的范围小 整数的表示形式为 n 或 n Integer型整数能表示 32768 32767 范围内的整数 是Integer整型的类型说明符 可省略Long型整数能表示 2147483648 2147483647 范围内的整数 是Long长整型的类型说明符 356 356 356 356 合法Integer型常量35689 1246978 356 合法Long型常量 2 Single Double 用于保存浮点实数 带有小数部分的数值 浮点实数表示数的范围大 但有误差 且运算速度慢 单精度浮点数精度为7位 双精度浮点数精度为15 16位 单精度型和双精度型常量有两种表示形式 即小数形式和指数形式 指数形式由符号 指数和尾数3部分组成单精度浮点数和双精度浮点数的指数分别用 E 或 e 和 D 或 d 来表示 含义为 乘以10的幂次 2 Single Double 单精度型表达形式 n nE m n nE m双精度型表达形式 n n n nD m n nD m其中 n m是无符号整数 2 15 0 123 0 34625E 3 2 34E8 123 4E 3表示合法的单精度数 346 25 1234567 89 90 3 3D10 1 2D 6 0 34625E 3 表示合法的双精度数 2 Single Double 单精度型和双精度型常量的小数形式若超出有效位数 进行小数部分的截取 若整数部分超出有效位数 自动转为指数形式表示 当幂为正数时 正号可以省略2 34E8等价于2 34E 83D10等价于3D 10同一个实数有多种表示形式 346 25可以表示为 3 4625D 2 0 34625D 3 34 625D 1 3462 5D 1 34625 D 2等一般将 3 4625D 2称为 规格化指数形式 默认情况的直接实型常数都是双精度类型 346 25与 346 25 是等价的双精度类型常数 3 Currency 货币数据类型是为表示钱款而设置的 是定点实数或整数 精确到小数点后4位和小数点前15位 用于货币运算 表示形式在数字后加 符号 346 25 2346 0 1234 都是合法的货币数据形式 4 Byte 字节实际上是一种数值类型 以1个字节的无符号二进制数存储 说明 不同类型的数据取值的范围 所适应的运算不同 在内存中所分配的存储单元数目也不同 因此正确地区分和使用不同的数据类型 不仅可满足处理问题表示数据的要求 而且可使程序运行时占用较少的内存 确保程序运行的正确性和可靠性VisualBasic规定在数值型常数后加类型说明符可以改变数据的类型 从而改变数据在内存中的存储空间大小 3456 3456 3456 或0 3456E 4 3456 或3456 0 0 3456D 4 0 3456E 4 3456 都表示与3456同值的数据 但是类型不同在计算机内存中所占用的空间不同 4 2 2字符数据类型String 字符串是字符序列 由西文字符 汉字和标点符号组成 在VB中字符串常量两端用双引号 括起 456 VB程序设计 01 02 2008 PM 12 30 24 说明 1 是长度为0 既不含任何字符 的字符串 称为空字符串 或空串 2 若字符串中有双引号 可用连续的两个双引号 表示字符串中的 示例如下 学习 VB 课程 表示字符串 学习 VB 课程 3 VisualBasic中的字符串变量有定长和变长两种 在定义时是有区别的 4 2 3逻辑数据类型Boolean 逻辑数据类型又称布尔类型 用于逻辑判断 只有True和False两种取值 描述 真 假 对 错 是 否 开 关 等两种状态信息 Enabled Visible FontBold等就是取值为True或False的逻辑型属性 因此常常与条件判断语句配合 获取对象的状态信息 4 2 4日期数据类型Date 日期型数据以8个字节的浮点数值表示 可以表示的日期范围为公元100年1月1日 9999年12月31日 时间范围为0 00 00 23 59 59 日期型数据的两种表示法 任何在字面上表示日期和时间的字符 两端用 括起来 3 8 2008 3 8 2008 March82008 2008 3 820 20 20PM 数值表示 数值的整数部分表示距离1899年12月30日的天数 小数部分表示时间 0为午夜 0 5为中午12点 负数代表的是1899年12月31日之前的日期和时间 4 2 5对象数据类型Object 对象型数据用来表示图形 OLE对象或其他对象 也可以使用对象型数据的属性和方法 4 2 6变体数据类型Variant 变体数据类型是一种可变的数据类型 可以表示任何值 包括数值 字符串 日期 时间等 变量如果不加类型说明 系统默认为变体型 Variant 可使用VarType函数检测变体型变量中保存的数值究竟是何类型 Variant类型的变量还可以包含Empty 未赋值 Null 未知或缺少的值 常见于数据库 和Error 出现错误时的值 3个特殊值 可以使用IsEmpty函数来测试一个Variant变量是否被赋过值 使用IsNull函数来测试一个Variant变量是否具有Null值 4 3常量和变量 4 3 1数据的存储程序运行时 使用的各种类型数据都是存放在内存单元中 并且给内存单元取名 计算机就是通过内存单元名来访问其中的数据 内存中的存储单元分为静态存储区和动态存储区 静态存储区中的存储单元一旦分配 要到应用程序结束时才释放空间 动态存储区中的单元则可以在应用程序执行中释放 数据也可以被多次更新 VB中数据都有常量和变量形式 常量是存放在静态存储区的常量区中的数据 常量区一旦放入数据就不允许用户修改 即常量在程序执行期间 其值是不发生变化的 直到数据单元被释放 变量是存储单元的代号 对应于存放在动态存储区的单元或静态存储区的非常量区 程序执行过程中 使用变量来暂时存放程序中有用的数据 变量的内容可以允许多次更新 存入新的数据 4 3 2常量 根据表示形式可以将常量分为直接常量和符号常量1 直接常量 字面常量 直接常量可从形式上判断其类型和大小 3 8 2008 为日期型常量230 0为Double型常量 asdf 230 0 为字符串常量可以在常量值后加类型说明符 来说明常数的数据类型345 为Integer类型常量在VB中的整型常量中 默认是用十进制表示的数值八进制常数在数值前加 O 如 O567 O777等十六进制常数在数值前加 H 如 H189 HFFFF等 VB中的颜色数据常用十六进制整数表示 如 H0000FF00表示绿色 2 符号常量 VisualBasic中的符号常量分为用户自定义符号常量和系统符号常量 Const语句用户自定义符号常量来代替指定的值格式 Private Public Const常量名 As类型名 表达式ConstPIAsDouble 3 1415926535 声明PI为双精度符号常量 值为3 1415926535ConstNATIONALDAYAsDate 10 1 1949 声明NATIONALDAY为日期常量 值为1949年10月1日ConstaAsInteger 5 bAsDouble 12 5 一句语句中定义多个常量 中间用逗号隔开 Const语句格式说明 常量名的命名遵循VisualBasic标识符的命名规则 符号常量名常常使用大写字母 As类型名 说明该符号常量的数据类型 若缺省 则由其右侧表达式的数据类型决定常量类型 用户也可以在常量名后加类型说明符 定义该常量的类型ConstPI 3 1415926535 声明PI为双精度符号常量 值为3 1415926535 表达式可以由运算符 常量 直接常量和已定义的符号常量 组成 必须具有一个确定的值 注意 该表达式中绝对不允许使用变量 函数 ConstTAXMIN 0 05ConstTAXMAX 10 TAXMIN Const语句格式说明 Public选项只能用在标准模块的通用部分 表示该符号常量可以在整个应用程序中使用 Private选项则可用在模块 包括窗体模块和标准模块 的通用部分 表示该符号常量可以在该模块范围内使用 默认情况为Private 符号常量一旦声明 在之后的代码中只能引用 不能再次定义或赋值 2 系统符号常量 VB系统本身提供了一些符号常量 存放于系统的对象库中 如vbOK vbRed vbYes等 用户可以在 对象浏览器 中查看VisualBasicforApplications VBA ActiveX控件 MicrosoftExcel和MicrosoftProject等提供对象库的应用程序也提供了符号常量 这些符号常量可与应用程序的对象 方法和属性一起使用为避免不同对象中同名变量的混淆 在引用时使用2个小写字母前缀 区分引用哪个对象库中符号常量vb表示引用VB和VBA中的符号常量xl表示引用Excel中的符号常量db表示引用DataAccessObject中的符号常量 2 系统符号常量 在使用时既可以使用系统符号常量 也可以直接使用系统符号常量对应的数值 Form1 BackColor vbRedForm1 BackColor 255Form1 BackColor HFF以上3条语句执行时都能将窗体的背景色更新为红色 显然使用系统符号常量vbRed 程序代码的可读性更强 4 3 3变量 在程序运行过程中 内存单元中数据值可以改变的称为变量 一个变量必须有一个名字和相应的数据类型 通过名字来引用一个变量 而数据类型则决定了该变量的存储方式和在内存中占据存储单元的大小变量名实际上是一个符号地址 程序编译连接时 由系统给每一个变量分配一个内存地址 在该地址的存储单元中存放变量的值 在程序中从变量中取值 实际上是通过变量名找到相应的内存地址 从其存储单元中取数据 注意变量名和变量值这两个概念的区别 4 3 3变量 在VisualBasic中 变量有两种形式 即对象的属性变量和内存变量创建对象时 VisualBasic系统会自动为它创建一组变量即属性变量 并为每一个属性变量设置其默认值 这类变量可供程序员直接使用 如引用其值或赋予新值本章讨论的是内存变量 它是用户根据需要所声明的 1 变量的声明 显式声明 与符号常量一样 要求变量 先声明 后使用 声明变量就是定义变量名和变量数据类型 从而决定系统为它分配多少存储单元存放数据 1 在定义变量时指定其数据类型格式 Declare变量名 As类型名 说明 Declare可以是Dim Public Private Static Dim用于在模块的通用部分定义模块级变量以及在过程中定义过程级变量 Private用于在模块的通用部分定义模块级变量 Public用于在模块的通用部分定义全局变量 Static用于过程中定义过程级静态变量 1 在定义变量时指定其数据类型 说明 仅在某个过程中使用的变量 就在该过程中用Dim声明定义 若要在多个过程中使用公共变量 则必须在模块的通用部分用Dim Private Public声明定义此变量 变量名遵循VisualBasic标识符的命名规则 命名时应尽量有意义 做到 顾名思义 Sum Ave Score PersonId是合法的变量名可在变量名前加一个缩写的前缀来表明该变量的数据类型intSum sngAveScore strPersonId As类型名 类型名可以是基本数据类型和用户定义的类型 也可以省略 省略后变量为默认数据类型 默认情况下为变体型 但变体型占用内存空间较多 执行效率低PublicaAsInteger 定义一个Integer型全局变量aDimd 定义一个变体型变量d 等价DimdAsVariant 1 在定义变量时指定其数据类型 说明 定义字符串类型的变量 Dim字符串变量名AsString 变长字符串变量Dim字符串变量名AsString 字符数 定长字符串变量定长字符串变量的长度 由 号后面的字符数决定 若赋予变量的字符数少于指定的字符数 则尾部用空格补足 若超过指定的字符数 系统自动截去尾部超出部分的字符 DimstrExpress1AsString 定义变长字符串变量strExpress1DimstrIdAsString 8 定义定长字符串变量strId存放8个字符 一条声明语句可将多个声明组合起来 在这种格式下 即使几个变量的类型一致 也必须分别用 As类型名 声明各自的类型 DimYourNameAsString 20 BillsPaidAsCurrencyDimiAsLong jAsLongPrivatea b cAsInteger 这里a和b为Varient型 c为Integer型 2 用类型说明符定义变量 对于具有类型说明符的数据类型 采用简单格式定义变量 Declare变量名 类型说明符 说明 Declare可以是Dim Public Private Static中的任意关键字 基本类型的类型说明符 在表4 2类型说明符列中列举出 变量名与类型说明符之间没有空格Dimi J K 定义长整型变量i 双精度变量J 单精度变量K 2 变量的默认声明 隐式声明 VisualBasic系统允许用户不作声明而直接使用变量 这样的变量是过程级的变体型变量 只能在过程中使用 以下事件过程中的变量a未经声明定义PrivateSubForm Click a Val Text1 Text PrintaEndSub 代码等价于PrivateSubForm Click DimaAsVarianta Val Text1 Text PrintaEndSub 3 OptionExplicit强制显式声明 VisualBasic系统提供了强制用户对变量进行强制显式声明的措施 在模块代码窗口的通用部分开头直接输入OptionExplicit语句执行 工具 菜单的 选项 命令 在 编辑器 选项卡中 选中 要求变量声明 复选框 VisualBasic系统就自动生成语句OptionExplicit 并加到模块的声明部分通过对变量进行强制显式声明 凡是发现程序中使用未经显式声明的变量 系统将自动显示一个 变量未定义 错误警告信息框 4 变量默认数据类型的设置 VB系统允许用户在声明变量前 自行设置或修改变量默认的数据类型 格式 DefType字母范围说明 1 DefType语句放在模块声明部分的开头 设置指定字母范围开头的变量的默认数据类型 2 Def是系统关键字 Type是基本数据类型标志 用以下格式分别表示各基本类型 Byte Int Lng Sng Dbl Cur Str Bool Date Obj Var 注意 在Def和类型标志之间不能有空格 3 字母范围采用 字母 字母 的形式表示 其中字母可以是A Z中的任何一个 大小写均可 语句中说明的字母可以作为该类型的变量名 而且以该字母开头的变量名也是那种类型的变量 4 变量默认数据类型的设置 说明 4 DefType语句不允许重复定义例1DefSngC F 该语句定义后 C F以及凡是用C F开头命名的变量默认类型是单精度型DimaAsInteger b cAsDouble d f 定义a为整型变量 b为变体型变量 c为双精度型变量 d和f均为单精度型变量例2 若要将模块中的变量的默认类型全部设置为单精度型 可以在模块的通用部分按如下方法定义DefSngA ZDimaAsInteger b cAsDouble d f 定义a为整型变量 c为双精度型变量 b d和f均为单精度型变量 5 变量的赋值 给变量赋值实际就是将数据放入指定变量的内存空间 使用声明语句定义一个变量后 VisualBasic系统会自动给变量赋予一个默认的初始值 1 数值类型变量的初值为0 2 字符串型变量的初值为空串 3 布尔类型变量的初值为False 4 日期类型变量的初值为 1899 12 300 00 00 5 变体类型变量的初值为Empty 赋值语句 格式 变量名 表达式Let变量名 表达式作用 将赋值运算符 右侧表达式的值赋给左侧的变量 说明 1 两种格式完全等价 通常采用第1种格式 2 左侧的变量包括属性变量和内存变量 3 表达式包括常量 直接常量和已定义的符号常量 变量 对象属性 函数形式以及由它们与运算符的组合形式 赋值注意以下问题 1 给变量赋值的语句兼有计算和赋值双重功能 即先完成赋值号右侧表达式的计算 然后将计算好的表达式的值赋给左侧的变量 a 12 4 56 12 先计算右侧表达式 后将计算结果赋给左侧变量a 2 在某一个时刻 变量的内存单元只能存放一个数据 要修改数据则采用赋值的方法实现 注意 变量总是按语句执行次序 存放最近一次赋值的数据 赋值注意以下问题 3 一般要求赋值号两边的数据类型一致 这样才能完成正确的赋值 即赋值号左侧的数据一般情况下只能接收与它类型相同的表达式的值 当赋值时表达式的值的类型并不完全和变量类型相同时 系统根据自动转换的原则将值转换成与变量相同的类型后赋值 一旦自动转换失败 则赋值也失败 系统出错 赋值注意以下问题 4 Variant数据类型可在不同场合代表不同数据类型 当指定变量为Variant变量时 VisualBasic会自动完成各种必要的类型转换 5 区分赋值号和关系运算符中的判等号 在VisualBasic中 系统会根据等号所处的位置来区分是赋值号还是判等号 仅在赋值语句最左端的等号是赋值号 其余的均为判等号 判等号所在的表达式一般不能单独以语句的形式出现 而赋值号则是以赋值语句形式出现 赋值号两边的数据是不能随便相互交换的 否则可能运行出错或产生逻辑上的错误 而判等号两边的数据是可以相互交换的 4 4运算符和表达式 碰到具体问题时 不光是要表示待处理的数据 而且还要运用有效的方案处理数据 解决问题 例如 已知三边 求三角形的面积 与数学中一样 计算机语言中 对数据的加工处理称为运算 即操作 被运算的对象 即数据 称为操作数 或运算量 用运算符或操作符来描述最基本的运算形式 因此合理地运用运算符描述对哪些数据 以何种顺序 进行什么样的操作 是本节学习的关键 VisualBasic中定义了丰富的运算符 包括算术运算符 字符串运算符 关系运算符和逻辑运算符和对应的表达式 4 4 1算术运算符和表达式 1 算术运算符 加 减 负号 乘 除 整除 取商的整数部分 要求操作数为整型数据 Mod取余运算 要求操作数为整型数据 乘方运算符 字符串连接运算 4 4 1算术运算符 幂运算 用来计算乘方和方根5 2 5的平方5 3 5的立方 即5 5 5 结果为1255 3 5的立方的倒数 即1 125 结果为0 00825 0 5 25的平方根 结果为5125 1 3 125的立方根注意 由于幂运算的运算优先级最高 当指数部分是一个表达式 必须加上括号 否则上述表达式125 1 3 将先完成125 1运算 后进行除3运算 即改变了原运算顺序 4 4 1算术运算符 整除和取余运算 整除 运算是整数之间的除运算 其结果是商的整数部分 即普通除运算结果的整数部分 所以又称为商取整除法8 5 8整除5 结果为1取余 Mod 运算是整数之间的取余运算 结果为第1个操作数整除第2个操作数后所得的余数部分 取余运算结果的正负号始终与第一个操作数的符号相同8Mod5 结果为38Mod 5 结果为3 8Mod5 结果为 3 8Mod 5 结果为 3 算术运算符注意问题 1 算术运算符要求参与运算的操作数是数值型 运算结果也是数值型 若操作数是表示数值的字符串或逻辑型 则按自动转换的原则转换成数值类型后参与运算 2 3 14 3 数值字符串3 14 转换为3 14参与算术运算 结果是18 84 3D2 20 5 数值字符串3D2 转换为300 0参与算术运算 结果是315 0False 10 True 逻辑值False转换为0 True转换为 1参与算术运算 结果是11 算术运算符注意问题 2 除 取相反数 为单目运算符外 其余的算术运算符均为双目运算符 3 在算术运算中若操作数的数据类型相同 则运算结果的数据类型也为该类型 若数据类型不一致 具有不同的数据精度 则VisualBasic根据精度大小 数值型数据按精度大小从小到大排序为Integer Long Single Double Currency 将精度低的数据转换成精度高的数据类型后进行运算 规定运算结果的数据类型以精度高的数据类型为准256 890 加号两侧操作数均为Integer型 运算结果也是Integer型483 12 3 乘号左侧操作数为Integer型 右侧为Single型 运算结果以精度高的Single型为准 算术运算符特例 当Long型数据与Single型数据运算时 结果为Double型数据 除法和幂运算的结果总是Double型 与操作数类型无关 整除 和取余 Mod 运算时 若操作数为实数 则先对其进行四舍六入五成双的取整 然后完成整除或取余 结果仍为整型或长整型4 3 幂运算的结果是Double型8 5 5 56 先将操作数8 5和5 56进行四舍六入五成双的取整 分别得到8和6 整除结果是18 5Mod5 56 先将操作数8 5和5 56进行取整 分别得到8和6 取余结果是2 2 算术表达式 由算术运算符 圆括号 函数 常量和变量组成的式子称为算术表达式 算术表达式的值是数值型的 0 5 g t 2 v0 t x Mod10 10 x 10算术表达式的值是有类型的 所以也存在着值的溢出 超出取值范围 现象 运算时要注意 235 32760 出错 溢出 表达式的值也是Integer型 32995超出了整型数据的范围提醒 在合理选择数据类型描述数据时 不仅要从描述数据目前的值考虑 还要从它参与的运算角度 运算结果等方面考虑 3 日期型表达式 日期型数据是一种特殊的数值型数据 它们之间只能进行加 减 算术运算 日期型表达式由算术运算符 算术表达式 日期型常量和变量 函数组成 一般有以下3种情况 1 两个日期型数据进行减法运算 结果是一个数值型数据 两个日期相差的天数 05 09 2008 05 01 2008 表达式值为8 2 一个日期型数据与一数值型数据进行加法运算 结果是一个日期型数据 05 01 2008 8 值为日期型数据 05 09 2008 3 一个日期型数据与一数值型数据进行减法运算 结果是一个日期型数据 05 09 2008 8 表达式值为日期型数据 05 01 2008 4 4 2字符串运算符和字符串表达式 VisualBasic中的字符串运算符主要用来将两个字符串连接成一个字符串 VisualBasic提供了两个字符串的连接符 即 和 和 是双目运算符 用来将两个字符串首尾连接的 连接结果仍为字符串类型 优先级相同 但低于算术运算符 江南大学 信息工程学院 连接结果为 江南大学信息工程学院 江南大学 信息工程学院 连接结果为 江南大学信息工程学院 字符串变量a中存放的内容是 a 若a中的内容为 VB 则连接结果为 字符串变量a中存放的内容是VB 注意问题 1 使用运算符 时 操作数与 之间必须加上一个空格分隔 因为符号 还是长整型数据的类型定义符 若操作数与符号 连接在一起 VB系统优先将它作为长整型数据类型符处理 继而就会出现语法错误 2 与 运算符在使用时的区别如下 运算在连接运算前 系统自动先将两边的非字符串类型数据转换成字符串型数据 然后再进行连接操作 运算符 两边仅当都是字符串类型数据时 才进行字符串的连接操作 否则系统将运算符 用作算术运算符 进行求和运算 若其中一个操作数是数值型或逻辑型 另一个操作数是数字字符串或逻辑型 则系统会自动将数字字符串和逻辑型转换为数值型 然后进行算术求和运算 否则系统由于无法自动将操作数转换为数值型 则出现 类型不匹配 的出错信息 与 运算符例1 VB 6 连接结果为 VB6 125 6 25 连接结果为 125 625 True 125 6 连接结果为 True125 6 VB 6 连接结果为 VB6 VB 6 出错 类型不匹配 125 6 25 连接结果为 125 625 125 6 25 求和结果为 150 6 125 6 25 求和结果为 150 6125 6 25 求和结果为 150 6 True 125 6 连接结果为 True125 6 True 125 6 求和结果为 124 6True 125 6 求和结果为 124 6 True 125 6 出错 类型不匹配 与 运算符例2 DimiAsInteger JAsString KAsString LAsIntegerJ Program i 12 K 12 L 24Printi K 结果为24PrintJ K 结果为 program12 PrintJ I 出错 类型不匹配Printi L J 先进行i与L的求和运算 然后与J完成字符连接运算 结果为 36Program Printi L K L 先进行i与L K与L的求和运算 然后完成字符连接运算 结果为 3636 Printi L J L J与L进行求和运算时出错 类型不匹配 4 4 3关系运算符和关系表达式 关系运算用于对两个数据进行比较 比较结果为逻辑值 True 或 False 关系运算符大于 大于等于不等于 等于Like字符串匹配Is用来比较两个对象的引用变量 4 4 3关系运算符和关系表达式 关系运算的规则如下 1 所有关系运算符的优先级相同 但低于算术和字符串运算符 2 两个数值型数据按大小比较 3 日期型数据按日期的早晚比较 晚日期大于早日期 4 两个字符型数据按ASCII值比较 从第一个字符开始依次比较对应位置字符的ASCII码值 直到遇到第一对ASCII码不相等的字符为止 ASCII码值大的字符串大 若两字符串相等 则字符串中的每个字符都相等且字符串长度也相等 汉字字符大于西文字符 4 4 3关系运算符和关系表达式 关系运算的规则如下 5 数值型数据与可转换为数值型的数据比较 按数值大小比较 数值型数据不能与无法转换为数值型的数据比较 系统出错77 6 0 按数值比较 结果为True 3 ABC 无法比较 系统出错 类型不匹配 6 数学中判断x是否在 a b 区间内 习惯上写成a x b 但在VisualBasic中不能写成a x b 该表达式的含义 先判断a是否小于等于x 然后再将判断的逻辑结果与b进行比较 而应采用即将介绍的逻辑 And 与运算描述 a xAndx b 4 4 3关系运算符和关系表达式 关系运算的规则如下 7 Like运算符用来比较字符串表达式和SQL表达式中的样式 与通配符 字符列表 字符列表 结合使用 主要用于数据库模糊查询 其中 表示任何单一字符 表示零个或多个字符 表示任何一个数字 0 9 字符列表 表示字符列表中的任何单一字符 字符列表 表示不在字符列表中的任何单一字符表示姓名StrName变量中姓周的教师 StrNameLike 周 表示姓名StrName变量中不出现周字的教师 StrNameLike 周 8 Is运算符用来比较两个对象的引用变量 主要用于对象操作 本书不做介绍 此外 Is运算符还在SelectCase语句中使用 见第7章 4 4 4逻辑运算符和逻辑表达式 逻辑运算是对逻辑值进行的运算 结果是逻辑型值True False逻辑运算符Not逻辑非And逻辑与Or逻辑或Xor逻辑异或Eqv等价Imp蕴含逻辑运算符的优先次序 Not And Or Xor Eqr Imp 逻辑运算符的运算规则和优先级 逻辑运算符说明 1 逻辑运算符除Not运算是单目运算外 其余都是双目运算 2 逻辑运算符两侧的操作数是逻辑型数据 True或者False 则运算结果也是逻辑型值 3 逻辑运算符的运算优先级低于算术 字符 关系运算符若a 6 r 1 x 5 b True 则逻辑表达式 x 2 3 14159 rAndx5OrNotb 先进行2 3 14159 r算术表达式的计算 然后再进行关系运算 最后再进行Not And Or逻辑运算 运算结果为False 逻辑运算符说明 4 VB中最常用的逻辑运算符是Not And和Or 经常用于条件和循环语句 构造比较复杂的表达式进行逻辑判断 由And连接的条件表达式 必须全部满足为真 整个表达式才为真 Or连接的条件表达式 只要满足其中之一为真 整个表达式即为真 学校推选三好学生 必须同时满足德育 D 智育 Z 体育 T 名次均在班级前三名D 3AndZ 3AndT 3 此处分别用D Z T表示德育 智育 体育的名次 必须使用And连接这些条件D 3OrZ 3OrT 3 如果用Or连接这些条件 则表示学校推选三好学生 只需满足德育 智育和体育其中之一的名次在班级前三名 显然不符合描述要求 整型变量x是5和7的倍数xMod5 0AndxMod7 0 或关系表达式xMod35 0 逻辑运算符说明 5 当逻辑运算符某侧的操作数是数值型数据时 则将逻辑运算符两侧的数据都转换为数值型数据 并以数值的二进制补码形式进行逐位逻辑运算 运算结果为数值型 Not9 Not0000000000001001 1111111111110110 1013And71 运算过程如下 所以 逻辑表达式13And71的值为5 逻辑运算符说明 5 当逻辑运算符某侧的操作数是数值型数据时 则将逻辑运算符两侧的数据都转换为数值型数据 并以数值的二进制补码形式进行逐位逻辑运算 运算结果为数值型 Not9 Not0000000000001001 1111111111110110 10 13And71 运算过程如下 所以 逻辑表达式 13And71的值为 9 4 4 5表达式的构造与计算 1 表达式的组成 由运算符 圆括号 常量 变量和函数按一定的规则组成的一个有意义的式子就是表达式2 表达式的书写规则 1 表达式中所有运算符和操作数必须并排书写 不能出现上下标和数学中的分数线 2 在一般情况下 不允许两个运算符相连 应当用括号隔开 3 注意运算符的优先级 为保持运算顺序 VisualBasic使用圆括号 但不能使用方括号 或花括号 若需要多层括号时 则括号必须成对出现 4 VisualBasic中乘号 不能省略 也不能用 代替 5 幂运算符表示自乘 VB中数学式的描述 数学式对应于VB表达式X1 X22 Y3X1 X2 X2 Y 3 a b a b p p a p b p c 1 2 b cbcx y 0 x yAndy 0 4 4 5表达式的构造与计算 3 表达式的计算 1 表达式值的类型表达式通过运算后有一个结果 运算结果的类型由数据和运算符共同决定 2 优先级比较 同类运算符的优先级 前面介绍各种运算符时 指出了各类运算符中运算符的优先级 优先级为1的运算比优先级2的优先级高 依次类推 相同优先级的 按从左至右的出现顺序执行运算 在运算时 需要严格遵守优先顺序执行运算 不同类运算符的优先级 在各种不同类型的运算中 优先顺序为算术运算 字符运算 关系运算 逻辑运算圆括号可以改变优先顺序或使表达式更清晰 当表达式中含有括号时 总是先执行括号内表达式的值 对于多重括号 总是由内到外 4 5常用内部函数 函数调用格式 函数名 参数列表 有参函数函数名 无参函数说明 1 使用时应准确拼写函数名 调用时的实际参数要和函数格式中形式参数的个数 数据类型 含义和取值范围保持一致 2 函数只能出现在表达式中 一般不能以单独语句形式出现 3 注意接收函数的返回值 4 函数的运算优先级高于算术运算符 4 5 1数学函数 说明 1 三角函数的参数x均是以弧度为单位的 如果已知角度x 可以按x 3 1415926 180将x转换成弧度 然后求其三角函数 2 VisualBasic中没有提供的函数 可以用数学方法求得 VisualBasic中没有余切函数 求x弧度的余切值可以表示为1 Tan x 或Cos x Sin x VisualBasic中没有专门的对数函数Logxy 必须采用换底公式Log y Log x 表示 3 使用数学函数应符合数学规定 如Sqr x 中参数x不能是负数 例题4 1 求角度为30度的各个三角函数值 运行结果见图OptionExplicitConstPI 3 1415926PrivateSubForm Click DimxAsDoublex 30 PI 180Print 角度为30度的三角函数值如下 Print Sin 30 Sin x Print Cos 30 Cos x Print Tan 30 Tan x Print CTan 30 1 Tan x EndSub VB中数学式表示的注意点 乘号不能省ab a b分子分母型幂运算a3 a 3ex Exp x 自然对数Lnx log x 不允许使用 只能使用 保证运算优先级特殊符号的表达 ConstPI 3 1415926 DimBataAsSingle度angle到弧度的转换angle PI 180函数的优先级高于幂运算 lg13 log25换底公式Log 13 log 10 Log 5 log 2 b sqr b b 4 a c 2 a Log Exp x y Abs Atn z cos x 3 例 Exp x y Sqr Abs x y 2 3 14159 1 Log Sqr 1 d d Exp 2 5 2 作业 4 5 2转换函数 Asc与Chr函数 Asc与Chr函数为一对互反函数 若参数x是由多个字符组成 则Asc x 仅返回x中第一个字符的Ascii码值 表达式Asc Basic 的值是 B 的Ascii码值66 常常使用Chr Asc x d 形式返回Ascii码值与x首字符相差 d的字母字符 表达式Chr Asc B 1 的值是字符 B 的下一个字母字符 C 常常通过使用Chr函数得到常用的控制字符Chr 13 回车符Chr 13 Chr 10 回车换行符Chr 7 响铃BeepChr 8 退格符 Str CStr和Val函数 Str x 将数值型数据x转换为字符串 转换后字符串的第一个字符是符号位 正数用空格表示 CStr x 函数将x转换为字符串 转换后的字符串不保留正数的符号位 Str 123 56 函数值为字符串 123 56 Str 123 56 函数值为字符串 123 56 第一个字符为空格即正数的符号位CStr 1122 33 函数值为字符串 123 56 不保留正数的符号位Val x 函数是将数字字符串转换为对应的数值 在遇到第一个数值类型规定字符外的字符时转换停止 返回停止前合法的数值字符串所对应的数值 即若需转换的字符串的第一个字符不是数字 则返回结果0 Val 123 5AB67 函数值为 123 5Val ABC123 567 函数值为0Val 123 567D2 函数值为12356 7 Fix Int取整函数 Fix x 函数为截尾取整 即去掉数值小数部分后的数Int x 函数仅取不大于x的最大整数当x 0时两者功能相同 而x 0时 Int x 总是小于Fix x 与Fix x 1相同Fix 2 5 函数值为2Fix 2 5 函数值为 2Int 2 5 函数值为2Int 2 5 函数值为 3 Round CInt Clng取整函数 Round x CInt x 和Clng x 为 四舍六入五成双 的取整函数 即当小数部分0 5 则采用向整数部分进1取整 当小数部分 0 5 则采用往数据本身最接近的偶数取整与Round函数不同 CInt和Clng函数还起到将数据的类型分别转换为Integer和Long的作用 Round 2 5 函数值为2Round 2 5 函数值为 2Clng 2 5 函数值为2Clng 2 5 函数值为 2CInt 2 57 函数值为3Clng 2 57 函数值为 3 Round和Int函数 Round x n 保留数据x指定的n位小数利用函数Int x 可以实现数学上要求的四舍五入保留数据x指定的n位小数格式 Int x 10 n 0 5 10 n 例题4 2 根据用户输入的一个带有小数的实数 要求拆分显示该数的整数部分和小数部分PrivateSubCmdDisPlay Click DimNumAsDoubleNum Val TxtNum 获取用户在文本框中输入的实数TxtInt Cstr Fix Num 利用Fix函数获取实数的整数部分 并在文本框中显示结果TxtDec Cstr Num Fix Num 将该实数减去其整数部分得到小数部分 并在文本框中显示结果EndSub 4 5 3字符串函数 VisualBasic中字符串长度是以字符为单位的 即每个西文字符和每个汉字都作为一个字符 占两个字节 若要以字节方式进行字符串处理 则可在某些字符串函数名后加B Len函数求字符串的字符数Len VB6 0教程 返回值为7LenB函数求字符串的字节数LenB VB6 0教程 返回值为9 字符串Len函数 若Len函数参数是非字符串型数据 则将求出该数据所占存储空间的字节数 DimAAsInteger BAsDouble cAsString 5 DAsStringA 32000 B 16 5 c VB D VB6 PrintLen A 窗体上显示2 VisualBasic用2个字节存储Integer的数据PrintLen B 窗体上显示8 VisualBasic用8个字节存储Double的数据PrintLen c 窗体上显示5 定长字符串变量的长度 完全由 号后面的字符数决定PrintLen D 窗体上显示3 变长字符串变量的长度由字符串中实际存放的字符个数决定 Mid以插入字符串语句形式出现 PrivateSubForm Click DimSAsStringS abABaAB Mid S 2 1234 S a1234AB PrintS 窗体上显示 a1234AB S abABaAB Mid S 2 123456789 S a123456 PrintS 窗体上显示 a123456 S abABaAB Mid S 2 2 1234 S a12BaAB PrintS 窗体上显示 a12BaAB EndSub 格式 Mid 字符串变量 位置 L 子字符串表示把 字符串变量 指定 位置 开始的字符 子字符串 替换 如含有参数L 则替换内容是 子字符串 左部的L个字符 字符串匹配函数Instr Instr n x1 x2 m 的第3个字符串参数x2的长度必须小于65535个字符 函数返回的值是长整型数 函数的最后一个参数m是可选的整型数 用来指定字符串比较方式 取值为0 表示进行二进制比较 区分字母的大小写 取值为1 表示在比较时忽略大小写 取值为2 表示基于数据库中包含的信息进行比较 仅用于MicrosoftAccess 缺省情况下为0 表达式InStr 1 abABaAB AB 1 的值是1 通过以下语句限定比较方式OptionCompareBinary 取值为0OptionCompareText 取值为1OptionCompareDataBase 取值为2 字符串String函数 String函数的第2个参数除了可以是字符串 也可以是某个字符的ASCII码值 此时 String函数返回ASCII码对应的n个字符 表达式String 5 48 的值是 00000 其中48是字符 0 的ASCII码值 实现字符的大小写转换PrivateSubOptLcase Click 小大写 选项按钮的单击事件TxtLetter Text LCase TxtLetter Text 将文本框中的字符转换为小写字符EndSubPrivateSubOptUcase Click 大写 选项按钮的单击事件TxtLetter Text UCase TxtLetter Text 将文本框中的字符转换为大写字符EndSub 例题4 3 例题4 4 提取身份证号中的出生年份 如图所示PrivateSubCmdCalYear Click 提取出生年份 命令按钮的单击事件DimIDAsString BirthYearAsStringID TxtId Text 获取用户在文本框中输入的身份证号BirthYear

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论