vfp中的过程与作用域PPT幻灯片_第1页
vfp中的过程与作用域PPT幻灯片_第2页
vfp中的过程与作用域PPT幻灯片_第3页
vfp中的过程与作用域PPT幻灯片_第4页
vfp中的过程与作用域PPT幻灯片_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

7-5过程与变量的作用域,一、子程序与主程序的概念1、结构化程序设计方法:核心思想是程序的模块化,它可把一个大的复杂的应用程序按功能分解成若干个相对独立的模块,这些模块就叫做子程序(过程)。使用时可以用一个主程序调用这些过程。2、模块化程序设计优点:1)方便开发、调试和调用。2)子模块本身可以反复被调用,可避免重复输入。3、主程序程序执行过程中,调用其他程序的称为主程序。子程序被主程序调用的程序称为子程序又称为过程。其概念是相对的,即子程序也可以调用其他子程序。主程序和子程序相同点:都是程序,建立方法相同。4、如何实现?可以使用子程序、过程、自定义函数来实现模块化程序设计。,5、主程序与子程序的调用关系,主程序main.prg子程序sub.prg,DoSubReturn,Return,6、程序调用的三种结构,(1)子程序设计即用主程序调用子程序主程序与子程序是不同的文件。(2)“过程”设计即用主程序调用“过程”“过程”与主程序是在同一个文件中“过程”与主程序各自在不同的文件中,二、子程序的建立与修改,1建立、修改子程序ModifyCommand参数说明:子程序的建立、修改和存盘与其它VFP程序一样,用ModifyCommand命令或用菜单建立和修改,其扩展名也是.prg。子程序一定要用Return命令结束。,2Return命令ReturnToMaster|To程序名参数说明:Return如不作任何选项,该语句结束子程序文件的运行,返回到调用子程序的主程序的下一个语句,继续执行。选择ToMaster则返回到一级主程序。选择To则返回到“程序名”指定的程序。,*MAIN.PRGDOSUB1RETURN,*SUB1.PRGDOSUB2RETURN,*SUB2.PRGRETURNTOMASTER,P204,3、子程序的调用do子程序文件名主程序调用子程序后,会通过子程序中的Return命令返回到主程序调用子程序的下一条命令继续运行。说明:(1)子程序是一个存储于磁盘上的独立的程序文件,调用时应指明路径。默认指当前路径。(2)子程序可以被多次调用,也可以嵌套调用。,M!+N!,sum=0p=1input请输入一个数toafori=1toap=p*inextsum=sum+pp=1input请输入一个数toafori=1toap=p*inextsum=sum+p?sumreturn,将重复段存储在一个子程序文件中。编写主程序,在主程序中调用子程序。,*main.prgsum=0dojcdojc?sumreturn,*jc.prgp=1input请输入一个数toafori=1toap=p*iendforsum=sum+preturn,三、过程,一个过程也是一个相对独立的程序段。它往往是主程序文件的一个组成部分,习惯上常把它写在程序的最后。,1、新建过程(1)过程第一个语句:过程标识语句。procedure功能:开始定义过程了。(2)过程中第二个接收参数语句。parameters功能:接收从主程序中传送来的实参。其中参数必须与调用语句中参数对应。(3)过程结束前要有一条返回语句。returnTOMASTER功能:过程运行结束,返回调用它的程序。如return后无表达式,则返回.T.(4)endproc功能:过程运行结束,例1:SETTALKOFF?这是主程序DOGC1DOGC2SETTALKONRETURNPROCEDUREGC1?这是过程1RETURNPROCEDUREGC2?这是过程2RETURN,2、过程文件,过程文件则是把多个程序段(多个过程)放在一个过程文件中。这个过程文件一旦被打开,过程文件中所有过程也被打开。(1)过程文件的建立:过程文件也是一个程序文件,过程文件也是用命令MODIFYCOMMAND命令或菜单单独建立,其扩展名也是.prg。,(2)过程文件的编写格式PROCEDURE过程名1命令序列RETURNPROCEDURE过程名2命令序列2RETURNPROCEDURE过程名n命令序列nRETURN每个过程都要用PROCEDURE过程名n开头,3.过程文件的使用过程文件建立好后,进行使用,一般要经过以下几步:即打开、调用和关闭。(1)过程文件的打开:在主程序中使用过程前,一定要打开过程文件。过程文件的打开命令:SETPROCEDURETO功能:打开一个过程文件。若不选择,则关闭所有的过程文件。而且Foxpro系统规定,某一时刻只能打开一个过程文件,后打开的过程文件自动关闭前面已打开的过程文件。,(2)过程文件中的过程的调用过程的调用格式:DO过程名功能:调用一个过程。在主程序中,一定要打开过程文件,才能用DO过程名来调用过程文件中的过程。(3)过程文件的关闭命令格式:CLOSEPROCEDURE或:SETPROCEDURETO,CLEARSETPROCtoF1S=0DOP1S=0DOP2S=0DOP3CLOSEPROCRETURN,ProcedureP1.prgR=5S=3.14159*R*R?“S=”,SRETURN,主程序,ProcedureP2.prgR=5S=R*R?“S=”,SRETURN,ProcedureP3.prgR=5V=R*R*R?“V=”,VRETURN,MAIN.prg,过程文件F1.prg,例题1:*把上例的两个过程放在过程文件中。MODIFYCOMMANDGCWJ1procedureGC1?这是过程1ReturnprocedureGC2?这是过程2Return*调用上面定义的过程文件中的两个过程。SETTALKOFF?这是主程序setproceduretogcwj1DOGC1DOGC2closeprocedureSETTALKONRETURN,例题2、用过程文件调用的方法编程,使其学生档案表进行添加、修改、删除等操作,并要求能进行多次操作。,USE学生档案表DOWHILE.T.clear2,10SAY0.退出3,10SAY1.追加记录4,10SAY2.修改记录5,10SAY3.删除记录INPUT请输入03tokSETPROCEDURETOGCWJ2DOCASECASEK=0CANCELCASEK=1DOZJCASEK=2DOXGCASEK=3DOSCOTHERWISE?ERRORENDCASEENDDOCLOSEPROCEDUREUSE,*GCwj2.PRG过程文件PROCEDUREZJAPPENDRETURNPROCEDUREXGINPUT请输入修改记录号:TONREDITRECORDNRRETURNPROCEDURESCINPUT请输入删除录号:TONRGONRDELETERETURN,3、过程的参数传递,可以在过程中定义形式参数,调用过程时,再与实际参数相结合的方法来传递数据。这时,被调用的过程中的第一条可执行语句必须是参数说明语句。(1)过程中的参数格式格式:PARAMETERS形式参数表功能:定义形式参数。说明:由不同的变量组成,参数之间用“,“分隔,参数表中的变量,在过程中不必再次定义。该关键语句必须是被调用的过程中的第一条可执行语句。,若要给过程中形式参数传递数据,必须在主程序中将实际参数包含在过程的调用命令中,带有参数的过程调用的命令格式为:格式:DO过程名WITH实际参数表功能:将实际参数表中的内容传递给指定过程名相对应的形式参数表,然后执行该过程。说明:(1)实际参数表中的参数必须与PARAMETER语句中定义的形式参数变量表的类型与次序上完全一致。形参数量=实参数量,多余的形参值为.F.(2)实际参数表中的参数可以是常量、变量和表达式,各个参数间用“,”分隔。,(2)带参数过程的调用,例1:编写一个求1到N的累加和的过程,并在过程中输出和。clearinputPleaseinputn:toxdoleijiawithxReturnprocedureleijiaparametersnsum=0fori=1tonsum=sum+iendfor?sumreturn,例2:编写一个求圆面积的过程,在主程序中输入圆的半径,并在主程序中输出圆面积。CLEARS=0INPUT请输入圆的半径TONDOMJWITHN,S?圆面积S=“,SRETURNPROCEDUREMJPARAMETERSR,AREAAREA=3.14159*R*RRETURN执行该程序后,将输出圆的面积,主程序中变量S的值是通过参数area传递来的。,四、自定义函数,用户自定义函数和过程其实差不多,同为一段程序,只是自定义函数必须返回一个函数值,而过程却无此限制,所以自定义函数的建立与过程编辑的方法相同,只是在最后一条的命令中,必须指出函数的返回值。,1自定义函数的编写格式:FUNCTION函数名PARAMETERS参数表函数体RETURN表达式功能:定义一个用户自定义函数。说明:函数名:它是由字母、数字或下划线组成,必须以字母或下划线开头,但不能与系统提供的函数名同名,也不能与内存变量同名。PARAMETERS:如果向函数中传递参数,则必须用该语句定义形式参数表,各参数间用逗号隔开。RETURN表达式:将表达式的值作为函数值返回到调用程序中。,2函数的调用:自定义函数的调用方式与系统函数的方法相同,其形式为:函数名(参数表),例题:用自定义函数的形式,编写程序计算圆面积。*主程序SETTALKOFFCLEARINPUT请输入圆的半径:TOAS=AREA(A)?圆面积S=,SRETURN*自定义函数:AREAFUNCTIONAREA&定义函数名AREAPARAMETERSR&定义函数的形参RS=3.14159*R*RRETURNS&返回函数的值,五、参数的传递,无论是过程、还是自定义函数,参数传递都是一个非常重要的概念。传递参数:dowith函数名(参数表)说明:写在主程序中。接受参数:parameters说明:写在过程(或者函数等)中。,调用程序:格式1:do文件名with实参1,实参2实参为常量、表达式,把值给形参(按值传递)实参为变量,把地址给形参,这时形参、实参为同一个变量(按引用(址)传递)格式2:文件名(实参1,实参2)默认按值传递,可以通过命令setudfparmstovalue|reference重设参数的传递方式tovalue:按值传递。形参变实参不变。toreference:按引用传递。形参变实参也变。,接收参数parameters在模块中建立私有变量lparameters在模块中建立局部变量注意:如形参实参多余的取.F.值dowith格式不受setudfparmsto设置的影响(变量)的形式,按值传递;当实参为数组元素,按值传递;实参为数组名时:若按值传递,数组第一个元素值传给形参,若按引用传递,则传递整个数组。P206例:7.25,7.26,六、变量的作用域(1)定义:变量在什么范围内是有效的,能被访问的。(2)内存变量可分为公共变量、私有变量、局部变量三种。公共变量:public内存变量名表建立后一直有效,在命令窗口中也有效,在执行了clearmemory、release、quit后才无效。私有变量:使用赋值语句“storeto”“=”建立的变量。建立后在建立它的模块和下级模块中有效,本层模块运行结束,自动被清除。局部变量:local内存变量名表建立后只能在本层使用的,不能在上下层中使用。以main和sub2为例进行说明,(3)主程序和子程序中变量相同时,为防止“子”改变“主”的取值,可在子程序中隐藏主程序中的变量,使某些变量在当前暂时无效.格式:private内存变量名表privatealllike|except(4)private和local区别:private隐藏上层变量,使这些变量在当前模块和下级模块中无效,不会把下层的值带到上层。local隐藏上层变量,只在本层隐藏,到下层还出现,把下层的值带到上层。(5)以main1和p7为例说明。,各类变量作用域,七、程序调试(1)定义:在发现程序有错误的情况下,确定出错的位置并纠正错误,关键是要确定出错的位置。(2)方法:调用调试器工具

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论