vfp中的过程与作用域.ppt

上传人:wuy****n92 文档编号:70790322 上传时间:2023-01-28 格式:PPT 页数:35 大小:216.99KB
返回 下载 相关 举报
vfp中的过程与作用域.ppt_第1页
第1页 / 共35页
vfp中的过程与作用域.ppt_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《vfp中的过程与作用域.ppt》由会员分享,可在线阅读,更多相关《vfp中的过程与作用域.ppt(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、7-5 过程与变量的作用域n一、子程序与主程序的概念一、子程序与主程序的概念1 1、结构化程序设计方法:核心思想是程序的模块化,它可把一个大的复杂的应用、结构化程序设计方法:核心思想是程序的模块化,它可把一个大的复杂的应用程序按功能分解成若干个相对独立的模块,这些模块就叫做程序按功能分解成若干个相对独立的模块,这些模块就叫做子程序子程序(过程过程过程过程)。使。使用时可以用一个主程序调用这些过程。用时可以用一个主程序调用这些过程。2 2、模块化程序设计优点:、模块化程序设计优点:1)1)方便开发、调试和调用。方便开发、调试和调用。2)2)子模块本身可以反复被调用,可避免重复输入。子模块本身可以

2、反复被调用,可避免重复输入。3 3、主程序、主程序 程序执行过程中,调用其他程序的称为主程序。程序执行过程中,调用其他程序的称为主程序。子程序子程序 被主程序调用的程序称为子程序又称为过程。被主程序调用的程序称为子程序又称为过程。其概念是其概念是相对相对的,即的,即子程序也可以调用其他子程序。子程序也可以调用其他子程序。主程序和子程序主程序和子程序相同点相同点相同点相同点:都是程序,建立方法相同。都是程序,建立方法相同。4 4、如何实现?、如何实现?可以使用可以使用子程序、过程、自定义函数子程序、过程、自定义函数来实现模块化程序设计。来实现模块化程序设计。5、主程序与子程序的调用关系 主程序主

3、程序main.prg 子程序子程序sub.prgDo SubReturnReturn 6、程序调用的三种结构(1)子程序设计)子程序设计 即用主程序调用子程序即用主程序调用子程序即用主程序调用子程序即用主程序调用子程序 主程序与子程序是不同的文件。主程序与子程序是不同的文件。(2)“过程过程”设计设计即用主程序调用即用主程序调用即用主程序调用即用主程序调用“过程过程过程过程”l“过程过程”与主程序是在同一个文件中与主程序是在同一个文件中l“过程过程”与主程序各自在不同的文件中与主程序各自在不同的文件中二、子程序的建立与修改二、子程序的建立与修改n1 1建立、修改子程序建立、修改子程序nModi

4、fy Command n参数说明:参数说明:n 子子程程序序的的建建立立、修修改改和和存存盘盘与与其其它它VFP程程序序一一样样,用用Modify Command 命命令令或或用菜单建立和修改,其扩展名也是用菜单建立和修改,其扩展名也是.prg。n 子程序一定要用子程序一定要用Return命令结束。命令结束。n2Return命令命令nReturn To Master|To程序名程序名n参数说明:参数说明:n Return如如不不作作任任何何选选项项,该该语语句句结结束束子子程程序序文文件件的的运运行行,返返回回到到调调用用子子程程序序的的主主程程序序的的下下一一个个语语句句,继续执行。继续执行

5、。n 选择选择To Master 则返回到一级主程序。则返回到一级主程序。n 选择选择To 则返回到则返回到“程序名程序名”指定的程序。指定的程序。*MAIN.PRGDO SUB1RETURN*SUB1.PRGDO SUB2RETURN*SUB2.PRGRETURN TO MASTERP2043 3、子程序的调用、子程序的调用 do子程序文件名子程序文件名 主程序调用子程序后,会通过子程序中的主程序调用子程序后,会通过子程序中的 Return命令返回到主程序调用子程序的下命令返回到主程序调用子程序的下一条命令继续运行。一条命令继续运行。说明:说明:(1)子程序是一个存储于磁盘上的独立的程序文件

