资源描述:
《4函数与子程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、工程应用培训教材第四节函数与子程序应用背景函数和子程序是构成程序的一个模块,往往是完成一个相对独立的功能,这个模块定义一个入口数据接口,一个中间过程处理算法逻辑,最后给定计算得到的出口数据接口。因此模块的基本过程为:数据接口+算法逻辑+数据接口。将一个程序分解为多个模块过程,可以使程序更清晰,更容易调试,且更容易多人合作开发项目,共同完成一个大项目。下图4-1描述了一个典型的程序构架,这里包括全局类定义,全局变量,局部变量,全局函数,局部函数,程序模块,全局常数,数据文件等等。子程序模块n/局部变量全局类定义子程序模块3/局部变量全局常数全局变
2、量全局函数子程序模块2/局部变量子程序模块1/局部变量程序入口SubMain()图4-1程序构架知识要点(1)函数的定义与调用一般函数有返回值,故有返回值类型定义,且返回值保存在函数名变量里。函数定义的基本方式如下:[public
3、private
4、static]function过程名(参数列表)as返回值类型35VisualBasic6.0程序员培训教程工程应用培训教材endfunction在函数的定义中,过程名就是函数名,他代表一个返回值变量,而参数列表是一组数,代表函数的入口数据,即函数过程中要处理的数据。调用函数的最基本方式为:[变量名=
5、]过程名([传递参数列表])下面是一个给定三角形的三个边长,计算面积的函数定义:PrivateFunctiontriangle(ByValaAsSingle,ByValbAsSingle,ByValcAsSingle)AsSingleDimrAsSingler=(a+b+c)/2r=r*(r-a)*(r-b)*(r-c)Ifr<0Thentriangle=-1‘不符合条件,返回-1Elsetriangle=Sqr(r)EndIfEndFunction函数调用方式如下:DimarAsSinglear=triangle(6,8,10)(2)参数传递
6、VB中实参与虚参的传递有两种方法:Bydef(传地址)和Byval(传数值),在参数列表前定义。在VB中,函数和子过程的默认传递方式是传址方式(Bydef),Bydef(传地址)是默认的方法,又成为引用。当不写传递方式时,采用传址方式传递参数。数组,对象只能通过传地址方式传递参数。传递地址方式可以用来传递数据,也可以用来返回数据,而传递数据方式只能用于传递数据,不能返回数据。(3)内部函数内部函数是VB种自带的全局函数,程序员可以在程序的任意地方非常方便的引用一些常规的功能。数学函数:Sin(x):返回x的正弦值,x单位为弧度。Cos(x):返
7、回x的余弦值,x单位为弧度。Tan(x):返回x的正切值,x单位为弧度,如,Tan(45*3.1416/180)=1。35VisualBasic6.0程序员培训教程工程应用培训教材Atan(x):返回x的反正切值,返回值单位为弧度,在-3.1416/2与3.1416/2之间,如,Atan(1)的值为3.1416/4。Exp(x):返回以e为底的x指数值,如,Exp(3)表示求e的3次方。Log(x):返回x的自然对数,如表达式Log(x)/Log(10)可以计算以10为底的x的对数值。Sqr(x):返回x的平方根,Sqr(4)返回2.Abs(x
8、):返回x的绝对值,Abs(-8.9)的结果为8.Int(x):当x为正数时,去掉小数部分,当x为负数时,返回小于负数的整数,Int(-7.8)的结果为-8,而int(7.8)的结果为7。Fix(x):该函属与Int(x)函数类似,只是当x为负数时,返回大于该负数的负整数。Fix(-7.9)返回-7.Rnd(x):产生一个介于0到1之间的但精度随机数,x为产生随机数的种子,如:8*rnd+1产生1—8之间的随机数。有时候,为避免每次运行程序时产生相同的随机数,可以在使用随机函数语句之前,首先初始化随机函数,使用Ranomize函数进行初始化随机
9、函数。Hex(x):以字符串的形式返回x的十六进制值。Oct(x):以字符串的形式返回x的八进制值。字符串函数:Instr([起始位置],str1,str2):确定str2在str1中的一次出现的位置,如:Instr(10,”nihao,helloworld,Imissyou”,””)就是找第10位置以后出现空格的位置,返回13.Ltrim(str):去掉字符串str左端的空格。Rtrim(str):去掉字符串str右端的空格。Trim(str):去掉字符串str左端和右端的空格。Left(str,n):字符串str从左边取出n个字符串,若n大
10、于str的长度,则取str。Right(str,n):字符串str从右边取出n个字符串,若n大于str的长度,则取str。Mid(str,n1,n2)