已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章过程 7 1过程概述 7 1 1案例引入 程序运行时单击 按钮 求7 11 10 的值 并将计算结果显示在Text1中 7 1 2过程 在程序中使用过程可以实现代码重用 不仅能提高编程效率 而且提高了程序的可读性 在VisualBasic中 除了系统提供的内部函数过程和事件过程外 还有一类是用户自定义的 通用过程 通用过程一般可以分为Function 函数 过程和Sub 子程序 过程两种类型 在程序设计过程中 经常将一些功能相对独立的 能完成一定任务的程序段独立出来 在使用该代码的位置使用简单的调用语句并指定参数就可以实现该代码的所规定的功能 这种独立定义的代码段称为 过程 7 2Function过程 7 2 1Function过程的定义 1 定义格式 Public Private Static Function函数名 形参列表 As类型 局部变量或常量声明语句块 ExitFunction 语句块 函数名 表达式EndFunction 定义函数过程的名称 参数以及构成函数体的代码 函数体的主要功能是根据 形参列表 指定的参数求得一个函数值 并将该值保存在 函数名 中 作为函数过程的返回值 7 2 1Function过程的定义 1 定义格式 Public Private Static Function函数名 形参列表 As类型 局部变量或常量声明语句块 ExitFunction 语句块 函数名 表达式EndFunction Public Private Public用于定义全局级函数过程 Private用于定义模块级函数过程 只能被本窗体或本标准模块中的过程调用 7 2 1Function过程的定义 1 定义格式 Public Private Static Function函数名 形参列表 As类型 局部变量或常量声明语句块 ExitFunction 语句块 函数名 表达式EndFunction Static 如果使用Static关键字 则函数过程中所有局部变量均为静态变量 即过程调用结束后 其值仍然保留 如果没有使用该项 则局部变量为动态变量 7 2 1Function过程的定义 1 定义格式 Public Private Static Function函数名 形参列表 As类型 局部变量或常量声明语句块 ExitFunction 语句块 函数名 表达式EndFunction 函数名 函数过程的名称 其命名规则与标识符的命名规则相同 但不能和系统的内部函数或通用过程同名 也不能与已定义的全局变量或本模块中模块级变量同名 7 2 1Function过程的定义 1 定义格式 Public Private Static Function函数名 形参列表 As类型 局部变量或常量声明语句块 ExitFunction 语句块 函数名 表达式EndFunction 形参列表 ByVal ByRef 变量名 As类型 7 2 1Function过程的定义 1 定义格式 Public Private Static Function函数名 形参列表 As类型 局部变量或常量声明语句块 ExitFunction 语句块 函数名 表达式EndFunction As类型 函数返回值的数据类型 如果省略 则默认为Variant类型 ExitFunction 用于退出函数过程 一般与条件语句配合使用 7 2 1Function过程的定义 1 定义格式 Public Private Static Function函数名 形参列表 As类型 局部变量或常量声明语句块 ExitFunction 语句块 函数名 表达式EndFunction 函数过程的返回值通过赋值语句 函数名 表达式 实现返回 如果没有 函数名 表达式 则数值型函数返回0 字符串函数返回空串 7 2 1Function过程的定义 2 Function过程的建立 在代码窗口把插入点放在所有现有过程之外 键入Function函数名语句并按回车 代码窗口自动显示EndFunction 选择 工具 添加过程 命令 打开 添加过程 对话框 7 2 1Function过程的定义 2 Function过程的建立 编写一个计算圆面积的Function过程Carea 7 2 1Function过程的定义 2 Function过程的建立 编写一个素数判断的Function过程IsPrime 7 2 2Function过程的调用 函数名 必须是已经定义的Function函数名 实参列表 指要传递给函数过程的常量 变量或表达式 各个参数之间用逗号分隔 函数名 实参列表 按指定的参数调用已定义的函数过程 7 2 2Function过程的调用 程序运行时 在Text1中输入圆半径的值 单击 圆面积 按钮 调用Carea函数来计算圆面积 并在Text2中显示计算结果 7 2 2Function过程的调用 程序运行时单击 输出显示 按钮 调用IsPrime函数过程在Text1中输出100 300的全部素数 7 3Sub过程 7 3Sub过程 引例 程序运行时单击窗体 通过调用MyStar过程在窗体上输出6行 符号 而且第1行有1个 符号 第2行有2个 符号 依此类推 第6行有6个 符号 7 3 1Sub过程的定义 Public Private Static Sub过程名 形参列表 局部变量或常量声明语句块 ExitSub 语句块 EndSub 1 定义格式 定义子程序过程的名称 参数以及构成过程体的代码 过程体的主要功能是根据 形参列表 指定的参数进行一系列处理 通过形参列表中的参数可以返回零个或多个值 7 3 1Sub过程的定义 Public Private Static Sub过程名 形参列表 局部变量或常量声明语句块 ExitSub 语句块 EndSub 1 定义格式 Sub过程的过程名没有值 也没有类型 同样也不能在过程体内对过程名进行赋值 Sub过程可以通过 形参列表 返回零个到多个值 7 3 1Sub过程的定义 Public Private Static Sub过程名 形参列表 局部变量或常量声明语句块 ExitSub 语句块 EndSub 1 定义格式 ExitSub用于退出Sub过程 一般与条件语句配合使用 Sub过程不允许嵌套定义 即不能在一个过程体内再定义另一个过程 7 3 1Sub过程的定义 2 Sub过程的建立 编写一个计算n 的Sub过程Sjc 7 3 1Sub过程的定义 2 Sub过程的建立 编写一个计算圆面积和圆周长的Sub过程Sac 7 3 2Sub过程的调用 过程名 必须是已经定义的Sub过程名 实参列表 指要传递给Sub过程的常量 变量或表达式 各个参数之间用逗号分隔 Call过程名 实参列表 或过程名 实参列表 按指定的参数调用已定义的Sub过程 7 3 2Sub过程的调用 如果实参要获得子过程的返回值 则实参只能是变量 与形参同类型的简单变量 数组名 不能是常量或表达式 使用Call关键字调用过程 实参列表必须用圆括号括起来 如果直接使用过程名调用 实参列表则不必用圆括号括起来 Call过程名 实参列表 或过程名 实参列表 按指定的参数调用已定义的Sub过程 7 3 2Sub过程的调用 程序运行时单击 按钮 调用例7 7编写的Sub过程Sjc求7 11 10 的值 并将计算结果显示在Text1中 7 3 2Sub过程的调用 程序运行时 在Text1中输入圆半径的值 单击 计算 按钮 调用Sub过程Sac来计算圆面积和周长 并在Label4和Label5中显示计算结果 7 4参数传递 7 4 1形参与实参 在定义Sub或Function过程时 出现在定义语句中的参数称为形式参数 简称形参 形参只能是变量或后面带一对圆括号的数组名 在调用Sub或Function过程时 出现在调用语句中的参数称为实际参数 简称实参 实参可以是常量 变量 数组元素 表达式和后面带一对圆括号的数组名 7 4 2地址传递与值传递 按地址传递可以实现调用过程与被调用过程之间数据的双向传递 在定义过程时 形参名前加ByRef关键字 规定了在调用此过程时 该参数是按地址传递的 对于按地址传递方式的参数传递 仅当实参为变量或数组 实参才会随形参的改变而改变 1 地址传递 地址传递是指当调用一个过程时 系统将实参变量的内存地址传递给被调用过程中相应的形参 使实参和形参具有相同地址 7 4 2地址传递与值传递 1 地址传递 7 4 2地址传递与值传递 在被调过程中对形参的任何操作都不会影响到实参 值传递是一种单向传递方式 在定义过程时 形参名前加上ByVal关键字 则该参数是按值传递的 把实参变量转换为 表达式 然后通过表达式的值传递给形参 这样形参的变化不会对实参产生影响 起到了 值传递 的作用 2 值传递 值传递是指当调用一个过程时 系统将实参的值复制给形参 之后实参与形参便断开了联系 7 4 2地址传递与值传递 2 值传递 第一种 在定义过程时 形参名前加上ByVal关键字 则该参数是按值传递的 7 4 2地址传递与值传递 2 值传递 第二种 把实参变量转换为 表达式 然后通过表达式的值传递给形参 这样形参的变化不会对实参产生影响 起到了 值传递 的作用 在调用过程中 将实参改为 实参 实参 0 实参 1 等方式 可将实参变量转化为表达式 7 4 3数组参数 在过程定义时 形参列表中的数组用 数组名 形式来表示 在过程调用时 实参列表中的数组可以只用 数组名 来表示 省略维数 但实参数组与形参数组的类型必须一致 使用数组作为参数时 只能按地址传递 不能按值传递 编写一个Function过程MaxOrMin 用于实现对任意一维数组求解其所有元素的最大值或最小值 7 4 4对象参数 1 窗体参数 如果使用窗体作为参数 则在定义过程时 形参的类型为Form 在调用过程时 对应的实参为窗体名称 程序运行时 单击窗体调用FormSet过程 设置窗体的标题属性 并在窗体上打印文本信息 7 4 4对象参数 2 控件参数 如果使用控件作为参数 则在定义过程时 形参的类型为Control 在调用过程时 对应的实参为控件的名称 编写一个Sub过程FontSet 设置控件的字体属性 程序运行时 单击窗体调用Sub过程FontSet 设置文本框的字体属性 7 4 5可选参数和可变参数 1 可选参数 如果在某个形参前加Optional关键字 则表示该参数为可选参数 在调用该过程时可以不提供对应于该形参的实参 编写一个函数过程SumNum 使其能计算任意两个数的和 也能计算任意3个数的和 7 4 5可选参数和可变参数 2 可变参数 如果使用ParamArray关键字将其参数列表中的最后一个参数声明为Variant类型 则该过程被调用时允许接收任意多个实参 编写一个函数过程MultiSum 可以接收任意多个实参 并可以计算任意多个数的总和 7 5嵌套调用和递归调用 7 5 1嵌套调用 在一个过程 Sub过程或Function过程 中调用另外一个过程 称为过程的嵌套调用 VisualBasic虽然不能嵌套定义过程 但可以嵌套调用过程 也就是主程序可以调用子过程 在子过程中还可以调用另外的子过程 这种程序结构称为过程的嵌套调用 7 5 1嵌套调用 程序运行时 在Text1和Text2中分别输入参数m和n 单击 按钮 求组合数的值 并在Text3中显示计算结果 组合数求解 7 5 2递归调用 递归调用是指在过程中直接或间接地调用过程本身 递归调用在处理阶乘运算 级数运算 幂指数运算等方面特别有效 设计一个正确的递归Sub过程或Function过程必须包括两个条件 递归形式 所求问题必须是一个可以转换为可迭代的数学模型 所求问题在迭代过程中有一个终止条件 7 5 2递归调用 斐波那契数列 程序运行时 在Text1中输入一个正整数n n 2 单击 显示 按钮 在Text2中显示斐波那契数列的前n项 7 6过程与变量的作用域 7 6 1过程的作用域 1 模块级过程 2 全局级过程 在窗体或标准模块内定义过程时 如果在Sub过程或Function过程前加上Private关键字 则这类过程只能被本窗体或本标准模块中的其他过程调用 称为模块级过程 其作用范围为本模块 在窗体或标准模块内定义过程时 如果在Sub过程或Function过程前加上Public关键字 或者省略Public和Private关键字 则这类过程可以被整个应用程序的所有模块中的过程调用 称为全局级过程 其作用范围为整个应用程序 7 6 1过程的作用域 2 全局级过程 7 6 2变量的作用域 变量的作用域是指变量在程序中的有效范围 变量的作用域分为局部变量 模块变量和全局变量 7 6 2变量的作用域 7 6 3变量的生存期 1 动态变量 2 静态变量 动态变量是指当变量所在的过程被调用时 系统为该变量分配内存单元 并对其初始化 然后再对其进行操作 静态变量是指变量所占的内存单元不会被释放 当再次调用该过程时 变量的值依然保留 在过程中用Dim关键字声明的局部变量是动态变量 在过程中用Static关键字声明的局部变量是静态变量 7 6 3变量的生存期 3 示例 运行时分别单击3次窗体 输出的结果分别为是什么 7 7多窗体与SubMain过程 7 7 1多窗体应用 多窗体是指一个应用程序中有多个并列的普通窗体 每个窗体可以有自己的界面和程序代码 可以完成不同的功能 1 建立多窗体
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 照明设计师诚信道德知识考核试卷含答案
- 水供应输排工诚信品质竞赛考核试卷含答案
- 2024年消防安全培训考试题(易错题)及答案
- 《GBT 30428.7-2017 数字化城市管理信息系统 第 7 部分:监管信息采集》专题研究报告
- 《GBT 2521.1-2016 全工艺冷轧电工钢 第 1 部分:晶粒无取向钢带(片)》专题研究报告
- 炼钢工岗后能力考核试卷含答案
- 实木及实木复合地板备料工岗位现场作业技术规程
- 公司数控火焰切割机操作工岗位职业健康技术规程
- 钢材热处理工岗前理论综合技能考核试卷含答案
- 地毯剪花工班组管理模拟考核试卷含答案
- 2025高考英语试题分类汇编:阅读理解七选五含解析
- 车间计件工资管理办法
- GB/T 7251.7-2025低压成套开关设备和控制设备第7部分:码头、露营地、市集广场、电动车辆充电站等特定应用的成套设备
- ICU无创机械通气护理查房
- 2025年工会专业知识考试题库及答案(真题版)
- 高速公路边坡治理总体施工组织设计(2025年9月19号)
- 2025新公安基础知识考试试题及参考答案
- 教师用餐补助管理办法
- 情绪与皮肤管理课件
- 健康梦中国梦课件
- 历史解释学前沿-洞察及研究
评论
0/150
提交评论