6、,子程序是一个存储于磁盘上的独立的程序文件,调用时应指明路径。默认指当前路径。调用时应指明路径。默认指当前路径。(2)子程序可以被多次调用,也可以嵌套调用。子程序可以被多次调用,也可以嵌套调用。M!+N!sum=0p=1input 请输入一个数 to afor i=1 to ap=p*inextsum=sum+pp=1input 请输入一个数 to afor i=1 to ap=p*inextsum=sum+p?sumreturn将重复段存储在一个子程序文件中。将重复段存储在一个子程序文件中。编写主程序,在主程序中调用子程序。编写主程序,在主程序中调用子程序。*main.prgsum=0do

7、jcdo jc?sumreturn*jc.prgp=1input 请输入一个数 to afor i=1 to ap=p*iendforsum=sum+preturn三、过程一一个个过过程程也也是是一一个个相相对对独独立立的的程程序序段段。它它往往往往是是主主程程序序文文件件的的一一个个组组成成部部分分,习习惯惯上常把它写在程序的最后。上常把它写在程序的最后。1、新建过程、新建过程(1)过程第一个语句:过程标识语句。)过程第一个语句:过程标识语句。procedure 功能:开始定义过程了。功能:开始定义过程了。(2)过程中第二个接收参数语句。)过程中第二个接收参数语句。parameters 功能

8、:接收从主程序中传送来的实参。其中参数必须与调功能:接收从主程序中传送来的实参。其中参数必须与调用语句中参数对应。用语句中参数对应。(3)过程结束前要有一条返回语句。)过程结束前要有一条返回语句。return TO MASTER 功能:过程运行结束,返回调用它的程序。功能:过程运行结束,返回调用它的程序。如如return后无表达式,则返回后无表达式,则返回.T.(4)endproc 功能:过程运行结束功能:过程运行结束例例1:SET TALK OFF?这是主程序这是主程序DO GC1DO GC2SET TALK ONRETURNPROCEDURE GC1?这是过程这是过程1RETURNPROC

9、EDURE GC2?这是过程这是过程2RETURN2、过程文件过程文件 过程文件则是把多个程序段(多个过程)放在一过程文件则是把多个程序段(多个过程)放在一个过程文件中。这个过程文件一旦被打开,过程个过程文件中。这个过程文件一旦被打开,过程文件中所有过程也被打开。文件中所有过程也被打开。(1)过程文件的建立:过程文件的建立:过程文件也是一个程序文件,过程文件也是用命过程文件也是一个程序文件,过程文件也是用命令令MODIFY COMMAND命令或菜命令或菜单单独建立,其扩展名也是单单独建立,其扩展名也是.prg。(2)过程文件的编写格式过程文件的编写格式PROCEDURE 过程名过程名1 命令序

10、列命令序列RETURN PROCEDURE 过程名过程名2 命令序列命令序列2RETURN PROCEDURE过程名过程名n 命令序列命令序列nRETURN每个过程都要用每个过程都要用PROCEDURE过程名过程名n开头开头 3.过程文件的使用过程文件的使用 过程文件建立好后,进行使用,一般要经过以下几过程文件建立好后,进行使用,一般要经过以下几步:即步:即打开、调用和关闭打开、调用和关闭。(1)过程文件的打开:在主程序中使用过程前,一)过程文件的打开:在主程序中使用过程前,一定要打开过程文件。定要打开过程文件。过程文件的打开命令:过程文件的打开命令:SET PROCEDURE TO 功能:打

11、开一个过程文件。若不选择功能:打开一个过程文件。若不选择,则关闭所有的过程文件。而且,则关闭所有的过程文件。而且 Foxpro系统规定,系统规定,某一时刻只能打开一个过程文件,后打开的过程文某一时刻只能打开一个过程文件,后打开的过程文件自动关闭前面已打开的过程文件。件自动关闭前面已打开的过程文件。(2)过程文件中的过程的调用)过程文件中的过程的调用 过程的调用格式:过程的调用格式:DO 过程名过程名 功能:调用一个过程。在主程序中,一定要功能:调用一个过程。在主程序中,一定要打开过程文件,才能用打开过程文件,才能用DO过程名来调用过程名来调用过程文件中的过程。过程文件中的过程。(3)过程文件的

