您好,欢迎访问三七文档
Visualbasic与SQLServer2005清华大学出版社本章要点过程的有关术语过程的定义与调用使用过程时的参数传递过程的嵌套与递归调用多窗体与SubMain过程用户自定义函数的使用Visualbasic与SQLServer2005清华大学出版社在VB中自定义过程分为以下几种:以“sub”保留字开始的为子过程;以“function”保留字开始的为函数过程;以“Property”保留字开始的为属性过程;以“Event”保留字开始的为事件过程。常用的过程有两种类型,通用过程和事件过程。事件过程与某个具体对象有关,它是能被对象识别的一个预先定义好的动作,前面各章学习和使用的过程都是事件过程,它是VB应用程序的主体。而通用过程与对象无关,它能被不同的事件过程或程序代码调用,能提高编程的效率。VB提供了两种通用过程,Sub过程(子程序)和Function过程(函数)。过程需要编写相应的代码,称为过程的定义。通用过程可以在代码窗口的通用声明下定义,也可以在标准模块中定义。定义好的通用过程就像完工的集成块,还需要将它组装到产品中去才能发挥作用,在应用程序中使用定义好的过程,称为过程的调用。11.1过程Visualbasic与SQLServer2005清华大学出版社在定义过程时,可以在代码窗口的通用声明中,直接输入过程的所有代码;也可以选中代码窗口后,选择“工具”→“添加过程”命令,在“添加过程”对话框中输入过程名,选择好类型和范围后确定,来添加过程头,然后再输入过程体。一、Sub过程的定义语法格式为[Static][Private][Public]Sub过程名[(参数表)]语句块[ExitSub]EndSubSub过程的说明:(1)Sub过程必须以Sub开头,EndSub结束。Static:表明这个过程中的局部变量是静态的,即过程执行完成后,过程内的变量的值将保留下来。如果没有Static,则局部变量是动态的,即过程执行完成后,过程内的变量的值将清空(0或空串)。11.1.1Sub过程Visualbasic与SQLServer2005清华大学出版社(2)参数表:传送数据进入Sub的变量或数组,参数之间用逗号分隔。每个参数的格式为:[ByVal]变量名[()][As类型]类型就是Integer、Single等,缺省则为变体型。ByVal:表明该参数是“传值”(PassedByValue)参数,缺省时(相当于ByRef)表明该参数是“引用”(PassedByReference)参数。一般而言:用不加ByVal的“引用”参数即可。(3)ExitSub用于在必要时中途退出过程。(4)Sub过程不能嵌套。即Sub过程的过程体内不能包含内部的Sub过程。但调用时可以嵌套。(5)建立通用Sub过程通用Sub不属于任何一个事件驱动过程,所以不能把通用Sub放在事件过程内部,应该放在事件过程外面,与事件过程独立开来,即通用Sub与事件过程是同一级别的。11.1.1Sub过程Visualbasic与SQLServer2005清华大学出版社11.1.1Sub过程二、Sub过程的调用调用Sub过程一般可用以下两种方法。(1)用Call语句格式:Call过程名(实参)如果是无参过程,括号可以省略。例如:CallProc’调用无参过程ProcCallTry(a,b)’调用有参过程Try(x,y)(2)过程名[实参表]。把过程名作为一个独立的语句与Call的区别:去掉Call,去掉实参的括号。例如:Proc’调用无参过程ProcTrya,b’调用有参过程Try(x,y)注意,在第二种调用方法中,省略了Call,此时不需要小括号,否则会出错。Visualbasic与SQLServer2005清华大学出版社11.1.1Sub过程[例11.1]求1-2+3-4+...+n的值。1、界面设计程序的界面由两个标签、两个文本框(一个用于输入、一个用于输出)和两个按钮构成。Visualbasic与SQLServer2005清华大学出版社11.1.1Sub过程2、代码分析与设计n的变化规则是偶数为负,奇数为正,可加一个专门的符号位来实现,只要符号位与n的初值保存一致,然后n增加1,符号位就取反即可。程序主要代码如下:PrivateSubsum_num(nAsInteger,sAsLong)DimiAsInteger,tAsIntegers=0t=1Fori=1Tons=s+i*tt=-tNextiEndSubPrivateSubCommand1_Click()DimnAsInteger,iAsInteger,sAsLongn=Val(Text1.Text)sum_numn,sText2.Text=sEndSubPrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenCommand1_ClickEndSubVisualbasic与SQLServer2005清华大学出版社11.1.2函数(Function过程)在VB中有两类函数,即标准函数和用户自定义函数。标准函数是指系统已经做出定义的函数,VB的标准函数按函数功能可分为4类,即数学函数、字符串函数、日期和时间函数和转换函数。虽然VB提供了常用的标准函数,可以使用这些标准函数来实现某些数学计算或数据类型的转换,但许多应用程序常常需要自己来定义函数,以实现某种特定的计算。自定义函数是由用户按照指定的语法规则自己定义的函数。Visualbasic与SQLServer2005清华大学出版社11.1.2函数(Function过程)一、函数的定义格式为:[Static][Private][Public]Function函数名[(参数表)][As类型]语句块[ExitFunction]函数名=计算结果EndSub说明:与Sub比较:大部分一样,定义方法也一样。主要的区别是:(1)函数名后多了As类型,限定函数结果的类型;(2)多了一句函数名=计算结果。注意:必须有这一句才能把计算结果传给函数。Visualbasic与SQLServer2005清华大学出版社11.1.2函数(Function过程)二、函数的调用Function定义好以后,就成了一个与标准函数一样的函数,调用方法也与标准函数一样:函数名(自变量)调用函数一般可用以下三种方法。(1)直接调用。将函数名和相应的实参放在一个表达式中即可。当需要接收过程的返回值时,只能使用这种调用方法。例如:Y=Sqr(16)(2)Call语句调用。使用Call语句调用Function过程的方法与Sub的调用方法相似,此时,Function过程的返回值将被丢失。一把不用这种方法。(3)无参数直接调用。Visualbasic与SQLServer2005清华大学出版社11.1.2函数(Function过程)【例11.2】将例11.1改用函数来实现。代码分析与设计本程序的基本思路与例9.1是一样的,代码差别也不大。在Sub过程中,结果通过参数s带回,而Function过程则通过函数本身返回。程序代码如下(相同部分省略):PrivateFunctionsum_num(nAsInteger)AsLongDimiAsInteger,tAsInteger,sAsLongs=0t=-1Fori=aTons=s+i*tt=-tNextisum_num=sEndFunctionPrivateSubCommand1_Click()DimnAsInteger,sAsLongn=Val(Text1.Text)s=sum_num(n)'此时不能使用第二种调用方法Text2.Text=sEndSubVisualbasic与SQLServer2005清华大学出版社11.1.3过程与函数的区别1.过程以sub开头,而函数以function开头。2.当过程有多个返回值时,就应当用sub过程;当过程有一个返回值时,可以使用函数。3.函数是通过函数名回送一个结果值。在函数的形式参数表后面要说明函数(即结果)的类型。而过程的结果由参数送回。4.函数体中至少要包括一个给函数赋值的语句。而过程不能给过程名赋值。5.函数的调用出现在表达式中。而过程的调用必须作为一个单独的语句。6.形参没有具体的值,只代表了参数的个数、位置、类型;只能是简单变量,不能是常量、数组元素、表达式。Visualbasic与SQLServer2005清华大学出版社11.2参数传递在调用一个有参数的过程,首先进行的是“形实结合”,即按传值传递或按地址传递方式,实现调用程序和被调用的过程之间的数据传递。通过参数传递,Sub过程或Function过程就能根据不同的变量执行同种任务。为了叙述方便,将形式参数简称为形参,实在参数简称为实参。在VisualBasic中传递参数有两种方式,即按值传递(PassedbyValue)和按地址传递(Passedbyrefecence)。按值传递参数时,传递的只是实参变量的副本。如果在被调过程中改变了形参值,只影响副本,而不会影响实参变量本身。即当控制返回调用程序时,实参变量保持调用前的值不变。在定义过程时,若形参名前面没有关键字“ByVal”,即形参名前面缺省修饰词,或有“ByRef”关键字时,则指定了它是一个按地址传递的参数。按地址传递参数时,把实参变量(简单变量、数组元素、数组以记录等)的地址传送给被调过程。因此实参变量的地址和与之结合的形参地址是相同的,也就是说形参和实参共用内存的同一“地址”,即共享同一个存储单元。这样在被调过程中的形式参数值一旦被改变,相应的实参值也跟随着被改变了。Visualbasic与SQLServer2005清华大学出版社11.2.1形式参数与实际参数形式参数是指在定义通用过程时,出现在sub或function语句中的变量,是接收传送子过程的变量。形式参数表的各个变量之间用逗号分隔。实际参数是指在调用sub或function过程时,传送给sub或function过程的常量、变量或表达式。实参表可由常量、表达式、有效的变量名、数组名组成,实参表中各参数用逗号分隔。简单地说,无论是Sub还是Function,参数是用来传送数据的。定义时的参数叫形式参数(形参),调用时的参数叫实际参数(实参)。Visualbasic与SQLServer2005清华大学出版社11.2.1形式参数与实际参数例如:PrivateSubForm_Click()Dimaasintger,basinteger,casintegerA=5:b=3:c=9ClsPrinta;b;cCallprod((a),(b),(c))‘实际参数Printa;b;cEndSubSubprod(aasintger,basinteger,casinteger)‘形式参数Printa;b;ca=6:b=8:c=a*bprinta;b;cEndSubVisualbasic与SQLServer2005清华大学出版社11.2.2参数传递参数传递的方式有两种,按值传递和按地址传递,并且只能有实参传递给形参。如果CALL语句中的实际参数是常量或表达式,或者定义过程时选用ByVall关键字,就可以按值传递;如果CALL语句中的实际参数为变量,或者定义过程时选用ByRef关键字,就可以按地址传递。否则缺省按地址传递参数。一、按值传递参数按值传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所作变量只影响副本而不会影响变量本身。当要求变量按值传送时,可以先把变量变成一个表达式,把变量转换成表达式的最简单的方法就是把它放在括号内。或者定义过程时用ByVal关键字指出参数是按值来传递的。例如:SubPost(ByValnumasInteger)例如:运行下面给出的程序,理解按值传递参数。Visualbasic与SQLServer2005清华大学出版社11.2.2参数传递例如:运行下面给出的程序,理解按值传递参数。PrivateSubForm_Click()Dimaasintger,basint
本文标题:VB过程与函数
链接地址:https://www.777doc.com/doc-2647355 .html