国家计算机二级vf多模块程序设计.ppt
《国家计算机二级vf多模块程序设计.ppt》由会员分享,可在线阅读,更多相关《国家计算机二级vf多模块程序设计.ppt(17页珍藏版)》请在冰豆网上搜索。
多模块程序设计,授课教师:
易学良,模块的定义和调用,1模块的定义定义:
模块可以是命令文件,也可以是过程。
过程定义的语法格式:
PROCEDURE|FUNCTIONRETURNENDPROC,打开过程文件的命令格式:
SETPROCEDURETO,关闭过程文件的命令格式:
RELEASEPROCEDURETO,模块调用格式1:
DO格式:
(),说明:
如果模块是程序文件的代码,模块调用就用。
如果模块不是程序文件的代码,模块调用就用。
格式2的模块调用既可以作命令使用,也可以当作函数出现在表达式中。
格式2中的不能含有扩展名。
例1:
使用程序文件、过程、过程文件,2参数传递,1PARAMETERS和LPARMETERS语句传递参数格式:
PARMETERS,LPARMETERS1,2调用模块程序格式1:
DOWITH,,格式2:
(,)3参数传递方式按“引用”传递TOREFERENCE:
按引用传递。
按“值”传递TOVALUE:
按值传递。
采用1调用模块程序时,如果实参是常量或一般形式的表达式,系统会计算出实参的值,并把它们赋给相应的形参变量,称为按值传递。
如果实参是变量,则传递的将不是变量的值,而是变量的地址。
采用2调用模块程序时,默认情况下是以按“值”方式传递参数。
如果实参是变量,可以利用SETUDFPARMS命令重新设置参数传递的方式。
如果给实参变量加上(),则强制使用值传递。
还可以在程序之间传递数组。
当实参是数组元素时,总是采用按值方式传递元素值。
当实参是数组名是,如果按“值”方式传递数组元素值时,则传递数组的第一个元素值给形参变量。
如果按“引用”方式传递数组元素值时,则传递的将是整个数组。
例2:
CLEARSETUDFPARMSTOVALUESTORE500TOX1,X2DOP4WITHX1,(X2)?
第一次:
x1,x2STORE500TOx1,x2P4(X1,(X2)?
第二次:
x1,x2SETUDFPARMSTOREFERENCE,STORE500TOX1,X2DOP4WITHX1,(X2)?
第三次:
x1,x2STORE500TOx1,x2P4(X1,(X2)?
第四次:
x1,x2*过程P4PROCEDUREP4PARAMETERSX1,X2STOREX1+1TOX1STOREX2+1TOX2ENDPROC,例3:
计算矩形面积clearinput矩形长:
tolinput矩形宽:
tows=0doareawithl,w,s?
矩形面积为:
sreturn,procedureareaparametersc,k,mm=c*kreturn,例4:
求C(m,n)=m!
/(n!
(m-n)!
)clearinputm=tominputn=tonc=fac(m)/(fac(n)*fac(m-n)?
creturn,functionfacparaxp=1fork=2toxp=p*knextreturnp,例5:
定义一个求3个数中最大数的自定义函数,并利用该函数求5个数中最大数。
inputa=toainputb=tobinputc=tocinputd=todinpute=toemax=getmax(a,b,c)max=getmax(max,d,e)?
maxreturn,functiongetmaxparax,y,zifxym=xelsem=yendififzmm=zendifreturnm,3变量的作用域,1变量的作用域定义:
指变量在什么范围内是有效的或者能够被访问的。
内存变量分类:
公共变量公共变量又称为全局变量,在任何程序或过程中都可以使用的内存变量。
如果某数据需要在程序中任何地方取用,为方便起见,就可定义为公共变量。
定义公共变量用PUBLIC命令。
私有变量在程序中直接使用(没有通过PUBLIC和LOCAL命令事先声明)并且由系统自动隐含建立的变量称为私有变量。
私有变量通常用于过程中,其作用范围仅限于此过程中与在此过程中的过程,外部的程序无法作用到此类变量,而此类变量在进入此过程时才被定义,离开此过程后即被释放。
定义私有变量用PRIVATE命令。
一旦建立它的模块程序运行结束,这些私有变量将自动清除。
局部变量局部变量只能在建立它的模块中使用,不能在上层或下层模块中使用。
当建立它的模块程序运行结束时,局部变量自动释放。
与全局变量一样,局部变量也要先建立后使用。
局部变量用LOCAL命令定义。
2变量的隐藏开发应用程序时,主程序与子程序不一定是由同一个人来设计的,子程序中用到的变量实际上在主程序中已经建立,子程序的运行会无意间改变主程序中变量的取值。
为了解决这个问题,可以采用在子程序中使用PRIVATE或LOCAL命令隐藏主程序中可能存在的变量,使得这些变量在子程序中暂时无效。
例6:
SETTALKOFFV1=100V2=150DOP?
V1,V2&显示1001000PROCEDUREPPRIVATEV1V1=500V2=1000?
V1,V2&显示5001000RETURN,例7:
clearpublicxprivatey,kx=1y=2dosub6?
x=,x,y=,y&显示32k=3dosub7?
y=,y,k=,k&显示105,proceduresub6localyy=3x=x*yy=x+yreturnproceduresub7k=k+yy=k*yreturn,