12、关闭)过程文件的关闭 命令格式:命令格式:CLOSE PROCEDURE 或:或:SET PROCEDURE TO CLEAR SET PROC to F1 S=0 DO P1DO P1 S=0 DO P2DO P2 S=0DO P3DO P3 CLOSE PROCRETURNRETURN Procedure P1.prgProcedure P1.prg R=5 S=3.14159*R*R?“S=”,S RETURNRETURN主程序主程序Procedure P2.prgProcedure P2.prg R=5 S=R*R?“S=”,S RETURN RETURNProcedure P3.pr

13、gProcedure P3.prg R=5 V=R*R*R?“V=”,V RETURN RETURNMAIN.prgMAIN.prg过程文件过程文件 F1.prg例题1:*把上例的两个过程放在过程文件中。MODIFY COMMAND GCWJ1procedure GC1?这是过程1Returnprocedure GC2?这是过程2Return*调用上面定义的过程文件中的两个过程。SET TALK OFF?这是主程序set procedure to gcwj1DO GC1DO GC2close procedureSET TALK ONRETURN例题2、用过程文件调用的方法编程,使其学生档案表进

14、行添加、修改、删除等操作,并要求能进行多次操作。USE 学生档案表DO WHILE.T.clear2,10 SAY 0.退出3,10 SAY 1.追加记录4,10 SAY 2.修改记录5,10 SAY 3.删除记录INPUT 请输入03 to kSET PROCEDURE TO GCWJ2DO CASE CASE K=0 CANCEL CASE K=1 DO ZJ CASE K=2 DO XG CASE K=3 DO SC OTHERWISE?ERRORENDCASE ENDDOCLOSE PROCEDUREUSE*GCwj2.PRG过程文件过程文件PROCEDURE ZJ APPENDRET

15、URNPROCEDURE XG INPUT 请输入修改记录号:请输入修改记录号:TO NR EDIT RECORD NR RETURNPROCEDURE SC INPUT 请输入删除录号请输入删除录号:TO NR GO NR DELETERETURN3、过程的参数传递、过程的参数传递 可以在过程中定义形式参数,调用过程时,再与实际参数相结可以在过程中定义形式参数,调用过程时,再与实际参数相结合的方法来传递数据。这时,被调用的过程中的第一条可执行合的方法来传递数据。这时,被调用的过程中的第一条可执行语句必须是参数说明语句。语句必须是参数说明语句。(1)过程中的参数格式)过程中的参数格式 格式:格

16、式:PARAMETERS 形式参数表形式参数表 功能:功能:定义形式参数。定义形式参数。说明:说明:由不同的变量组成,参数之间用由不同的变量组成,参数之间用“,“分隔,参数表中分隔,参数表中的变量,在过程中不必再次定义。的变量,在过程中不必再次定义。该关键语句必须是被调用的过程中的该关键语句必须是被调用的过程中的第一条第一条可执行语句。可执行语句。若要给过程中形式参数传递数据,若要给过程中形式参数传递数据,必须在主程序中将实际参数包必须在主程序中将实际参数包含在过程的调用命令中,含在过程的调用命令中,带有参数的过程调用的命令格式为:带有参数的过程调用的命令格式为:格式:格式:DO 过程名过程名

17、 WITH 实际参数表实际参数表功能:将实际参数表中的内容传递给指定过程名相对应功能:将实际参数表中的内容传递给指定过程名相对应的形式参数表,然后执行该过程。的形式参数表,然后执行该过程。说明:说明:(1)实际参数表中的参数必须与实际参数表中的参数必须与PARAMETER语句中定义的语句中定义的形式参数变量表的类型与次序上完全一致。形式参数变量表的类型与次序上完全一致。形参数量形参数量=实参数量,多余的形参值为实参数量,多余的形参值为.F.(2)实际参数表中的参数可以是常量、变量和表达式,各个参实际参数表中的参数可以是常量、变量和表达式,各个参数间用数间用“,”分隔。分隔。(2)带参数过程的调

