预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共71页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第10章子程序、过程、自定义函数、内存变量与数组10.1子程序一、子程序与主程序的概念结构化程序设计方法的一个核心思想是程序的模块化,它可把一个大的复杂的应用程序按功能分解成若干个相对独立的模块,这个模块就叫做子程序。通过模块的组合来完成一个大的复杂的应用程序的编写。子程序是一个为实现某个功能的独立程序。其特点是:它总被其它程序调用而一般不能单独执行。通常把调用它的程序称为主程序,被主程序调用的程序称为子程序。当然,其概念也是相对的,即子程序也可以调用其他子程序。二、子程序的建立与修改1.建立、修改子程序ModifyCommand<子程序文件名>参数说明:◆子程序的建立、修改和存盘与其它VFP程序一样,用ModifyCommand<程序文件名>命令或用菜单建立和修改,其扩展名也是Prg。◆子程序一定要用Return命令结束。2.Return命令Return参数说明:◆Return如不作任何选项,该语句结束子程序文件的运行,返回到调用子程序的主程序的下一个语句,继续执行。三、子程序的调用Do〈子程序文件名〉主程序调用子程序后,会通过子程序中的Return命令返回到主程序调用子程序的下一条命令继续运行。例:编程求N!+M!的和Sum=0P1=1DoJcSum=Sum+P1DoJcSum=Sum+P1?”N!+M!的值=”+Str(Sum)ReturnModiCommJc&&建立子程序jcP1=1Input“请输入计算阶乘的值”ToAForI=1ToAP1=P1*IEndForReturn例:编写一个完成对“学生档案表”按“姓名”查询或按“学号”删除的程序。主程序名Main.Prg。查询子程序名Cx.Prg,Sc.Prg删除子程序名Sc.Prg。*主程序main.PrgUse学生档案表DoWhile.T.ClearK=0@6,12Say"1.按姓名查询"@8,12Say"2.按学号删除记录"@10,12Say"3.退出系统"@12,12Say"请输入相应的选择号"GetKReadDoCaseCaseK=1DoCx&&调用子程序cx.PrgCaseK=2DoSc&&调用子程序sc.PrgOtherwise@14,20Say“输入的选择号有错!”EndcaseWait"是否继续(Y/N)?"ToAIfUpper(A)<>"Y"ExitEndifEnddoReturn子程序Cx.Prg功能:输入姓名查询记录DoWhile.T.ClearAccept"请输入待查询的姓名"ToXmLocateFor姓名=XmIfEof()?"查无此人!"ElseDisplayEndifWait"是否继续查询(Y/N)?"ToAIfUpper(A)<>"Y"ExitEndifEnddoReturn**子程序Sc.Prg功能:输入学号删除记录DoWhile.T.ClearAccept"请输入要删除的记录的学号:"ToXhLocateFor学号=XhIfFound()DeleDisplayWait"是否要作物理删除(Y/N?)"ToBIfUpper(B)=="Y"PackEndIfElse?"输入有错,没有该学号!"EndifWait"是否继续删除(Y/N)?"ToAIfUpper(A)<>"Y"ExitEndIfEndDoReturn10.2过程过程是子程序的另一种形式,一个过程也是一个为了实现某个功能的程序段。过程是主程序文件的一个组成部分,习惯上常把它写在主程序的最后。一个主程序可以包括多个过程,但每个过程都要用Procedure〈过程名〉开头来说明过程名、用Return来结束一个过程。一、过程的编写格式Procedure〈过程名〉&&以过程说明语句开头〈过程体命令序列〉&&过程体Return[ToMaster/To<程序名>]&&过程的结束语句参数说明:◆Procedure〈过程名〉:过程总是写在主程序的后面,每个过程都要用Procedure〈过程名〉开头来说明过程名,主程序通过Do命令能够直接调用过程。◆〈过程体命令序列〉:是一个完成指定任务的程序段,是过程的核心部分。◆Return:是过程的结束语句,每个过程必须用Return结束。二、过程的调用Do〈过程名〉例:对任意给的正整数A、B、C,用过程编写程序计算S=A!+(3/5)*B!+(C!/2)*主程序JSG.PRGSetTalkOffClearT=1Input“A=”ToXDoJcA1=TInput“B=”ToXDoJcB1=TInput“C=”ToXDoJcC1=T?”S=”,A1+(3/5)*B1+(C1/2)Return求阶乘的过程Jc,注意:应直接写在主程序后面。ProcedureJcT=1ForI=1ToXT=T*IEndforReturn10.3过程文件如果在主程序中过程太多,那么,主