《Visual Basic 程序设计教程》第06章:过程-教学课件(非AI生成).ppt
数组作过程调用的参数数组可以作为参数传递给过程,但过程在定义时相应的形参应加小括号表明是数组。调用时,相应的实参也应是数组,但只要数组名,不必加括号。数组作为参数一定是按地址传递,不能使用ByVal关键字修饰。形参与实参的数据类型应一致。*数组作过程调用的参数OptionBase1PrivateSubForm_Click() Dima(10)AsInteger a(1)=1:a(2)=2:a(3)=3:a(4)=4:a(5)=5 a(6)=6:a(7)=7:a(8)=8:a(9)=9:a(10)=10 Text1.Text=sum(a)EndSubPrivateFunctionsum(a()AsInteger)AsInteger DimiAsInteger Fori=LBound(a)ToUBound(a) sum=sum+a(i) NextEndFunction形参应加小括号实参不加小括号实参应是数组,且类型与形参相同如果实参是一个动态数组,则过程的形参也被看作为动态数组,在过程中可以使用ReDim语句重新定义。*顺序查找FunctionSearch1(a()AsInteger,bAsInteger)AsIntegerDimint1AsIntegerForint1=LBound(a)ToUBound(a)Ifa(int1)=bThenSearch1=int1ExitFunctionEndIfNextEndFunction*折半查找FunctionSearch2(a()AsInteger,bAsInteger)AsIntegerDimmAsInteger,nAsInteger,int1AsIntegerm=LBound(a)n=UBound(a)Doint1=(m+n)\2 得到中间元素的下标Ifba(int1)Then 被查找值位于前半部分n=int1-1ElseIfba(int1)Then 被查找值位于后半部分m=int1+1Else 被查找值恰好是中间元素Search2=int1ExitFunctionEndIfIfm=nThen只剩1个元素Search2=mExitFunctionEndIfLoopEndFunction*下面的函数使用了欧几里德法,计算参数m和n的最大公约数并返回。PrivateFunctiongcd(mAsInteger,nAsInteger)AsIntegerDimuAsIntegerDimvAsIntegerDimrAsIntegeru=mv=nDoWhilev0r=uModvu=vv=rLoopgcd=uEndFunction例9:求最大公约数*一、虚实结合1.形参形参是一种特殊的参数,它的主要作用是与主调过程交换数据。所以形参的类型必须与实参类型匹配。形参是过程级变量,只能在本过程中使用。系统编译时,并不给形参分配存储单元,仅在过程被调用时,形参才有可能获得临时的存储空间,一旦过程执行结束,形参的存储单元就会被取消。可以用来作形参的有:变量和数组等,不能是常量和表达式;2.