18、用)带参数过程的调用例例1:编写一个求:编写一个求1到到N的累加和的过程,并在过程中输出和。的累加和的过程,并在过程中输出和。clearinput Please input n:to xdo leijia with xReturnprocedure leijiaparameters nsum=0for i=1 to n sum=sum+iendfor?sumreturn例例2:编写一个求圆面积的过程,在主程序中输入圆的半径,并编写一个求圆面积的过程,在主程序中输入圆的半径,并在主程序中输出圆面积。在主程序中输出圆面积。CLEARS=0INPUT 请输入圆的半径请输入圆的半径 TO NDO MJ

19、 WITH N,S?圆面积圆面积S=“,SRETURNPROCEDURE MJ PARAMETERS R,AREA AREA=3.14159*R*RRETURN执行该程序后,将输出圆的面积,主程序中变量执行该程序后,将输出圆的面积,主程序中变量S S的值是通的值是通过参数过参数areaarea传递来的。传递来的。四、自定义函数四、自定义函数 用户自定义函数和过程其实差不多,同为用户自定义函数和过程其实差不多,同为一段程序,只是自定义函数必须返回一个一段程序,只是自定义函数必须返回一个函数值,而过程却无此限制,所以自定义函数值,而过程却无此限制,所以自定义函数的建立与过程编辑的方法相同,只是函数

20、的建立与过程编辑的方法相同,只是在最后一条的命令中,在最后一条的命令中,必须指出函数的返必须指出函数的返回值。回值。1自定义函数的编写格式:自定义函数的编写格式:FUNCTION函数名函数名 PARAMETERS参数表参数表 函数体函数体RETURN 表达式表达式功能:定义一个用户自定义函数。功能:定义一个用户自定义函数。说明:说明:函数名:它是由字母、数字或下划线组成,必须以字母函数名:它是由字母、数字或下划线组成,必须以字母或下划线开头,但不能与系统提供的函数名同名,也不能与或下划线开头,但不能与系统提供的函数名同名,也不能与内存变量同名。内存变量同名。PARAMETERS:如果向函数中传

21、递参数,则必须用该语:如果向函数中传递参数,则必须用该语句定义形式参数表,各参数间用逗号隔开。句定义形式参数表,各参数间用逗号隔开。RETURN表达式表达式:将表达式的值作为函数值返回将表达式的值作为函数值返回到调用程序中。到调用程序中。2函数的调用:函数的调用:自定义函数的调用方式与系统函数的方法相同,其形式为:函数名(参数表)函数名(参数表)例题:例题:用自定义函数的形式,编写程序计算圆面积。用自定义函数的形式,编写程序计算圆面积。*主程序主程序SET TALK OFFCLEARINPUT 请输入圆的半径:请输入圆的半径:TO AS=AREA(A)?圆面积圆面积S=,SRETURN*自定义

22、函数:自定义函数:AREAFUNCTION AREA&定义函数名定义函数名AREA PARAMETERS R&定义函数的形参定义函数的形参 R S=3.14159*R*RRETURN S&返回函数的值返回函数的值五、参数的传递五、参数的传递无论是过程、还是自定义函数,参数传递都是一个非无论是过程、还是自定义函数,参数传递都是一个非常重要的概念。常重要的概念。传递参数:传递参数:do with 函数名(参数表)函数名(参数表)说明:写在主程序中。说明:写在主程序中。接受参数:接受参数:parameters 说明:写在过程(或者函数等)中。说明:写在过程(或者函数等)中。调用程序:调用程序:格式格

