【教学课件】第八章子过程和函数.ppt
《【教学课件】第八章子过程和函数.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第八章子过程和函数.ppt(34页珍藏版)》请在三一办公上搜索。
1、第八章 子过程和函数,子程序和函数如何编写和使用子程序和函数的作用域VB内部函数介绍,VB模块,模块的两层含义:l工程中的资源:一个应用程序就是一个工程,窗体模块(.frm)、类模块(.cls)、标准模块(.bas)。这是一种高层次的模块划分,它们以独立的文件方式管理。l子程序和函数:一个窗体模块或标准模块也是由一些功能单元组成的,这就是子程序和函数,统称为过程(Procedure)。相对来说这是一种较低层次的模块划分。VB中提供的一些函数(比如上一章的UBound)以及事件过程就是这层含义。,VB文件的内容,每一类型的文件都可以包含过程和通用声明:过程:可以是子过程、函数过程或事件过程。每一
2、种过程都由代码组成。声明:在模块级通用声明部分放置常量、变量、动态链接库等的声明。,窗体模块文件*.frm,工程中的每个窗体都有一个与之相应的窗体模块文件窗体文件中包含:窗体本身及窗体上放置的所有控件的属性设置窗体级变量、常量、类型声明和外部过程 的声明所有相关的事件过程及窗体级通用过程说明:同一窗体模块内的通用过程与事件过程可以相互调用若窗体模块内的通用过程被声明为公有的,可以被其它窗体模块或标准模块中的过程调用。调用方法为:窗体名.过程名,如From1.Test。,标准模块文件*.bas,标准模块中的代码可以被工程中的所有模块,包括窗体模块、其它标准模块,所共享。标准模块中包含:通用过程没
3、有事件过程公共或模块级的变量、常量、外部过程和全局过程的声明说明:标准模块存放于独立的文件中,其扩展名为.bas。标准模块中通用过程缺省为公有(Public),即工程中的任一模块均可共享、调用。,类模块文件*.cls,类模块包含用来创建对象的类定义包含类的属性和方法的定义,子过程和函数,VB中的过程:事件过程(Private Sub 对象名_事件名)Sub过程,又称通用过程,或子过程Function过程,称函数,通用过程,一、定义和调用通用过程定义 Private|Public Static Sub 过程名(参数列表).End Sub 参数列表:ByVal 参数名 As 类型,调用Call C
4、hangeColor(3)ChangeColor 2,事件过程,二、定义和调用事件过程事件过程是VB事件驱动编程的重要机制。当VB中的某对象的某个事件被触发时,便自动调用对象的事件过程进行处理。定义事件过程使用的是固定格式,不需要人工书写:Private Sub 对象名_事件名(参数列表)事件响应代码End Sub事件过程除了由系统自动来调用之外,也可以将它看作一个普通的子程序在程序中用代码来调用,调用语法没有特殊之处。如:Call cmdAdd_Click,函数,三、定义和调用函数定义 Private|Public Static Function 过程名(参数列表).End Function
5、过程的区别:函数有数据类型,即返回值的类型,缺省为Variant给函数名本身赋值,即为返回值如果象调用过程一样调用函数,则放弃返回值,退出子过程和函数,End Sub:退出子过程End Function:退出函数可以在子过程体内或函数体内任何位置使用上述语句,用来结束子过程或函数,子过程和函数的参数,VB默认的参数是按地址传递(ByRef),意味着如果过程内的参数值改变了,则调用过程时使用的变量其值也随之改变Sub Main()Dim x As Integerx=1 Call Test(x)x的值改变了End SubPrivate Sub Test(num As Integer)num=num
6、+1End Sub按值传递,则用ByVal关键字,如:,数组作为参数示例,【例】编写子程序,实现在所有学生名单数组中查找给定的名字,输出查找结果。Sub Find(one As String,all()As String)Dim i As Integer,max As Integermax=Ubound(all)取数组上界For i=LBound(all)To max If Trim(one)=Trim(all(i)Then 去两端空格 MsgBox 找到啦 Exit Sub 完成查找 End IfNextMsgBox 没有找到End Sub,函数的返回值,退出函数之前必须完成返回值的确定,对
7、函数名自身赋一个值,该值就是函数的返回值。函数赋值语句可以出现函数的任意位置,该语句并不代表退出函数。如果没有给定返回值,函数会根据返回值的数据类型自动返回一个缺省值,如数值函数会返回0,字符串函数返回一个零长度字符串(“”)。,函数示例1,【例】编写函数可以实现温度值从华氏转换为摄氏和从摄氏转换为华氏。Function change(source As Integer,isCtoF As Boolean)As Integer If isCtoF Then change=(source*9/5)+32 Else change=(source-32)*5/9 End IfEnd Function
8、 按下【摄氏-华氏】按钮 Private Sub Command1_Click()lblResult.Caption=华氏温度=&change(CInt(text1.Text),True)End Sub 按下【华氏-摄氏】按钮Private Sub Command2_Click()lblResult.Caption=摄氏温度=&change(CInt(text1.Text),False)End Sub,函数示例2,【例】写一个函数,用来确定某年是否是闰年。Function isLeapYear(y As Integer)As Boolean If y Mod 40 or(y Mod 100=0
9、 and y Mod 4000)Then isLeapYear=False Else isLeapYear=True End IfEnd Function按下按钮Private Sub Command1_Click()Dim year As Integer year=CInt(text1)If isLeapYear(year)Then lblResult=year&年是闰年 Else lblResult=year&年不是闰年 End IfEnd Sub,子过程和函数的作用域,过程定义时使用Private和Public关键字限定过程的作用域。Private:表示该过程是私有的、局部的。只有与该过
10、程处于同一模块文件中的其它过程才可以访问,之外的模块不能使用。Public:表示该过程是公有的、全局的。工程中的所有模块都可以使用它。如果不指定作用域,过程会缺省为Public。编写程序时,一般将一个工程公用的过程集中存放到标准模块文件(.bas)中,并使用Public关键字。,使用可选参数,可选的参数在调用函数时可以不填写,函数能照常可以工作。Sub Test(num As Integer,Optional Temp As Boolean)如果不指定,则布尔型参数的默认值为False,字符串型参数的默认值为“”,数值型参数默认值为0 可以在参数列表中指定缺省值,如:Optional Temp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第八 章子 过程 函数
链接地址:https://www.31ppt.com/p-5663077.html