17自定义函数.doc_第1页
17自定义函数.doc_第2页
17自定义函数.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自定义函数一、教学目标 理解自定义函数的概念;学会自己编写自定义函数;学会使用自定义函数二、教学重点和难点 重点:自定义函数的概念和语法;自定义函数的调用难点:自定义函数的语法三、教学过程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 StringDim i As IntegerDim strNumChars As StringDim strChar As String用循环语句依次判断字符串中的每个字符是否为字符For i = 1 To Len(strString)strChar = Mid(strString, i, 1)If IsNumeric(strChar) Then strNumChars = strNumChars & strCharEnd If返回字符串中包含的数字字符GetNum = strNumCharsNext iEnd Function4、函数的调用格式一:变量=函数名(参数)格式二:Call函数名(参数)格式三:函数名 参数【例2】使用例1的自定义函数从字符串“123A456”中取出所有数字。【程序】s=GetNum (“123A456”)运行后变量s的值为“123456”5、自定义过程 Public|Private Sub (参数列表) 局部常量、变量定义 过程语句组End Sub前面用到的事件过程和这里的定义非常相似,请同学们把两者对比,指出它们的不同之处。事件过程Private Sub Command1_Click()Dim a As Integera=100Print aEnd Sub子过程和函数本质是一样的,在VB中往往将函数看作特殊的子过程,只不过子过程用“Sub”关键字定义而函数用“Function”关键字定义;函数可以有返回值,而子过程没有。【例3】斐波那契数列第20个数是多少?【问题分析】斐波那契数列第一个数为1,第二个数为1,从第三个数开始为前两个数之和,即斐波那契数列为1,1,2,3,5,8,13,【程序一】使用一般方法实现Private Function Fb(ByVal intNum As Integer) As IntegerDim i As IntegerDim intCurNum As IntegerDim intPerNum1 As IntegerDim intPerNum2 As IntegerintPerNum1 = 1intPerNum2 = 1For i = 3 To intNumintCurNum = intPerNum1 + intPerNum2intPerNum1 = intPerNum2intPerNum2 = intCurNumNext iFb = intCurNumEnd FunctionPrivate Sub Command1_Click()Print 斐波那契数列第20个数为:; Fb(20)End Sub【程序二】用递归法实现Private Function Fb(ByVal intNum As Integer) As IntegerIf intNum = 1 Or intNum = 2 ThenFb = 1Else Fb = Fb(intNum - 1) + Fb(intNum - 2)End IfEnd FunctionPrivate Sub Command1_Click()Print 斐波那契数列第20个数为:; Fb(20)End Sub在递归法中,函数Fb()自己调用了自己,假如以第5个数为例,则函数的递归调用关系如教材P69页图3-25所示。(1)递推函数Fb()先判断Fb(5)中的参数,不为1或2而分解为Fb(4)+Fb(3),然后再判断Fb()中的参数,如果参数不为1或2,则继续分解,即将Fb(4)分解为Fb(3)+Fb(2);将Fb(3)分解为Fb(2)+Fb(1)。然后再次判断Fb()中的参数是否为1或2,如不是则继续分解直到Fb()中的参数为1或2为止。(2)回归将得到的Fb(1)和Fb(2)的值代入,并依次返回上一级。例如Fb(3)=Fb(2)+Fb(1)=1+1=2;Fb(4)=Fb(3)+Fb(2)=2+1=3;Fb(5)=Fb(4)+Fb(3)=3+2=5,即最后Fb(5)的值为5。【课堂练习】完善程序求5!。Private Function Jc(ByVal intNum As integer) As IntegerIf intNum

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论