04 第四章 程序设计控制结构.ppt
计算机教研室计算机教研室数据库应用数据库应用(VFP6.0)JCompany Logo第四章第四章 程序设计控制结构程序设计控制结构程序设计基本结构程序设计基本结构1与表文件相关的程序设计与表文件相关的程序设计2子程序与参数传递子程序与参数传递3综合程序设计综合程序设计4第二节第二节 子程序与参数传递子程序与参数传递第四章第四章 程序设计控制结构程序设计控制结构JCompany LogoJCompany Logo关键问题关键问题v什么叫子程序、过程和函数什么叫子程序、过程和函数?v为什么需要建立?为什么需要建立?v如何建立?如何建立?v参数是怎么样传递?参数是怎么样传递?利用参数的内存变量属性利用参数的内存变量属性在子程序、过程和函数之间传递在子程序、过程和函数之间传递为什么建立子程序、过程、函数?为什么建立子程序、过程、函数?v求M!+N!JCompany Logo&求m!+n!S1=1FOR I=1 TO M S1=S1*IENDFORS2=1FOR J=1 TO N S2=S2*JENDFOR?S1+S2太多重复代码!太多重复代码!&求m!+n!S1=F(M)S2=F(N)?S1+S2S=1FOR I=1 TO X S=S*IENDFOR子程序、过程、函数!子程序、过程、函数!主要内容主要内容v子程序定义调用与返回v过程定义建立、调用v函数定义建立、调用v参数传递及作用域子程序的基本概念子程序的基本概念v定义子程序是相对于主程序而言的一个独立的程序文件,其建立方法与建立程序文件的方法相同,扩展名为.PRG。v调用与返回 调用:DO WITH 返回:RETURN TO MASTERNotice:子程序执行时直到遇到以下情况时,自动结束返回:RETURN、RETRY、CANCEL、QUIT和子程序的末尾JCompany Logo主、子程序的调用关系主、子程序的调用关系递接调用关系递接调用关系跨接调用关系跨接调用关系JCompany Logo*P1.PRGDO P2RETURN*P2.PRGDO P3RETURN*P3.PRGRETURN to master*P1.PRGDO P2RETURN*P2.PRGDO P3RETURN*P3.PRGRETURNDEMO-书书P163-图图4.16-4.17Return to master过程过程-定义定义v1.过程与过程文件的定义过程是一个由PROCEDURE开头,ENDPROC结尾的子程序段。过程可以将实现相对独立功能的常用代码集中在一起,供应用程序在需要时调用。过程文件:是由若干个过程构成的文件。PROCEDURE ENDPROCv 注意:(1)过程必须存放在一个过程文件中。(2)不能把可执行的主程序代码放在过程之后。过程的建立与调用过程的建立与调用v二、过程文件的建立与程序文件的创建方法相同,将过程文件的内容一行一行地输入。v三、过程文件的调用打开打开:SET PROCEDURE TO 关闭关闭:SET PROCEDURE TO 或 CLOSE PROCEDURE调用调用:DO WITH 注意:调用过程文件之前必须要打开过程文件。调用结束后要关闭。DEMOvP164例题4.20set talk offclea?同学们!同学们!do p2?晚上好!晚上好!set talk onproc p2?早上好!早上好!do p3?下午好!下午好!endprocproc p3?中午好!中午好!endprocJCompany Logo参数传递与作用域参数传递与作用域内存变量作用域内存变量作用域参数传递参数传递DO WITH 主程序与子程序之间或过程与过程之间主程序与子程序之间或过程与过程之间:1.利用内存变量属性传递参数利用内存变量属性传递参数v利用内存变量属性传递参数 变量寿命传递方向作用范围定义格式本地属性本地属性私有属性私有属性自然属性自然属性公共属性公共属性自然属性自然属性 v含义是指在程序(.PRG)中出现的没有特别声明而只是通过赋值或数组定义的变量。v特点定义格式:STORE/=、DIMENSION、DECLARE、INPUT、SUM等。作用范围:该程序及其调用的下属子程序。传递方向:单向。变量寿命:所在程序运行结束后,该变量被自动删除。自然属性自然属性P165例题例题T4.21自然属性变量变化说明自然属性变量变化说明公用属性公用属性 v含义是指能在所有的程序中使用,并通过这种方式共享的内存变量。公用属性的内存变量必须先特别声明和定义后方能使用。v公用属性的内存变量特点定义格式:PUBLIC作用范围:整个系统的所有程序。传递方向:双向(主程序主程序子程序子程序)变量寿命:程序运行结束后,内存中仍然保存该变量。公有属性公有属性Public P167例题例题T4.22公有属性公有属性Public变量变化变量变化DEMO私有属性私有属性 Privatev私有属性的内存变量含义:是指具有既类似自然属性又能屏蔽上级同名内存变量属性的内存变量。私有属性的内存变量也必须先特别声明后方能使用。v私有属性的内存变量特点定义格式:PRIVATE/ALLLIKE/EXCEPT作用范围:该程序及其调用的下属子程序。类似自然属性传递方向:单向(主程序子程序)。类似自然属性变量寿命:程序运行结束后,该变量被自动删除。特殊作用:可屏蔽(隐藏)上级(主)程序中与当前程序同名的变量,即对当前程序中变量的操作,不影响上级(主)程序中与当前程序同名的变量值。私有属性私有属性Private P169例题例题T4.23私有属性私有属性Private变量变化变量变化DEMO本地属性本地属性Localv本地属性的内存变量含义:是指具有既类似私有属性又不影响下属子程序中同名内存变量属性的内存变量。本地属性的内存变量必须先特别定义后方能使用。v本地属性的内存变量特点定义格式:LOCAL作用范围:该程序本身。传递方向:无。变量寿命:程序运行结束后,该变量被自动删除。特殊作用:可屏蔽(隐藏)上级(主)程序中与当前程序同名的变量,即对当前程序中变量的操作,不影响上级(主)程序中与当前程序同名的变量值。同时也不受下属子程序中同名内存变量值的影响。本地属性本地属性Local 例题例题P171 T4.24本地属性本地属性Local变量变化范围变量变化范围内存变量四种作用域属性比较内存变量四种作用域属性比较2.利用利用DOWITH传递参数传递参数v优点:在不受变量名限制的情况下能达到传递参数的目的。v传递参数:DO WITH v接收参数:PARAMETERS v规则传递参数命令在调用子程序处;接受参数命令在子程序第一行传递方式:引用引用:传递参数传递参数被隐藏起来,但其值随着被调用程序中接受参数接受参数的变化而变化()传值传值:表达式列表或单个内存变量用圆括号,参数传递为传值方式。即传递参数传递参数不被隐藏,其值也不随着被调用程序中接受参数接受参数的变化而变化 传递参数传递参数接受参数接受参数对应位置对应位置DEMO-引用与传值的比较引用与传值的比较vP172-173例题4.25-4.26引引用用传传值值X=A,Y=BA=X,B=Y主程序中的主程序中的A、B隐藏,隐藏,此为新的内存变量此为新的内存变量X=A+9,Y=B变量变量A、B没隐藏,且没隐藏,且为自然属性变量,故:为自然属性变量,故:A=100,B=OK自定义函数自定义函数v(1)定义:是一个子程序(.PRG),它可以返回一个值到调用程序。v(2)建立:与一般的命令文件的建立方法相同。自定义函数在过程文件中的存在形式为:FUNCTION 自定义函数名语句序列ENDFUNCv(3)特点在自定义函数程序中首条命令一般为(如果没有参数传送可略):PARAMETERS 在自定义函数程序中尾条命令必须为:RETURN 自定义函数的定义及调用自定义函数的定义及调用v完整的定义格式v自定义函数调用与参数传递 调用:参数传递:默认为传值。DEMO-例题例题vP175-例题4.27自定义函数判断是否是偶数?vP176-例题4.28-4.29自定义函数求三角形面积set talk offcleainput n=to n?jos(n)set talk onfunction jospara xif x%2=0return.t.elsereturn.f.endifendfuncfunction tareapara a,b,cif(a+b)c and(a+c)b and(b+c)as=(a+b+c)/2mj=sqrt(s*(s-a)*(s-b)*(s-c)elsemj=0endifreturn mjENDFUNC函数与过程的区别函数与过程的区别自定义函数必须返回一个值自定义函数必须返回一个值分别用函数和过程求分别用函数和过程求n!练习题练习题1.分别用变量作用域、过程、函数求下列表达式2.求S=A!+B!+C!。其中A、B、C均由键盘输入。3.求S=K!+(K+1)!+M!,其中K和M由键盘输入,且Km 计算机教研室计算机教研室