欢迎来到天天文库
浏览记录
ID:22949103
大小:63.50 KB
页数:21页
时间:2018-11-02
《[计算机]63子程序过程自定义函数》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、6.3子程序、过程和自定义函数引入:一个复杂的问题的解决,需要从功能上划分成不同的模块。每个模块需要建立相应的程序段,之间用接口连接,就可以解决复杂的问题。这些模块是在结构上相对独立的程序段,可以是子程序,过程和自定义函数。它们可以被其他模块所调用,也可以调用其他模块。6.3.1子程序被其它程序调用的程序叫做子程序,调用其他程序而又没有被其它程序调用的程序叫主程序。1.子程序的构成子程序或者是过程与一般程序的编写和建立方法都是相同的,运行操作也都是相同的。只是在其最后,即子程序的末尾,设置了程序的返回语句,返回到被调用的地方。返回语句的写法:RETURN[<表达式>
2、TO
3、21MASTER]使子程序返回到调用语句下面的一条语句继续执行。<表达式>:将其值返回给调用程序:不管是谁调用它的,都直接返回主程序>:强制返回到指定程序1.子程序的调用子程序和程序一样,也是一个程序文件(扩展名.PRG),调用语句即是运行程序的语句。方法是:在调用程序需要调用的地方使用DO<子程序名>[WITH<参数表>]说明:WITH<参数表>可以在调用子程序时,把当前程序的一些参数传递到被调用的子程序中去。子程序可以嵌套调用,但不得超过128层。21……DOA…………主程序……DOB1…………DOB2……RETURN子程序A……R
4、ETURN子程序B1……RETURNTOMASTER子程序B23.例1:计算S=5!+6!+7!+8!算法:在求和的过程中,多次需要计算一个数的阶乘,即N!,所以可以把N!编写成子程序JC.PRG需要求某数的阶乘的时候调用JC.PRG就可以了。方法:同以前编写程序一样,建立一个供主程序调用的子程序JC.PRG,功能是实现求一个数的阶乘,编写完之后保存下来。再编写一个主程序(S.PRG),主程序中如果需要计算某个数的阶乘时,直接调用JC.PRG即可。子程序:I=1DOWHILEI<=JY=Y*II=I+1ENDDORETURN主程序:SETTALKOFFCLEARS=0FO
5、RJ=5TO8Y=1DOJCS=S+YENDFOR?’S=’,SSETTALKONCANCELY=J!21例2根据表XSDA.DBF编写一个简单的菜单程序MAIN.PRG,完成对表文件查询程序SUB1.PRG和删除程序SUB2.PRG的调用。功能介绍:CLEAACCEPT‘输入待查询姓名’TOXMSCANFOR姓名=XMDISPENDSCANRETURN查询子程序SUB1.PRG算法:SETTALKOFFUSEXSDADOWHILE.T.CLEARTEXT1.查询2.删除3.退出ENDTEXTACCEPT‘输入选择号(1~3)’TOgnIFgn=’3’EXITELSEDO
6、SUB&gnENDIFENDDOUSECANCEL主程序MAIN.PRGCLEAACCEPT‘输入待删除记录的学号:’TOXHSCANFOR学号=XHDELETEENDSCANPACKRETURN删除子程序SUB2.PRG214.参数传递子程序、过程或自定义函数在被调用时常常需要进行参数传递。比如:内存变量起着存储和传递的作用。内存变量的数据传递属性:1.内存变量的作用域程序分主程序和子程序,程序中的变量也有不同的级别和作用范围。即内存变量的作用域。内存变量的作用域可以分为三种:全局变量、私有变量、本地变量。(1)全局变量(公有变量)21定义后能在各级程序段中使用的变量,
7、其值可以随意调用和修改。使用前必须说明其是公有变量。说明方法:PUBLIC<内存变量表>功能:说明内存变量表中的变量或数组为全局变量,并为它们赋初值.F.例:PUBLICX,Y,S(10)说明:①全局变量一旦建立就一直有效,即使程序运行结束也不会消失。只有执行清除内存变量的命令才会释放。②命令窗口中定义的变量和系统自动隐含建立的变量也是全局变量。③子程序中使用的内存变量要想提供给上一级或其它并列模块,必须将其定义为全局变量。(1)私有变量在程序21中直接使用而由系统自动隐含建立的变量都是私有变量。它的作用域是在当前模块程序及其下级各层模块。一旦程序返回到上级模块,则自动清
8、除。一般也要先定义,在子程序中出现的没有定义的变量,默认为是私有变量。默认是私有变量,为什么还要定义?因为子程序用到的变量可能是主程序已经建立并使用过的,再次的使用会影响主程序中此变量的值。这时用PRIVATE定义其为私有的,不仅可以说明其性质,还可以隐藏主程序中可能存在的变量,使这些变量在子程序中暂时无效。举例:定义格式:PRIVATE<内存变量表>功能:声明私有变量,隐藏上层模块定义的同名变量。以使当前模块运行结束回到上层模块时,隐藏的变量自动恢复,并保持原值。PRIVATEV1V1={^2004/11/9}V2=100?
此文档下载收益归作者所有