17自定义函数.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档