您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第八讲 Visual FoxPro 程序设计基础(续)
第八讲VisualFoxPro程序设计基础(续)2011年11月30日重要内容多模块程序程序调试7.3.1模块的定义和调用1.模块的定义定义:模块可以是子程序,也可以是过程。过程定义的语法格式:PROCEDURE过程名命令序列[RETURN[表达式]]打开过程文件的命令格式:SETPROCEDURETO过程文件名关闭过程文件的命令格式:CLOSEPROCEDURE2.模块调用格式:DO文件名︱过程名说明:如果模块是程序文件的代码,模块调用就用文件名。如果模块不是程序文件的代码,模块调用就用过程名。7.3.2参数传递1.PARAMETERS语句传递参数格式:PARAMETERS变量名表说明:变量名表中变量的个数与WITH参数表中参数的个数相同。若WITH后用变量作参数传递,则PARAMETERS中与之对应的变量的数据将被带回主程序。2.调用模块程序格式:DO文件名︱过程名WITH实参1[,实参2,…]功能:执行过程名所指定的子程序,WITH用于主程序与子程序间参数的传递。说明:返回语句的格式:RETURN[TOMASTER],当程序执行到RETURN时就返回到该次调用它的程序的语句处继续执行下面的语句。若有[TOMASTER]项,就返回最初调子程序的主程序。7.3.3变量的作用域1.变量的作用域定义:指变量在什么范围内是有效的或者能够被访问的。内存变量分类:公共变量公共变量又称为全局变量,在任何程序或过程中都可以使用的内存变量。如果某数据需要在程序中任何地方取用,为方便起见,就可定义为公共变量。定义公共变量用PUBLIC命令。私有变量在程序中直接使用(没有通过PUBLIC和LOCAL命令事先声明)并且由系统自动隐含建立的变量称为私有变量。私有变量通常用于过程中,其作用范围仅限于此过程中与在此过程中的过程,外部的程序无法作用到此类变量,而此类变量在进入此过程时才被定义,离开此过程后即被释放。定义私有变量用PRIVATE命令。一旦建立它的模块程序运行结束,这些私有变量将自动清除。局部变量未经PUBLIC定义的内存变量均为局部变量。局部变量只能在建立它的模块中使用,不能在上层或下层模块中使用。当建立它的模块程序运行结束时,局部变量自动释放。与全局变量一样,局部变量也要先建立后使用。局部变量用LOCAL命令定义。2.变量的隐藏开发应用程序时,主程序与子程序不一定是由同一个人来设计的,子程序中用到的变量实际上在主程序中已经建立,子程序的运行会无意间改变主程序中变量的取值。为了解决这个问题,可以采用在子程序中使用PRIVATE命令隐藏主程序中可能存在的变量,使得这些变量在子程序中暂时无效。例如:变量的隐藏。SETTALKOFFV1=100SETTALKOFFV2=150DOP?V1,V2&&显示1001000*过程PPROCEDUREPPRIVATEV1V1=500V2=1000?V1,V2&&显示5001000RETURN7.3.4例题1.子程序的运用例1:计算圆面积的主程序为YMJ,子程序为YMJ-1。TYPEYMJ.PRGSETTALKOFFDOWHILE.T.INPUT”圆的半径:”TORDOYMJ-1?“圆的面积是:”,SWAIT“还需要继续计算(Y/N)?”TOANIFUPPER(AN)=‘Y’LOOPELSEEXITENDIFENDDOSETTALKONTYPEYMJ-1.PRG*SUB-1PUBLICS&&(若无此语句则主程序在调用该子程序之前应有S的赋值语句)S=3.14159*R^2例2:计算长方型面积CFX.PRG,子程序为CFX-1。TYPECFX.PRGSETTALKOFFA=4B=6PUBLICSDOCFX-1WITH4,A+B,S?“S=”,SSETTALKONTYPECFX-1.PRG*SUB-1PARAMETERS长,宽,面积面积=长*宽RETURN2.过程的运用例:程序中常需用到计算阶乘、圆面积、长方型面积,现将它们编为三个过程,放在一个过程文件(GC.PRG)中,被主程序(ZC.PRG)调用。TYPEZC.PRGPUBLICS,TSETPROCEDURETOGCINPUT“输入圆半径:”TORDOP1?“圆的面积是:”,SDOP2WITH4,6?“长方形的面积是:”,SINPUT“输入阶乘数据:”TOIDOP3CLOSEPROCEDURETYPEGC.PRGPROCEDUREP1S=3.14159*R*RRETURNPROCEDUREP2PARAMETERS长,宽面积=长*宽S=面积RETURNPROCEDUREP3N=1T=1DOWHILEN=IT=T*NN=N+1ENDDODOP4RETURNPROCEDUREP4?I,”的阶乘积=”,TRETURN重要内容多模块程序程序调试7.4.1调试器环境1.调用调试器方法:选择“工具”菜单中的“调试器”命令在命令窗口中输入DEBUG命令2.“调试器”的5个子窗口“跟踪”窗口“监视”窗口“局部”窗口“调用堆栈”窗口“调试输出”窗口7.4.2设置断点1.在代码行上设置断点方法:把光标定位在某一行上,然后按Space键,或者双击灰色区域。按下F9键或者单击“调试器”工具栏上的“切换断点”按钮。断点的类型:在定位处中断如果表达式值为真则在定位处中断当表达式值为真时中断当表达式值改变时中断7.4.3调试菜单1.“调试”菜单主要包括运行继续执行取消定位修改跳出单步单步跟踪运行到光标处调速设置下一条语句例如:调试下面的程序找出100——900之间的所有“水仙花数”。操作步骤如下:打开程序在命令CLEAR之后添加“DEBUGOUT‘下面是100至900之间的所有水仙花数’”,在命令?I前添加DEBUGOUTI。选择“工具”菜单中的“调试器”命令打开调试器窗口。从调试器窗口的“窗口”菜单中选择相应命令打开跟踪、监视和调试输出窗口。选择调试器窗口“文件”菜单中的“打开”命令,然后在打开的“添加”对话框中指定程序文件并单击“确定”按钮打开要调试的程序。在跟踪窗口中找到代码行?I,然后在其左侧的灰色区域内双击鼠标设置第一个断点。在监视窗口的“监视”框内输入I=A^3+B^3+C^3并按回车键设置监视表达式。在监视窗口的列表框内找到表达式I=A^3+B^3+C^3,然后在左侧的灰色区域内双击鼠标设置第二个断点。选择“调试”菜单中的“运行”命令,在每次碰到断点中断时,可以选择“继续执行”命令恢复执行。注:两个断点设置的另外一种方法如下:在跟踪窗口中打开程序后,在命令?I处设置类型1断点;在表达式I=A^3+B^3+C^3上设置类型4断点。谢谢!
本文标题:第八讲 Visual FoxPro 程序设计基础(续)
链接地址:https://www.777doc.com/doc-3358858 .html