资源描述:
《VB教学课件第6,7章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章过程6.1函数过程的定义与调用6.2子过程的定义与调用6.3参数传递6.4变量、过程的作用域6.5递归6.6综合应用1除了系统提供的内部函数过程和事件过程外,用户可自定义过程:“Sub”保留字开始的为子过程“Function”保留字开始的为函数过程一、函数过程的定义1.引例6.1已知多边形的各条边的长度,要计算多边形的面积。计算多边形面积,可将多边形分解成若干个三角形。计算三角形面积的公式如下:xyz定义函数过程PublicFunctionarea(x!,y!,z!)AsSingleDimc
2、!c=1/2*(x+y+z)area=Sqr(c*(c-x)*(c-y)*(c-z))EndFunction调用函数过程:Subcommand1_click()……输入若干个三角形边长S=area(a,b,c)+area(c,d,e)+area(e,f,g)PrintsEndSub22.函数过程的定义自定义函数过程有两种方法:(1)利用“工具”菜单下的“添加过程”命令定义,生成一个函数的框架(2)利用代码窗口直接定义函数过程形式:Function函数过程名([参数列表])[As类型]局部变量或常数
3、定义语句块函数名=返回值函数过程体[ExitFunction]语句块函数名=返回值EndFunction函数过程名:命名规则同变量名参数列表形式:[ByVal]变量名[()][As类型]称为形参或哑元,仅表示参数的个数、类型,无值。函数名=返回值在函数体内至少对函数名赋值一次[ExitFunction]:表示退出函数过程返回值的类型3例6.2同标准函数Replace一样,定义MyReplace(S,OldS,NewS)函数过程当调用MyReplace("abcdefgabcdecd","cd","
4、3")时函数的返回值为"ab3efgab3e3"FunctionMyReplace(s$,OldS$,NewS$)AsStringDimi%,lenOldS%lenOldS=Len(OldS)'取OldS字符子串长度i=InStr(s,OldS)'在字符串中找有否OldS字符子串DoWhilei>0'找到用NewS字符子串替换OldS字符子串s=Left(s,i-1)+NewS+Mid(s,i+lenOldS)i=InStr(s,OldS)'找下一个OldS字符子串LoopMyReplace=s'
5、替换后的字符串赋值给函数过程名EndFunction假定S为“abcdefgabcdecd”,Oolds为“cd”,News为"3"(“abcdefgabcdecd”,“cd”,“3”)第1次I=3结果“ab3efgabcdecd”(“ab3efgabcdecd”,“cd”,“3”)第2次I=9结果“ab3efgab3ecd”(“ab3efgab3ecd”,“cd”,“3”)第3次I=11结果"ab3efgab3e3"43.函数过程的调用函数过程的调用同标准函数调用,参与表达式运算,形式如下:函数
6、过程名([参数列表])参数列表:称为实参或实元,它必须与形参个数相同,位置与类型一一对应可以是同类型的常量、变量、表达式执行流程:PrivateSubCommand1_Click()Text1=MyReplace(Text1,"cd","3")ST=(“VisualBasic程序设计教程5.0版”PrintMyReplace(ST,"5.0","6.0")EndSubFunctionMyReplace$(s$,OldS$,NewS$)Dimi%,lenOldS%lenOldS=Len(OldS)i
7、=InStr(s,OldS)DoWhilei>0s=Left(s,i-1)+NewS+Mid(s,i+lenOldS)i=InStr(s,OldS)LoopMyReplace=sEndFunction5二、子过程函数过程的不足:(1)不是为了获得某个函数值,而是为了某种功能的处理,如例1.1。(2)要获得多个结果。1.引例编写一个两个数交换的过程供多次调用。Swap(x,y)子过程的定义主调程序调用Swap子过程PublicSubSwap(x,y)PrivateSubForm_Click()Dim
8、tDima,bt=xa=10x=yb=20y=tCallSwap(a,b)EndSubPrint"a=";a,",b=";bEndSub62子过程定义Sub子过程名[(参数列表)]局部变量或常数定义语句[ExitSub]语句EndSub3子过程的调用子过程名[实参列表]或Call子过程名[(实参列表)]4.子过程与函数过程区别:(1)函数过程名有值,有类型,在函数体内至少赋值一次;子过程名无值,无类型,在子过程体内不能对子过程名赋值;(2)调用时,子过程调用是一句独立的语句。函数过