过程是VB的基本组成单位.ppt

上传人:zhu****ei 文档编号:5407027 上传时间:2020-01-28 格式:PPT 页数:50 大小:221KB
返回 下载 相关 举报
过程是VB的基本组成单位.ppt_第1页
第1页 / 共50页
过程是VB的基本组成单位.ppt_第2页
第2页 / 共50页
过程是VB的基本组成单位.ppt_第3页
第3页 / 共50页
点击查看更多>>
资源描述
第六章过程 过程是VB的基本组成单位 一些复杂的任务可以分解成为基本的过程来负责完成 过程的作用 当需解决的问题规模较大 复杂时 可以按功能细分成一个一个小的功能模块 这样的小程序段 在VB中被称为过程 过程是VB程序的基本组成单位 过程的分类 VB过程分为子过程 Sub 函数过程 Function 属性过程 Property 三种 本书我们主要学习子过程和函数过程 考试时 要严格区分子过程和函数过程的用法 引例 6 1定义Sub子过程 我们早就使用过子过程 因为在VB中每一个事件过程都是子过程 VB程序是从某个事件过程首先驱动开始的 本章主要学习用户自定义子过程的定义方法 6 1 1事件过程 PrivateSub对象名 事件名 参数列表 局部变量和常量的声明 语句块 ExitSub 语句块EndSub事件过程原型用户不能改变 事件过程是私有的 6 1 2通用子过程 用户自定义过程 Private Public Static Sub过程名 形参列表 局部变量和常量的声明 语句块 ExitSub 语句块EndSub通用子过程的作用在于将重复出现的程序段或功能较复杂的程序段独立或细分出来的小的程序段 即为通过子过程 6 1 2通用子过程 用户自定义 子过程定义说明 1 子过程以Sub开始 EndSub结束 中间可以利用ExitSub中途退出过程 2 以Private定义的子过程是私有的 只允许本模块内的过程调用 用Public定义的子过程是公有的 允许被整个工程中的任意过程调用 系统缺省为Public 3 Static表示静态 局部 变量 变量一经定义 在整个程序运行期间不会被重新初始化 不能使用在 通用 声明 字段中 6 1 2通用子过程 用户自定义 4 过程名的命名规则与变量名一样 即第一个字符必须是字母或汉字 后面由字母 汉字 数字或下划线组成 不能使用VB中的关键字 过程名不要重名 5 形参列表 这个列表的功能再于接收必要的数据信息 建立与主调程序之间的关系 参数的个数可以为零个 1个甚至多个 参数间用逗号分隔 括号不可省略 6 形参列表的形式 ByValaAsInteger ByRefbAsInteger 6 1 2通用子过程 用户自定义 7 EndSub标志Sub过程执行结束 程序将返回调用该Sub过程的语句处继续执行 8 过程不能嵌套定义 PrivateSubCommand1 Click CallP EndSub PrivateSub Print 输出结果为 EndSub 6 1 2通用子过程 用户自定义 Sub子过程的建立方法1 利用命令建立 不常用 进行 代码窗口 执行 工具 菜单中的 添加过程 命令 在出现的对话框中进行设置 6 1 2通用子过程 用户自定义 Sub子过程的建立方法2 直接在代码窗口中生成进行 代码窗口 选择 通用 声明 光标停留在所有过程外面的空白行处 按Sub子过程的定义规则输入PrivateSub过程名 参数 按回车键 即可创建一个空的Sub子过程 6 1 2通用子过程 用户自定义 Sub子过程的过程体代码 子过程的功能主要是在过程体内完成的 过程名主要是为找到这个过程而提供路线的 子过程的代码和事件过程的代码类似 如 PrivateSubChange x1AsInteger x2AsInteger DimTempAsIntegerTemp x1x1 x2x2 TempEndSub 6 2定义Function过程 Function过程又称函数过程 在第三章中 我们学习了大量的VB系统函数 这些函数用户只可以使用 不可以修改 VB提供的Function过程 就是让用户可以自己创建特殊功能的函数 用户自定义函数 6 2定义Function过程 定义Function过程的形式如下 Private Public Static Function函数名 参数列表 As数据类型 局部变量和常数声明 语句块函数名 表达式 ExitFunction 语句块函数名 表达式EndFunction 6 2定义Function过程 定义Function过程说明 1 Function过程以Function语句开头 以EndFunction结束 中间代码部分为函数体 2 函数名有返回值 其值类型由As数据类型指定 3 函数名不同于子过程名 在VB中 为函数名赋予了存储值的功能 而过程名不可以 所以函数体内一般都会至少为函数名赋值一次 如果不赋值 函数返回值默认为0或空 4 函数中途可以利用ExitFunction退出 6 2定义Function过程 例如 求n PrivateFunctionfac ByValnAsInteger DimiAsIntegerIfn 0Thenfac 1 ExitFunctionElsefac 1Fori 1Tonfac fac iNextiEndIfEndFunction 6 2定义Function过程 例如 求gcd m n 最大公约数PrivateFunctiongcd ByValm ByValn Dimr t Ifm0m nn rr mModnLoopgcd nEndFunction PrivateSubChange x1 x2 DimTempAsIntegerTemp x1x1 x2x2 TempEndSub 6 3过程调用 除了事件过程是由使用者发出动作触发外 多数过程都是要间接的由事件过程或其他过程调用才能够使用 6 3 2Sub过程调用 Sub子过程调用方法 1 用Call语句调用Sub过程Call过程名 实参表 说明 过程名为被调用过程的名字 实参与形参是对应的 个数 类型一一对应 在过程定义的列表中为形参 在调用时 为实参 实参可以是具体的值 或有值的变量 属性 而形参则是负责接收实参值的 2 直接将过程写成语句形式 过程名实参表说明 这种调用形式 不用加Call 同时要将实参表的括号去掉并与过程名之间加一个空格 6 3 2Sub过程调用 编写一个子过程 打印杨辉三角形 PrivateSubYH nAsInteger Dima AsInteger i j Redima 1Ton 1Ton Fori 1TonForj 1ToiIfj 1Ori jThena i j 1Elsea i j a i 1 j a i 1 j 1 EndIfPrintTab 6 j Len Cstr a i j 1 a i j NextjPrintNextiEndSub 6 3 3调用Function过程 调用Function过程的方法比较简单 与VB内部函数的调用方法一样 即在表达式中写出它的名称和相应的参数 v 函数名 实参列表 Print函数名 实参列表 当然也可以用Call语句形式 此时将放弃函数名返回值的功能 功能与子过程一致 6 3 4调用其他模块中的过程 当一个过程可以被其他模块调用时 首先要求这个过程为Public公有的 1 调用窗体模块中的公有过程Call窗体名 子过程名 实参表 2 调用标准模块中的公有过程 在没有重名的前提下 可直接调用 Call子过程名 实参表 否则 CallModule1 子过程名 实参表 例题 编写一个求任意三角形面积的函数 PrivateFunctionArea a b c Dimt t a b c 2Area Sqr t t a t b t c EndFunction 例题 编写一个求任意三角形面积的子过程 PrivateSubArea a b c s Dimz z a b c 2s Sqr z z a z b z c EndSub 6 4 1形参与实参 形参 置于过程定义时 参数列表中的变量或数组 在过程被调用前 系统不对其分配空间 实参 当程序中想调用某过程时 所提供的实际值 当实参和形参结合的时候 形参才被分配空间 接收由实参传递过来的值 形参 实参个数 类型 位置要一致 6 4 1形参与实参 常见的错误PrivateSubF1 a b EndSubPrivateSubCommand1 Click Dimx y x 3 14 y 123CallF1 x y CallF1 x EndSub 6 4 2 3参数传递方式 传值 ByVal 传址 ByRef或省略默认 区别1 形参定义前面放的关键字不一样 区别2 形参接收到的值不一样 区别3 形参对实参的影响不一样 6 4 2 3参数传递方式 例如 两个数的交换 PrivateSubExchange ByVala ByValb Dimt t aa bb tPrinta bEndSub PrivateSubCommand1 Click Dimx y x 12y 21CallExchange x y Print 主过程中 x yEndSub 6 4 2 3参数传递方式 说明 形参前加ByVal时表示传值不加或加ByRef时表示传址传值是单方向的传址是 双方向的 6 4 2 3参数传递方式 Privatesubadd xasinteger yasinteger zasinteger z x yx x 1y y 1print 子过程中 x y zEndsubPrivatesubForm Click dimaasinteger basinteger casintegera 3 b 2 c 1adda b c 或者写成Calladd a b c print 外部过程中 a b cEndsub 6 4 2 3参数传递方式 Privatesubadd ByValxasinteger ByValyasinteger ByValzasinteger z x yx x 1y y 1print 子过程中 x y zEndsubPrivatesubForm Click dimaasinteger basinteger casintegera 3 b 2 c 1adda b cprint 外部过程中 a b cEndsub 6 4 2 3参数传递方式 下列程序运行后 单击Command1结果为 PrivateSubCommand1 Click a 10 b 20Callxy1 a b Printa bxy2a bPrinta bEndSub PublicSubxy1 x ByValy x x yy x yx x yEndSubPublicSubxy2 ByValx y x x yy x yx x yEndsub 6 4 4数组 元素 参数 在某些问题中 会将数组中的某个值或者全部元素传递给形参编写一个子过程 求任意一维数组中存放数据的乘积 程序 6 4 4数组 元素 参数 编写一个函数求任意数组中的最大值 PrivateFunctionMax a Dimi m m a LBound a Fori LBound a 1ToUBound a Ifm a i Thenm a i NextiMAX mEndFunction 6 4 4数组 元素 参数 编写一个子过程求任意数组中的最大值 PrivateSubMax a ByRefm Dimi m a LBound a Fori LBound a 1ToUBound a Ifm a i Thenm a i NextiEndSub 程序 6 4 5对象参数 对象参数的传递为传址 6 5嵌套过程和递归过程 嵌套过程并非嵌套定义过程 在VB中不可以嵌套定义过程 这里指嵌套调用过程 即在一个被调用过程中还可以调用另一个过程递归是指程序的递推与回归调用是本章中一个非常重要的概念 调用伴随着等待 系统会保留 现场 等待从被调用过程返回调用过程 6 5 1嵌套过程 书中的例子自己看 求任意三角形面积 程序 SubCommand1 Click CallF1 y PrintyEndSub SubF1 x x 4 F2 x 1 EndSub FunctionF2 x F2 3 F3 x 1 EndSub FunctionF3 x F3 2 xEndSub 6 5 2递归过程 递归过程属于嵌套调用过程的一种特殊情况 在VB中 允许某过程自己调用自己 这样调用被称为递归调用 递归包括递推式和终止值两个缺一不可的条件 程序 6 5 2递归过程 Functionfac n Ifn 1thenfac 1Elsefac n fac n 1 EndIfEndfunction Functionfac n Ifn 1thenfac 1Elsefac n fac n 1 EndIfEndfunction Functionfac n Ifn 1thenfac 1Elsefac n fac n 1 EndIfEndfunction 递推 回归 SubForm Click k 3x fac 3 EndSub 6 5 2递归过程 求最大公约数PrivateFunctiongcd ByValm ByValn IfmModn 0Thengcd nElsegcd gcd n mModn EndIfEndFunction 6 5 2递归过程 记住 若上述求阶乘的函数中少了 Ifn 0orn 1Thenfac 1即仅有语句 fac n fac n 1 程序运行将造成何结果 由此可见构成递归的结构如下 递归结束条件及结束时的值 能用递归形式表示 并且递归向终止条件发展 6 6变量的作用域 变量的作用域 即变量起作用的范围和生存期变量的作用域在VB中分三个级别 过程级 模块级 工程级 6 6变量的作用域 过程级 指在某过程内定义的变量 定义时可以利用Dim和Staic两个关键字 这种级别的变量又称为局部变量模块级 指在窗体的通用声明和标准模块中用Dim和Private定义的变量工程级 指在窗体的通用声明和标准模块中用Public定义的变量 这个级别的变量又称为全局变量 6 6变量的作用域 过程级的作用域 仅在定义它的过程中起作用模块级的作用域 对定义它的窗体或标准模块中的全部过程都起作用工程级的作用域 对整个程序中的任意窗体任意模块中的过程都起作用 6 6变量的作用域 同名变量的使用 当变量的级别不一样时 可以同名同名在使用上以最内层为主特殊情况下 需要指出属于哪个窗体或模块Form1 xModule1 y 6 7综合应用 若n 3 PrivateSubRightMove xx Dimt t xx UBound xx Fori UBound xx 1ToLBound xx Step 1xx i 1 xx i Nextixx LBound xx tEndSub PrivateSubCommand1 Click Dima 1To10 n i Fori 1To10a i iNextin InputBox 输入要向右移动的位数n Fori 1TonCallRightMove a NextiForeacheInaPrinte NextEndSub 6 7综合应用 十进制向其他进制转换遵循除r取余法 倒着取 直到商为0 PrivateFunctionT m n Dims r DoWhilem0r mModnIfr 10Thens Chr 65 r 10 sElses r sEndIfm m nLoopT sEndFunction 6 7综合应用 加密和解密简单加密的思想是 将每个字母C加一序数K 式子c chr Asc c k 例如序数k为5 这时 A F a f B G 当加序数后的字母超过 Z 或 z 则c chr Asc c k 26 解密为加密的逆过程 程序 6 7综合应用 字符串处理 HELLOPASSENGER welcomeTOMytaxi Hellopassenger Welcometomytaxi 程序
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!