- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
17自定义函数
自定义函数一、教学目标
??? 理解自定义函数的概念;学会自己编写自定义函数;学会使用自定义函数
二、教学重点和难点
??? 重点:自定义函数的概念和语法;自定义函数的调用
难点:自定义函数的语法
三、教学过程
1、概述
函数和过程极为相似,实际上函数也是一种过程,故有时也称为函数过程。函数和过程的区别在于函数带有返回值,而过程不带返回值。
函数分为标准函数和自定义函数,标准函数又称内部函数,是VB内置的,如Abs(),Sqr(),Len(),MsgBox()等。自定义函数是由用户建立的。
2、引入新课
既然有标准函数,为什么还要自定义函数呢?
标准函数定义了一般问题的解决方法,例如求字符串长度、截取字符串等,但许多问题单靠标准函数无法解决。例如Val()函数只能取出字符串“123A456”中的“123”,而后三位数字则无法取出。有时候我们需要从一个字符串中取出它包含的所有数字,这是就可以自定义一个函数实现这个功能。
3、自定义函数的语法
?? [Public|Private] Function 函数名 ([参数列表]) [As 类型]
????? 局部常量、变量定义
????? 语句组
????? 函数名=返回值
End Function
参数格式:[ByVal|ByRef] 变量名 [()] As 变量类型
说明:与常量变量一样,函数名也应符合常量变量的命名规则。Private指明函数为专用的,即其访问权限仅限于本窗口或本模块。Public关键字使得整个应用程序均能访问此函数。“As 类型”指定函数返回值的数据类型。“函数名=返回值”用来确定函数的返回值。
【例1】从一个字符串中取出它包含的所有数字。
【程序】
rivate Function GetNum(ByVal strString As String) As String
Dim i As Integer
Dim strNumChars As String
Dim strChar As String
用循环语句依次判断字符串中的每个字符是否为字符
For i = 1 To Len(strString)
?strChar = Mid(strString, i, 1)
?If IsNumeric(strChar) Then
??? strNumChars = strNumChars strChar
?End If
?返回字符串中包含的数字字符
?GetNum = strNumChars
Next i
End Function
4、函数的调用
格式一:变量=函数名(参数)
格式二:Call函数名(参数)
格式三:函数名 参数
【例2】使用例1的自定义函数从字符串“123A456”中取出所有数字。
【程序】
s=GetNum (“123A456”)
运行后变量s的值为“123456”
5、自定义过程
?? [Public|Private] Sub 子过程名 ([参数列表])
????? 局部常量、变量定义
????? 过程语句组
End Sub
前面用到的事件过程和这里的定义非常相似,请同学们把两者对比,指出它们的不同之处。
事件过程
Private Sub Command1_Click()
?Dim a As Integer
?a=100
?Print a
End Sub
子过程和函数本质是一样的,在VB中往往将函数看作特殊的子过程,只不过子过程用“Sub”关键字定义而函数用“Function”关键字定义;函数可以有返回值,而子过程没有。
【例3】斐波那契数列第20个数是多少?
【问题分析】
斐波那契数列第一个数为1,第二个数为1,从第三个数开始为前两个数之和,即斐波那契数列为1,1,2,3,5,8,13,……
【程序一】使用一般方法实现
Private Function Fb(ByVal intNum As Integer) As Integer
Dim i As Integer
Dim intCurNum As Integer
Dim intPerNum1 As Integer
Dim intPerNum2 As Integer
intPerNum1 = 1
intPerNum2 = 1
For i = 3 To intNum
?intCurNum = intPerNum1 + intPerNum2
?intPerNum1 = intPerNum2
?intPerNum2 = intCurNum
Next i
Fb = intCurNum
End Function
Private Sub Command1_Click()
?Print 斐波那契数列第20个数为:; Fb(20)
End Sub
【程序二】用递归法实现
Private Function Fb(ByV
您可能关注的文档
最近下载
- 肾盂旁囊肿的研究的现状及进展.doc VIP
- 3.1《中国科学技术史序言(节选)》课件-中职高二语文(高教版2024拓展模块上册).pptx
- PCB多层压合工艺PPT课件.ppt
- 第一单元第二节+体验“云上生活”++课件 2024—2025学年川教版(2024)信息科技+七年级上册.pptx VIP
- Garmin佳明Forerunner 165 智能GPS跑步腕表说明书用户手册.pdf
- 工程项目工期关键节点和线路保证措施(模板)18.docx VIP
- 泰康入职测评考试题库答案.pdf
- Ai围棋定式大全(重排彩图).pdf
- 汽车钣喷系列教学课件--钣金件焊接工艺.ppt
- 人力资源有限公司管理制度.docx VIP
文档评论(0)