VB程序设计基础第6章过程.ppt
第6章过程第1节sub子过程第2节函数过程第3节过程、变量的作用域第4节应用举例基础部第2节函数过程第1节sub子过程第3节变量、过程的作用域第4节应用举例第5节过程的嵌套与递归以前我们使用的函数和事件过程都是系统定义过的,在复杂问题中,我们还需要用户自己定义一些函数和过程。VB6.0中有以下四种:1.以sub开始的子过程2.以function开始的函数过程3.以property开始的属性过程4.以event开始的事件过程重点学习在VB中子过程有:事件过程和通用过程两种;事件过程在响应用户引发的事件或系统引发的事件外,一直处于等待状态;通用过程独立于事件过程之外(不能嵌套定义),可供其它过程调用(可以嵌套调用)。一、通用过程的建立通过菜单建立和直接输入代码建立两种方法。格式:[private|public][static]sub过程名([形参变量表])语句组(过程体)endsub不能为定长字符型变量;变量间用“,”分开;可以为数组名,格式:“数组名()”在窗体通用段或标准模块中定义可用exitsub强行退出过程二、通用过程的调用第一:call子过程名[(实参表)]第二:子过程名实参表常量、变量、数组名、表达式【例6-1】求组合数的值。分析:在窗体通用段定义求阶乘n!的sub过程,在窗体的cliclk()事件中三次调用并计算组合数,通过print方法输出结果。’窗体通用段Subfact(n%,f#)dimi%f=1fori=1tonf=f*inextiEndsubPrivateSubform_click()dimm%,k%,s#,x#,y#,z#m=10:k=6callfact(m,x):factk,ycallfact(m-k,z)s=x/(y*z)print“组合数=”sEndsub参数传递是形参和实参结合的方式,VB中有值传递和地址传递两种。形式参数:定义时过程名后“()”内的变量表。实际参数:调用时过程名后[“()”内]的变量、常量、表达式、数组名。三、参数传递1.传地址方式:形式参数和实际参数共用同一单元实际参数按下列形式是地址传递:(1)变量(对应形参左无byval)(2)数组名()图例:形式参数调用时调用后调用前存储单元实参【例6-2】输出含11个整型元素的数组,再将第一个与最后一个对调,第二个与倒数第二个对调,依次类推;最后输出对调后的各元素值。分析:有两次输出(定义一个输出sub过程);在窗体cilck()事件中完成输入输出、对调、再输出(调用输出子过程实现两次输出)。输出子过程Subparray(a()AsInteger)Dimi%Fori=LBound(a)ToUBound(a)Printa(i);NextiPrintEndSubPrivateSubForm_Click()Dimx%(10),i%,t%Fori=0To10x(i)=Int(Rnd*90)+10Nexti:Callparray(x)Fori=0To5t=x(i):x(i)=x(10-i):x(10-i)=tNexti:parrayxEndSub【例6-3】编写求两个整数的最大公约数和最小公倍数的过程,在窗体的Click()事件中调用并输出易读的结果.分析:有按定义和辗转除两种方法。按定义:输入→找较小→循环(在循环体内判断是否同时整除)Subdgys(g%,y%,s%)s=IIf(gy,y,g)Fors=sTo1Step-1IfgMods=0AndyMods=0ThenExitForNextsEndSubPrivateSubForm_Click()Dimm%,n%,r%m=InputBox(输入m:)n=InputBox(输入n:)Calldgys(m,n,r)Printm和n的最大公约数是:rPrint最小公倍数是:m*n/rEndSub【例6-3】编写求两个整数的最大公约数和最小公倍数的过程,在窗体的