第6章 过程整理PPT讲稿.ppt
第第6章章 过程整理过程整理第1页,共26页,编辑于2022年,星期一6.1 函数过程的定义和调用函数过程的定义和调用(P125)例例6-1(补充补充)求组合数求组合数例例6-1-1(P125 自学自学)已知多边形各条边和对角线的长度已知多边形各条边和对角线的长度,求多边形的面积求多边形的面积.第2页,共26页,编辑于2022年,星期一w函数的默认作用域是函数的默认作用域是Public;w可以使用可以使用 Exit Function语句强制退出函数语句强制退出函数.w函数体中函数体中必须至少必须至少有一条语句为函数名赋值。例如有一条语句为函数名赋值。例如 函数名函数名=表达式表达式6.1.1 函数过程的定义函数过程的定义(P126)Private|Public Function 函数名函数名(形参表形参表)AS 数据类型数据类型函数体函数体;End Function格式为格式为:形参名形参名1 As 类型类型,形参名形参名2 As 类型类型 第3页,共26页,编辑于2022年,星期一6.1.2 函数的调用函数的调用w与系统内部函数的调用方法相同与系统内部函数的调用方法相同.格式为格式为:例例6-2(P127)编写一个求最大公约数的函数编写一个求最大公约数的函数.例例6-3(补充补充)编写一个函数编写一个函数,查找一个字符串在另外一个字符串查找一个字符串在另外一个字符串中的出现次数中的出现次数.例例6-3-1(P128 自学自学)编写一个编写一个 函数函数,统计字符串中汉字的个数统计字符串中汉字的个数.函数名函数名(实参列表实参列表)第4页,共26页,编辑于2022年,星期一6.2 子过程的定义和调用子过程的定义和调用(P129)例例6-4(P129)编写一个过程编写一个过程,对对Label1控件进行移动控件进行移动,其中通过参数其中通过参数Tag的值的值(1或或-1)决定向右下角还是左上角移动决定向右下角还是左上角移动.第5页,共26页,编辑于2022年,星期一6.2.1 子过程的定义子过程的定义(P130)Private|Public Sub 子过程名子过程名(形式参数表形式参数表)语句块语句块 其中可以使用其中可以使用Exit Sub语句强制退出过程语句强制退出过程End Subw 默认为默认为 Public(公用过程公用过程);w 过程名的命名规则遵循标识符的命名规则过程名的命名规则遵循标识符的命名规则.第6页,共26页,编辑于2022年,星期一6.2.2 子过程的调用子过程的调用(P130)Call 子过程名子过程名(实际参数表实际参数表)说明说明:1)无参数时,连同括号一起省略无参数时,连同括号一起省略;2)参数个数多于一个时用逗号分隔参数个数多于一个时用逗号分隔;3)实参可以是常量、变量、数组或表达式。实参可以是常量、变量、数组或表达式。w格式格式1:子过程名子过程名 实际参数表实际参数表w格式格式2:第7页,共26页,编辑于2022年,星期一 子过程示例子过程示例例例6-5(P131)分别编写一个子过程分别编写一个子过程(Sub)和一个函数过程和一个函数过程(Function),统计字统计字符串符串S中单词中单词“the”出现的次数出现的次数.第8页,共26页,编辑于2022年,星期一6.3 参数传递参数传递(P132)按地址传递按地址传递(ByRef,默认方式默认方式)按值传递按值传递(ByVal)w参数的传递方法参数的传递方法Sub ProcThe(ByVal s As String,ByRef Count As Integer)End Subw形参形参过程定义时,过程名后的圆括号中出现的变量名过程定义时,过程名后的圆括号中出现的变量名.w实参实参过程调用时,过程名参数过程调用时,过程名参数.Call ProcThe(Text1,n)实参与形参的个实参与形参的个数、类型、位置数、类型、位置必须一一对应必须一一对应第9页,共26页,编辑于2022年,星期一6.3.1 传值传值(ByVal)和传地址和传地址(ByRef)1.传值传值(ByVal)将实参的值传递给形参将实参的值传递给形参.实参和形参各自占用不同的存储空间实参和形参各自占用不同的存储空间,因此因此,形参形参的改变不会影响实参的改变不会影响实参.形参形参变量名;变量名;实参实参可以是变量名、常量、表达式、数组元素可以是变量名、常量、表达式、数组元素.第10页,共26页,编辑于2022年,星期一2.传地址传地址(ByRef)形参和实参共用同一个存储单元,因此,形参的改变形参和实参共用同一个存储单元,因此,形参的改变影响实参。影响实参。形参形参变量名;变量名;实参实参变量名或数组元素。变量名或数组元素。如果实参是常量或表达式,则按传值方式传如果实参是常量或表达式,则按传值方式传递参数。递参数。第11页,共26页,编辑于2022年,星期一传值和传地址示例传值和传地址示例例例6-6 按值和按地址传递参数按值和按地址传递参数(补充补充)。例例6-6-1(P133)阅读交换两个数的过程阅读交换两个数的过程Swap1和和Swap2,总结总结传值和传地址的功能。传值和传地址的功能。第12页,共26页,编辑于2022年,星期一6.3.2 数组参数的传递数组参数的传递(P134)例例6-7 数组作参数实现排序和二分查找数组作参数实现排序和二分查找(补充补充)。第13页,共26页,编辑于2022年,星期一数组作参数的使用说明数组作参数的使用说明(P135)形参数组形参数组过程定义时只写出数组名和圆括号,不过程定义时只写出数组名和圆括号,不指定数组维数的上界;指定数组维数的上界;实参数组实参数组过程调用时,只写出数组名和圆括号(可过程调用时,只写出数组名和圆括号(可省写);省写);数组作参数时,只能是传地址方式,即形参数组与实参数组作参数时,只能是传地址方式,即形参数组与实参数组共用同一段内存空间。数组共用同一段内存空间。第14页,共26页,编辑于2022年,星期一6.3.3 使用可选参数使用可选参数(补充补充)1.可选参数可选参数形参表中,使用形参表中,使用 Optional 关键字定义的形参为可选参关键字定义的形参为可选参数;数;例例6-8 可选参数可选参数(补充补充)2.使用说明使用说明所有可选形参必须在形参表的最后声明;所有可选形参必须在形参表的最后声明;可以在形参表中为可选参数指定默认值;可以在形参表中为可选参数指定默认值;过程调用时,可以为可选参数指定对应的实参,过程调用时,可以为可选参数指定对应的实参,也可以不指定对应的实参。也可以不指定对应的实参。第15页,共26页,编辑于2022年,星期一6.4 过程的嵌套和递归调用过程的嵌套和递归调用(P136)1.过程的嵌套调用过程的嵌套调用一个被调用的过程中又调用了另外一个过程一个被调用的过程中又调用了另外一个过程.例例6-9 嵌套调用示例嵌套调用示例(补充补充)第16页,共26页,编辑于2022年,星期一2.递归调用递归调用在一个过程中调用了本身在一个过程中调用了本身,称为递归调用称为递归调用.例例6-10 使用递归调用求使用递归调用求n!(P137)第17页,共26页,编辑于2022年,星期一6.5 变量的作用域变量的作用域(P139)事件过程事件过程(Sub)函数过程函数过程(Function)子过程子过程(Sub)函数过程函数过程(Function)子过程子过程(Sub)应用程序应用程序(.vbp)窗体模块窗体模块(.frm)类模块类模块(.cls)标准模块标准模块(.bas)第18页,共26页,编辑于2022年,星期一6.5.1 变量的作用域变量的作用域(P140)w局部变量局部变量w模块级变量模块级变量:使用使用Dim或或Private声明声明w全局变量全局变量:使用使用Public声明声明非静态变量非静态变量:使用使用Dim声明声明静态变量静态变量:使用使用Static声明声明第19页,共26页,编辑于2022年,星期一1.局部变量局部变量在过程在过程(Sub或或Function)内部声明的变量,只能在内部声明的变量,只能在本过程中使用本过程中使用.局部变量使用局部变量使用Dim或或Static关键字声明关键字声明;第20页,共26页,编辑于2022年,星期一2.模块级变量模块级变量在模块的所有过程之外使用在模块的所有过程之外使用Dim或或Private关键字声明的关键字声明的变量。变量。模块级变量只能在本模块的各过程中使用。模块级变量只能在本模块的各过程中使用。第21页,共26页,编辑于2022年,星期一3.全局变量全局变量在模块的所有过程之外使用在模块的所有过程之外使用Public关键字声明的变量。关键字声明的变量。全局变量可以在所有模块的所有过程中使用。全局变量可以在所有模块的所有过程中使用。在标准模块中声明的全局变量在其他模块中直接使用;在标准模块中声明的全局变量在其他模块中直接使用;在非标准模块中声明的全局变量在其他模块中按如下格式使在非标准模块中声明的全局变量在其他模块中按如下格式使用:用:模块名模块名.变量名变量名声明变量的模块第22页,共26页,编辑于2022年,星期一4.变量的生存期变量的生存期(补充补充)(1)过程内部使用过程内部使用Dim声明的变量声明的变量w过程被调用时过程被调用时,变量获得存储空间变量获得存储空间,过程调用结束过程调用结束,释放变释放变量占用的存储空间量占用的存储空间.(2)全局变量、模块级变量和全局变量、模块级变量和Static变量变量w在整个应用程序运行过程中一直保持它们的值在整个应用程序运行过程中一直保持它们的值,但三种变量但三种变量的作用域不同的作用域不同.wStatic变量的作用域是局部的变量的作用域是局部的.第23页,共26页,编辑于2022年,星期一例例6-11 变量的作用域变量的作用域局部变量、模块级变量和全局变量的作用范围局部变量、模块级变量和全局变量的作用范围.第24页,共26页,编辑于2022年,星期一6.5.2 静态变量静态变量(P142)在过程内部使用在过程内部使用Static语句声明的变量;语句声明的变量;静态变量在程序中第一次出现时,获得存储空间,静态变量在程序中第一次出现时,获得存储空间,直到程序运行结束才释放该空间。直到程序运行结束才释放该空间。例例6-12 利用静态变量,统计单击窗体的次数。利用静态变量,统计单击窗体的次数。(P142)第25页,共26页,编辑于2022年,星期一6.6 综合应用综合应用(P143)重点自学以下内容重点自学以下内容P143 例例6-13 数制转换程序数制转换程序;P145 例例6-14 加密加密/解密程序解密程序;P146 例例6-15 顺序查找程序顺序查找程序.第26页,共26页,编辑于2022年,星期一