清华大学VB经典教案第二节——VisualBasic语言基础.ppt_第1页
清华大学VB经典教案第二节——VisualBasic语言基础.ppt_第2页
清华大学VB经典教案第二节——VisualBasic语言基础.ppt_第3页
清华大学VB经典教案第二节——VisualBasic语言基础.ppt_第4页
清华大学VB经典教案第二节——VisualBasic语言基础.ppt_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

2 1关键字和标识符2 1 1关键字关键字又称保留字 它们在语法上有固定的含义 是语言的组成部分 用于表示系统提供的标准过程 函数 运算符 符号常量等 在VisualBasic中 约定关键字的首字母为大写字母 当用户在代码窗口中输入关键字时 不论输入大小写字母 系统都能自动识别并转换为系统的标准形式 第2章VisualBasic语言基础 2 1 2标识符标识符用于标识用户自定义的数据类型 符号常量 变量 过程或函数 数组 控件 窗体 模块 文件等的名字 在VisualBasic中 标识符的命名规则如下 1 第一个字符必须是字母 2 长度不超过255个字符 控件 窗体 模块的名字不超过40个字符 3 标识符不能包含小数点 4 不能使用关键字作为标识符 2 2数据类型VisualBasic不但提供了系统定义的基本数据类型 称为标准数据类型 而且还允许用户定义自己的数据类型 称为用户自定义数据类型 2 2 1数值型 使用数值类型数据时 需要注意 1 任何一种数据类型都有明确的上限和下限 用户只能在指定的上 下限范围内使用 不能超界 否则 系统将提示 溢出 错误 如果使用较小范围的数据类型时 系统提示 溢出 错误 则应换成更大范围的数据类型 如 一个变量最初声明的数据类型是Integer 其取值范围为 32768 32767 一旦超出这个范围 系统将提示 溢出 错误 此时 可以考虑用Long 如果仍然提示 溢出 错误 可以考虑用Double或Currency 2 如果数据可能包含小数 一般应使用Single Double或Currency数据类型 除非能够准确地断定该数据一定是整数 才能使用Integer或Long数据类型 3 将存储空间较大的数据类型的数据赋给存储空间较小的数据类型的变量时 一方面会丢失数据 影响数据精度 另一方面系统将提示 溢出 错误 因此要特别小心 如 将一个值非常大的Double类型数据赋给一个Integer类型变量时就会出现这样的问题 2 2 2字符型必须用双引号 括起来的一串或一个字符 2 2 3布尔型 注意 1 在VisualBasic中 布尔型数据与数值型数据相互之间可以自动转换 当将布尔型数据转换成数值型数据时 False转换成0 True转换成 1 当将数值型数据转换成布尔型数据时 0转换成False 非0转换成True 2 由于数值型数据可以转换成布尔型数据 因此 数值或数值表达式也可以用于表示条件成立与否或真与假 即数值或数值表达式的值为0时表示条件不成立或条件为假 数值或数值表达式的值为非0时表示条件成立或条件为真 2 2 7用户自定义数据类型在实际应用中 有些数据可能由多个不同的基本数据类型数据组成 当需要创建单个变量来记录多个相关的基本数据类型数据时 用户只能自己定义所需要的数据类型 称为用户自定义数据类型 在VisualBasic中 对于常用的基本数据类型 Integer Long Single Double Currency String 分别定义了它们的数据类型说明符为 这些数据类型说明符可以放在变量名 符号常量名 数组名 数值常量后指出它们的数据类型 学生基本信息 用户自定义数据类型的语法格式如下 Public Private TypeAsAs EndType 说明 1 用户自定义数据类型必须在窗体模块或标准模块的通用声明段进行定义 在窗体模块的通用声明段只能用Private关键字定义窗体模块级的用户自定义数据类型 其作用域或有效范围仅仅是其所在的窗体模块 要定义全局级的用户自定义数据类型必须在标准模块的通用声明段用Public关键字或省略关键字定义 其作用域或有效范围是整个应用程序的所有模块 2 用户自定义数据类型名 字段名要符合标识符的命名规则 3 用户自定义数据类型可以包含其他的用户自定义数据类型 4 使用用户自定义数据类型前 必须先定义用户自定义数据类型的变量 5 引用用户自定义数据类型变量中的字段时 使用如下格式 例2 1 用户自定义数据类型应用 PrivateTypestudent 在窗体模块的通用声明段定义学生基本信息的记录类型snoAsString 10snameAsString 8ssexAsString 2sbirthdayAsDatesscoreAsIntegerEndTypePrivateSubCommand1 Click DimstuAsstudentstu sno 20090001 stu sname 李明 stu ssex 男 stu sbirthday 10 25 1990 stu sscore 610Label1 Caption stu sno stu sname stu ssex stu sbirthday stu sscoreEndSub 2 2 8枚举类型枚举类型是为了将数值与名称相关联 在程序设计中 用不同的名称表示不同的状态 有利于提高程序的可读性 枚举类型可以在窗体模块 标准模块或类模块的通用声明段用Enum语句定义 其语法格式如下 Public Private Enum 常量表达式1 常量表达式2 EndEnum 说明 1 用Public定义的枚举类型为全局级类型 其作用域或有效范围是整个应用程序的所有模块 用Private定义的枚举类型为模块级类型 其作用域或有效范围仅仅是其所在的模块 如果这两个关键字都缺省 默认为Public 2 默认情况下 第一个枚举成员对应的数值为0 第二个枚举成员对应的数值为1 以此类推 也可以给枚举成员赋一个数值 甚至可以赋一个负数 但不能赋一个浮点数 3 如果使用赋值语句显式地给某个枚举成员赋一个长整型值 则其后的枚举成员的值依次比其前面的枚举成员值加1 例2 2 枚举类型应用 窗体模块Form1的程序代码如下 Enumweek 在窗体模块的通用声明段定义表示星期的枚举类型weekSunday 1MondayTuesdayWednesdayThursdayFridaySaturdayEndEnum PrivateSubCommand1 Click IfWeekday Date SundayThenLabel1 Caption 今天是 Date 星期天 IfWeekday Date MondayThenLabel1 Caption 今天是 Date 星期一 IfWeekday Date TuesdayThenLabel1 Caption 今天是 Date 星期二 IfWeekday Date WednesdayThenLabel1 Caption 今天是 Date 星期三 IfWeekday Date ThursdayThenLabel1 Caption 今天是 Date 星期四 IfWeekday Date FridayThenLabel1 Caption 今天是 Date 星期五 IfWeekday Date SaturdayThenLabel1 Caption 今天是 Date 星期六 EndSub 2 3变量变量有三个要素 变量名 数据类型和变量的值 需要强调的是 一个变量在任意时刻只能存放一个值 如果给同一个变量赋另外一个值 则新的值将覆盖变量原来的值 内存变量是用户设计程序时定义的变量 而属性变量是用对象的属性名作为变量 其语法格式如下 其中 如果是当前窗体可以省略 2 3 1变量声明如果没有声明变量 VB使用Variant为缺省数据类型 Dim Private Static Public As As 2 3 2变量的隐式声明和显式声明 1 在模块通用声明段加入OptionExplicit 2 工具 选项 编辑器 要求变量声明 用声明语句建立变量后 VB自动将数值类型变量赋初值0 字符或Variant类型的变量赋空串 布尔型变量赋False 在一行代码中定义多个变量时 要分别指出每一个变量的数据类型 2 3 3用DefType语句定义变量用DefTye语句可以在标准模块 窗体模块的通用声明段定义变量 可以实现一次定义以某个字母开头的多个相同数据类型的变量 其语法格式如下 DefType说明 1 Def是关键字 Type是数据类型标志 可以是Int Lng Sng Dbl Cur Str Byte Bool Date Obj Var 分别表示整型 长整型 单精度型 双精度型 货币型 字符型 字节型 布尔型 日期型 对象型 可变类型 2 用 字母 字母 的形式表示一个范围 也可以仅给出一个字母 其中 字母 可以是A Z之间的任意一个字母 大小写均可 3 在DefType语句中定义的字母和以该字母开头的变量名都是相应数据类型的变量 注意 1 在Def和数据类型标志之间不能有空格 2 DefType语句只能在模块的通用声明段定义 但用DefType语句定义的变量是过程级变量 其作用域或有效范围仅仅是其所在的过程 3 不管变量是否已经用DefType语句定义 都可以使用Dim语句显式定义变量及其数据类型 例2 3 用DefType语句定义的变量的作用域 DefInti 在窗体模块的通用声明段定义以i字母开头的整型变量PrivateSubCommand1 Click i i 1intx intx 2inty inty 3Label1 Caption 在Command1的Click事件过程中 vbCrLf 变量i intx inty的值分别为 i i intx intx inty intyEndSubPrivateSubCommand2 Click Label2 Caption 在Command2的Click事件过程中 vbCrLf 变量i intx inty的值分别为 i i intx intx inty intyEndSub 2 4常量两种形式 直接常量和符号常量 符号常量又分为系统定义的符号常量和用户自定义的符号常量 2 3 2符号常量1 系统定义的符号常量 单击 标准 工具栏中的 对象浏览器 按钮进行查看 2 用户定义的符号常量 Public Private Const As 其中 由数值常量 字符串常量 布尔值 运算符及圆括号组成 注意 尽管符号常量有点像变量 但在程序运行过程中 不能像变量那样修改符号常量的值或者给符号常量赋新值 2 5运算符与表达式运算符是表示各种不同运算的符号 运算是对数据进行加工的过程 表达式是用运算符将变量 常量 函数 这些被称为操作数 以及圆括号连接起来所组成的式子 圆括号的优先级是最高的 如果表达式中含有圆括号 则优先计算圆括号内表达式的值 如果有多层嵌套的圆括号 则从最内层圆括号开始往外层圆括号计算 相同优先级的运算符按从左到右的顺序计算 VisualBasic提供了四类运算符 算术运算符 字符串运算符 关系运算符 布尔运算符 2 5 1算术运算符与算术表达式 Mod 进行 运算时 如果参加运算的数据含有小数 首先将它们四舍五入 使其成为整型数或长整型数 再进行运算 结果取整 如果参加运算的数据含有小数 首先将它们四舍五入 注意 求两个数整除以后的余数时 如果被除数小于除数 则求余的结果为被除数 如 5Mod10的结果为5 一般情况下 当需要取一个正整数的高位 左边位 上的数时 使用 整除 运算符 当需要取一个正整数的低位 右边位 上的数时 使用Mod 求余 运算符 3 算术运算符的优先级 优先级高 负号 Mod 优先级低 2 5 2字符串运算符与字符串表达式 和 都可以连接两个字符串 会自动将非字符串类型的数据转换成字符串后再进行连接 而 则不能自动转换 建议用 运算符实现字符串的连接 但在输入时 如果系统不会自动在 运算符的左右加上空格 请分别加上空格 否则 系统会提示出错 2 5 3日期运算符与日期表达式日期型数据只能进行加 减 运算 有三种情况 1 两个日期型数据相减 结果为一个数值型数据 2 日期型数据与数值型数据相加 结果为日期型数据 3 日期型数据与数值型数据相减 结果为日期型数据 注意 2 5 4关系运算符与关系表达式关系运算符也称比较运算符 用于对两个表达式的值进行比较 关系表达式运算的结果只可能是一个布尔值 即True或False VisualBasic提供了八个常用的关系运算符 大于 大于或等于 不等于 Like 字符串比较 Is 对象比较 需要强调的是 关系运算符两边被比较的数据的数据类型必须完全一致 否则 无法进行比较 说明 1 关系运算符的优先级相同 2 两个数值比较是比较两个数值的大小 3 两个字符串比较是从两个字符串的第一个字符开始顺序做对应字符的ASCII值的比较 只要找到某个对应字符的ASCII值满足比较运算符 结果即为True 否则为False 常见字符的ASCII值的大小如下 空格 aandx b 不能直接写成 a x b 因为后面的写法其含义将不能准确地表示x是否在区间 a b 内 6 单精度或双精度数一般不做 的比较 7 Like用于比较两个字符串 在VisualBasic中支持通配符 表示任意多个任意的字符 和 表示一个任意的字符 而在关系数据库的SQL语句中支持通配符 表示任意多个任意的字符 和 表示一个任意的字符 主要用于数据库表数据的查询 8 Is用于比较两个对象的引用变量 主要用于对象操作 还可以在SelectCase语句中使用 2 5 5布尔运算符与布尔表达式布尔表达式是用布尔运算符将布尔值或关系表达式以及圆括号连接起来组成的式子 布尔表达式运算的结果也只可能是一个布尔值 即True或False 两个数值型数据也可以进行布尔运算 但要求两个操作数必须在 2147483648 2147483648 区间内 运算时操作数要转换为16位或32位二进制数 实现两个操作数对应二进制位的布尔运算 例如 计算布尔表达式 100Or15 的值 将十进制数100和15分别转换为16位二进制数 然后对这两个二进制数进行按位Or运算 0000000001100100Or00000000000011110000000001101111运算结果为二进制数0000000001101111 转换为十进制数是111 4 2 3VB运算符的优先顺序 例2 4 设a 2 b 3 c 4 计算下列表达式的值Notaa c表达式的计算步骤如下 计算算术表达式 Not26 计算关系表达式 NotTrueOrFalseAndTrue 计算Not FalseOrFalseAndTrue 计算And FalseOrFalse 计算Or False 2 5 7表达式的书写规则书写表达式时 应注意 1 在数学表达式中省略的乘号必须写成 如 3xy应写成3 x y 2 数学表达式中的上标应写成指数形式 如 x2应写成x 2 3 数学表达式中的下标应单独占一个字符 如 x1应写成x1 4 数学表达式中的某些符号必须写成VisualBasic可以表示的符号 如 2 应先定义符号常量Constpi 3 14 然后再写成2 pi 5 括号可以改变运算顺序 但在表达式中只能使用圆括号 不能使用方括号或花括号 而且圆括号必须左右配对 2 6常用内部函数VB中有两类函数 系统预定义的内部函数和用户自定义的函数 函数调用的一般格式为 其中 实际参数表可以是一个或多个参数 参数可以是常量 变量或表达式 如有多个参数 参数之间用逗号分隔 如果函数没有参数 调用时可以省略圆括号 如 日期函数Date没有参数 圆括号省略 函数在程序代码中的具体调用形式主要有如下四种 1 将函数的返回值赋给变量 如 y sin x 2 直接输出函数的返回值 如 Label1 Caption Sin x 3 将函数的返回值参与表达式的运算 如 3 sin x 5 4 将函数的返回值作为另一个函数的参数 如 month date 2 6 1数学函数 2 6 2字符串函数 2 6 3日期和时间函数 2 6 4格式输出函数格式输出函数可以使数值 字符串或日期按指定的格式输出 其语法格式如下 Format 其中 格式字符串有三类 数值格式 字符串格式 日期时间格式 常用数值格式字符 常用字符串格式字符 常用日期时间格式字符 2 6 5随机函数1 随机函数随机函数Rnd x 返回大于或等于0但小于1的单精度随机数 一般省略随机函数的参数和圆括号 为了生成某个区间 lowerbound upperbound 范围内的随机整数 可使用如下公式 Int upperbound lowerbound 1 Rnd lowerbound 其中 upperbound是随机数范围的上界 而lowerbound则是随机数范围的下界 2 随机函数初始化语句随机函数初始化语句Randomize n 用于初始化随机数生成器 一般省略参数n 随机函数初始化语句Randomize可以使随机函数Rnd产生的随机数不重复 一般在使用随机函数Rnd之前 都要先执行随机函数初始化语句Randomize 2 6 6转换函数 2 6 7Shell函数在VisualBasic中 可以通过Shell 函数调用DOS或Windows下的应用程序 Shell 函数的语法格式如下 变量名 Shell 其中 为要执行的应用程序的完整路径 包含驱动器或磁盘 文件夹 子文件夹 文件名 扩展名 要用双引号引起来 应用程序必须是可执行文件 即文件扩展名为 com bat和 exe的文件 值为1表示正常窗口 默认值为2 在任务栏上显示为一个具有焦点的图标 Shell 函数返回一个Variant变量 如果成功 代表程序的进程ID 若不成功 返回0 2 6 8判断函数 说明 1 IsEmpty 函数仅对可变类型变量进行测试 当可变类型变量未被显式初始化时返回值为True 否则 返回值为False 例如 有语句Dimvar 则函数IsEmpty var 的返回值为True 若var 100 则函数IsEmpty var 的返回值为False 2 对含有小数点的数值常量 TypeName 函数的返回值均为Double 例如 TypeName 0 0000014 和TypeName 123456 14 的返回值均为Double 2 7程序语句2 7 1语句与函数的区别在VisualBasic程序代码中 每条语句占一行 一个语句行的长度最多不能超过1023个字符 函数是指给定具体的实际参数值 将从函数返回一个函数值 语句与函数的区别 语句一般是执行具体的功能 没有返回值 而函数一般有一个返回值 2 7 2VisualBasic语句的书写规则 1 书写语句时 应严格按照VisualBasic的语法格式书写 否则 会产生语法错误 2 一般情况下 一条语句占一行 3 如果希望在一行中书写多条语句 则语句之间要用冒号 分隔 4 如果希望将一条语句书写成多行 则在断开的语句行末尾加续行符 一个空格加一个短下划线 5 对于由一行或多行紧密相关的语句组成的语句组 建议采用左缩进 如 左缩进两个字符 来体现语句组的层次结构 以便于程序阅读和维护 2 7 3VisualBasic基本语句1 赋值语句赋值语句是程序设计中最基本的语句 它可以把指定的值赋给某个内存变量或某个对象的属性 其语法格式如下 或 其中 如果是当前窗体可以省略 需要强调的是 是赋值运算符 它的含义是将右边的表达式的值赋给左边的变量 内存变量或属性变量 执行顺序是 先计算赋值运算符 右边表达式的值 再赋给左边的变量 赋值运算符左边一定是变量名 例2 5 交换两个内存变量的值 设有两个内存变量x和y x赋值为10 y赋值为20 编写程序将内存变量x和y的值互换 PrivateSubCommand1 Click DimxAsInteger yAsInteger tAsIntegerx 10y 20Label1 Caption 交换前 x x y yt xx yy tLabel2 Caption 交换后 x x y yEndSub 2 对象卸载语句对象卸载语句实现将对象 窗体或控件 从内存中卸载的功能 一般结束应用程序都要将窗体从内存中卸载 对象卸载语句的语法格式如下 Unload由于当前窗体可以使用窗体名或Me 因此 卸载当前窗体时 可以使用Unload窗体名或UnloadMe比较常用的是UnloadMe 3 暂停语句Stop4 结束语句End5 注释语句 1 Rem注释内容 2 注释内容 2 8符号常量的作用域系统定义的符号常量在程序代码中随时都可以使用 没有作用域的限制 而用户自定义的符号常量 根据定义的位置和使用的关键字不同 有不同的作用域 用户自定义的符号常量的作用域从小到大可以分为三类 1 过程级符号常量 一般在过程的开始位置定义符号常量 定义时省略Const前的关键字 这类符号常量的作用域仅仅是其所在的过程 在其他过程中无效 2 模块级符号常量 在模块的通用声明段定义符号常量 定义时在Const前用关键字Private或省略 这类符号常量的作用域仅仅是其所在的模块 在其他模块中无效 3 全局级符号常量 在标准模块 不能在窗体模块或类模块 的通用声明段定义符号常量 定义时在Const前加关键字Public或Global 这类符号常量在整个应用程序的所有模块中都有效 2 9变量的作用域与生存期2 9 1变量的作用域变量根据定义的位置和使用的关键字不同 有不同的作用域 变量的作用域从小到大可以分为三类 1 过程级变量 一般在过程的开始位置用关键字Dim或Static定义 两个关键字的含义不同 决定了变量的生存期 过程级变量的作用域仅仅是其所在的过程 在其他过程中无效 2 模块级变量 在模块的通用声明段用关键字Dim或Private定义 两个关键字的含义完全相同 为了与关键字Public相对应 建议使用关键字Private定义 模块级变量的作用域仅仅是其所在的模块 在其他模块中无效 3 全局级变量 在模块的通用声明段用关键字Public或Global Global只能用在标准模块的通用声明段 定义 全局级变量在整个应用程序的所有模块中都有效 当全局级变量是在窗体模块的通用声明段定义时 在其它模块中引用 要指出窗体模块的名字 即 窗体模块名 全局级变量名 当全局级变量是在标准模块的通用声明段定义时 如果变量名惟一 在其它模块中可以直接引用 即 全局级变量名 否则 也要指出标准模块的名字 即 标准模块名 全局级变量名 例2 6 计算圆的面积 过程级变量和过程级符号常量示例 PrivateSubCommand1 Click DimrAsSingle sAsSingleConstpi 3 14r r 1s pi r 2Label2 Caption 半径r r pi pi vbCrLf 圆的面积s sEndSub PrivateSubCommand2 Click DimrAsSingle sAsSingleConstpi 3 1415926r r 1s pi r 2Label3 Caption 半径r r pi pi vbCrLf 圆的面积s sEndSub 例2 7 计算圆的面积 模块级变量和模块级符号常量示例 Rem在窗体模块Form1的通用声明段定义模块级变量和模块级符号常量DimrAsSingle 也可写成PrivaterAsSingleConstpi 3 14 也可写成PrivateConstpi 3 14PrivateSubCommand1 Click DimsAsSingler r 1s pi r 2Label2 Caption 半径r r pi pi vbCrLf 圆的面积s sEndSubPrivateSubCommand2 Click DimsAsSingler r 1s pi r 2Label3 Caption 半径r r pi pi vbCrLf 圆的面积s sEndSub 例2 8 计算圆的面积 在窗体模块中定义全局级变量和模块级符号常量示例 窗体模块Form1的程序代码如下 Rem在窗体模块Form1的通用声明段定义全局级变量和模块级符号常量PublicrAsSingleConstpi 3 14 也可写成PrivateConstpi 3 14PrivateSubCommand1 Click DimsAsSingler r 1s pi r 2Label2 Caption 半径r r pi pi vbCrLf 圆的面积s sEndSubPrivateSubCommand2 Click DimsAsSingler r 1s pi r 2Label3 Caption 半径r r pi pi vbCrLf 圆的面积s sEndSubPrivateSubCommand3 Click Form2 Visible TrueEndSub 窗体模块Form2的程序代码如下 Rem在窗体模块Form2的通用声明段定义模块级符号常量Constpi 3 1415926 也可写成PrivateConstpi 3 1415926PrivateSubCommand1 Click DimsAsSingleForm1 r Form1 r 1s pi Form1 r 2Label2 Caption 半径r Form1 r pi pi vbCrLf 圆的面积s sEndSubPrivateSubCommand2 Click DimsAsSingleForm1 r Form1 r 1s pi Form1 r 2Label3 Caption 半径r Form1 r pi pi vbCrLf 圆的面积s sEndSub 例2 9 计算圆的面积 在标准模块中定义全局级变量和全局级符号常量示例 标准模块Module1的程序代码如下 Rem在标准模块Module1的通用声明段定义全局级变量和全局级符号常量PublicrAsSingle 也可将Public换成GlobalPublicConstpi 3 14 也可将Public换成Global 注意 在标准模块中定义全局级变量和全局级符号常量时 可以将关键字Public换成Global 但在其他模块中不可以 2 9 2过程级变量的生存期变量的生存期指的是变量能够存在的时间 在过程的开始位置 用关键字Dim定义的变量称

温馨提示

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

评论

0/150

提交评论