23、式1:do 文件名文件名 with 实参实参1,实参,实参2实参为常量、表达式,把值给形参实参为常量、表达式,把值给形参(按值传递按值传递)实参为变量,把地址给形参,这时形参、实参为同一个变量实参为变量,把地址给形参,这时形参、实参为同一个变量(按引用(址)传递按引用(址)传递)格式格式2:文件名(实参:文件名(实参1,实参,实参2)默认按值传递,可以通过命令默认按值传递,可以通过命令 set udfparms to value|reference重设参数的传递方式重设参数的传递方式to value:按值传递。形参变实参不变。按值传递。形参变实参不变。to reference:按引用传递。形参

24、变实参也变。按引用传递。形参变实参也变。接收参数接收参数parameters 在模块中建立私有变量在模块中建立私有变量lparameters 在模块中建立局部变量在模块中建立局部变量注意:注意:如形参实参多余的取如形参实参多余的取.F.值值dowith格式不受格式不受 set udfparms to 设置的影响设置的影响(变量)的形式,按值传递;(变量)的形式,按值传递;当实参为数组元素,按值传递;当实参为数组元素,按值传递;实参为数组名时:若按值传递,数组第一个元素值传给形参,若按引用传递,则传实参为数组名时:若按值传递,数组第一个元素值传给形参,若按引用传递,则传递整个数组。递整个数组。P

25、206 例:例:7.25 ,7.26六、变量的作用域六、变量的作用域(1 1)定义:变量在什么范围内是有效的)定义:变量在什么范围内是有效的,能被访问的。能被访问的。(2 2)内存变量可分为)内存变量可分为公共变量、私有变量、局部变量公共变量、私有变量、局部变量三种。三种。公共变量:公共变量:public public 内存变量名表内存变量名表建立后一直有效,在命令窗口中也有效,在执行了建立后一直有效,在命令窗口中也有效,在执行了clear memoryclear memory、release release、quitquit后才无效。后才无效。私有变量:使用赋值语句私有变量:使用赋值语句“s

26、toreto”“=”“storeto”“=”建立的变量。建立的变量。建立后在建立它的模块和下级模块中有效,本层模块运行结建立后在建立它的模块和下级模块中有效,本层模块运行结束,自动被清除。束,自动被清除。局部变量:局部变量:local local 内存变量名表内存变量名表建立后只能在本层使用的,不能在上下层中使用。建立后只能在本层使用的,不能在上下层中使用。以以mainmain和和sub2sub2为例进行说明为例进行说明(3 3)主程序和子程序中变量相同时,为防止)主程序和子程序中变量相同时,为防止“子子”改变改变“主主”的的取值,可在子程序中隐藏主程序中的变量取值,可在子程序中隐藏主程序中的

27、变量,使某些变量在当前暂使某些变量在当前暂时无效时无效.格式:格式:private private 内存变量名表内存变量名表 private all like|except private all like|except(4 4)privateprivate和和locallocal区别:区别:private private 隐藏上层变量,使这些变量在当前模块和下级模块中无隐藏上层变量,使这些变量在当前模块和下级模块中无效,不会把下层的值带到上层。效,不会把下层的值带到上层。local local 隐藏上层变量,只在本层隐藏,到下层还出现,把下层的隐藏上层变量,只在本层隐藏,到下层还出现,把下层

28、的 值带到上层。值带到上层。(5 5)以以main1main1和和p7p7为例说明。为例说明。各类变量作用域各类变量作用域变量类型声明方式作用范围全局变量Public所有模块私有变量无须声明,直接使用当前模块及下级模块隐蔽变量Private当前模块及下级模块,并把上层模块同名变量隐蔽起来。局部变量Local只在当前模块有效。七七、程序调试、程序调试(1)定义:在发现程序有错误的情况下,确定出错的位置并纠正错误,关键是要确定出错的位置。(2)方法:调用调试器工具调试器 Debug(3)各子窗口的作用和使用特点 P211(4)设置断点类型类型1:在定位处中断。设置:双击该行代码左端区域,用同样的方法可以取消已设的断点。类型类型2:如表达式为真时在定位处中断。设置:工具断点类型定位文件表达式类型定位文件表达式添加确定 先设为类型1,在断点框中选择该断点,重设类型并指定表达式,添加,删除原设置类型类型3:当表达式值为真时中断。设置:工具断点类型表达式类型表达式添加确定类型类型4:当表达式值改变时中断。设置:在监视窗口内输入表达式并确定 在监视窗口列表框中找到相应表达式,在左侧灰色区域内双击鼠标。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