1、模块化程序设计p利用子程序p利用过程p利用函数子程序子程序d=2*3.14*3?ds=3.14*3*3?s程序.prg引例:求半径为的圆的周长和面积子程序子程序do 程序2 do 程序3主程序.prgd=2*3.14*3?d子程序1.prgs=3.14*3*3?s子程序2.prg程序2( )程序3( )过程过程do sub1do sub2PROCEDURE sub1 d=2*3.14*3?dENDPROCPROCEDURE sub2s=3.14*3*3?sENDPROC程序1.prg。sub1( )sub2( )do sub1 或sub1( )Procedure sub1 d=2*3.14*3
2、 ?dEndproc带参数的过程及其调用带参数的过程及其调用Procedure sub1 d=2*3.14*r ?dEndproc缺点:固定数据缺点:固定数据Parameters rdo sub1 with 5 或sub1(5)a=6do sub1 with a 或sub1(a)do sub1 with a+2 或sub1(a+2)实参实参形参形参优点:可变数据优点:可变数据Procedure subParameters x,y,z EndprocDo sub with a,b,cDo sub with a,bDo sub with a,b,c,d传参注意事项1(参数个数问题)实参个数要小于等
3、于形参个数。x=a y=b z=cX=a y=b z=.F.出错Procedure subParameters x s=3.14*x*2 ? sEndprocDo sub with 5Do sub with 5Do sub with .T.Do sub with 2007-05-06传参注意事项2(参数类型问题)实参与形参类型要一致*传参注意事项3(传递方式问题,非常重要)两种传递方式:按值和按引用(地址)a=1Do sub with (a)Procedure sub Parameters x x=2Endpro按值传递:a=1Do sub with aProcedure sub Parame
4、ters x x=2Endpro按值引用传递:说明:也可以理解为,按说明:也可以理解为,按“引用引用”传递时,实参跟着对应的形参变化。传递时,实参跟着对应的形参变化。a=2b=3c=5DO test WITH a,b,c+1 ?a,b,cSET UDFPARMS TO VALUEtest(a,b,c+1) ?a,b,cSET UDFPARMS TO REFERENCEtest(a,(b),c+1) ?a,b,cPROCEDURE testPARAMETERS x,y,zx=x+1y=y+1z=z+1RETURN传参例题传参例题 “DODO 过程名过程名 WITH WITH 内存变量内存变量”
5、执行过“SET UDFPARMS TO SET UDFPARMS TO REFERENCEREFERENCE”的“过程名过程名( (内存变量内存变量) )” store 1 to a,b,cDO sub1 WITH 2,a,(b),c*2?a,b,csub2(b,2)?a,b,cset udfparms to referencesub2(b),c)?a,b,cPROCEDURE sub1PARAMETERS x,y,z,kx=x+2y=y+3z=z+4k=k+5RETURNPROCEDURE sub2PARAMETERS x,yx=x*2y=y*3RETURN传参练习传参练习系统函数与自定义函
6、数系统函数与自定义函数v系统函数为VF系统已经定义好的函数例如:Max(2,3,5)Str(23)Ltrim( ab c)Year(date()v系统函数有限,当需要特殊的函数时,需要自己定义。即自定义函数。例如: 求阶层的函数, jc(10) = 10! 自定义函数自定义函数v定义自定义函数v调用自定义函数【格式格式】FUNCTIONFUNCTION PARAMETERS PARAMETERS RETURN RETURN 【说明】pRETURN使自定义函数返回到上一层程序(或命令窗口)pRETURN命令返回表达式的值,表达式的值即为函数的返回值p如果RETURN命令后不带,则返回逻辑真.T.
7、【格式】函数名() FUNCTIONFUNCTION abc abc PARAMETERS x,y PARAMETERS x,y z=x+y z=x+yRETURN zRETURN z例如:p =abc(2,3)?p1 1、创建菜单两种文件方法:、创建菜单两种文件方法: 建立菜单原文件建立菜单原文件(mnx)(mnx)方法(文件方法(文件新建新建菜单菜单新建文件)新建文件) 生成菜单可执行文件生成菜单可执行文件(mpr)(mpr)方法(打开方法(打开mnxmnx文件时,选择文件时,选择“菜单菜单”-“-“生成生成”) 2 2、菜单中组成部分的说明、菜单中组成部分的说明 子菜单:创建下一层子菜单
8、子菜单:创建下一层子菜单 命令:只能写一条命令命令:只能写一条命令 过程:创建后,可以写多行命令过程:创建后,可以写多行命令 3 3、调用菜单的命令(必须先生成菜单可执行文件、调用菜单的命令(必须先生成菜单可执行文件(mpr)(mpr)) 命令窗口中使用:命令窗口中使用:do do 菜单文件名菜单文件名.mpr.mpr4 4、退出的命令:、退出的命令: 返回到系统菜单返回到系统菜单 set sysmenu to default (set sysmenu to default (写在写在 命令里或命令里或过程里过程里) ) 恢复标准的系统菜单恢复标准的系统菜单 set sysmenu nosave (set sysmenu nosave (写在写在 过程里过程里) set ) set sysmenu to default sysmenu to default 菜单菜单1 1、快速报表、快速报表2 2、报表向导、报表向导 1 1对对1 1 1 1对多对多报表报表