




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第七章程序设计基础过程过程 将需要重复调用的语句序列定义为过程。需要执行时只要调用它即可。根据过程相对于当前程序的存储的方式,把过程分为外部过程和内部过程两大类。外部过程是存放在外存储器中的一个独立的程序文件,整个程序文件就是一个过程。外部过程文件通常称为子程序,调用外部过程通常称为调用子程序。调用外部过程时,先把外部过程文件读入内存,然后运行之,所以调用外部过程的速度相对较慢。内部过程是包含在程序中,或者集中存放在一个过程文件中。当打开程序文件和过程文件时,过程就读入了内存。调用内部过程不必读盘,所以调用内部过程的速度相对较快。过程的分类过程的分类1定义外部过程命令格式: PARAMETER
2、S RETURN TO MASTER 功能:将一个程序文件定义为一个过程,程序文件名就是过程名。说明:1)若选用PARAMETERS ,则为有参过程;否则为无参过程。2)程序的结束不一定需要返回语句RETURN,但过程调用的结束一定要有返回语句RETURN,否则过程调用后无法返回调点。过程的定义过程的定义3)选用RETURN与RETURN TO MASTER 的区别见图728所示。 图图728 RETURN与与RETURN TO MASTER的区别的区别 2定义内部过程命令格式:PROCEDURE PARAMETERS RETURN TO MASTERENDPROC功能:将一个语句系列定义为以
3、为名称的过程。说明:由于一个过程文件中可能包含多个过程,所以要用过程起始句PROCEDURE 3过程文件(1)过程文件也是.prg文件,其中包含若干个过程。(注意:过程文件过程)(2)过程文件的建立与修改的方法和程序文件相同。(3)若要使用过程文件中的过程,则要先打开过程文件。4外部过程和内部过程的比较 程序.PRG(外部过程) 程序.PRG中的过程(内部过程) 过程文件.PRG中的过程(内部过程) 【例例723】建立一个建立一个求三角形、矩形和圆求三角形、矩形和圆的面积的过程文件。的面积的过程文件。程序内容如下:* 过程Triangle(求三角形面积)PROC Triangle INPUT
4、请输入三角形的高度: TO SH INPUT 请输入三角形的底长: TO SD S=SD*SH/2 ? 三角形的面积为:,SRETURNENDPROC* 过程Rectangle(求矩形面积)PROC Rectangle INPUT 请输入矩形的长: TO JX INPUT 请输入矩形的宽: TO JY S=JX*JY ? 矩形的面积为:,SRETURNENDPROC * * 过程过程Round(Round(求圆的面积求圆的面积) ) PROC Round INPUT 请输圆的半径请输圆的半径: ; TO R S=3.14*R*R ? 圆的面积为:圆的面积为:,S RETURN ENDPROC1
5、调用外部过程外部过程以独立的程序文件存储在外存储器中,调用外部过程就是平常所说的调用子程序文件,需要读盘。命令格式:DO 功能:调用过程。说明:若缺省扩展名,则默认.prg;DO命令还可以运行其他文件,如查询文件(.qpr),菜单文件(.mpr)应用程序(.app) 。过程的调用过程的调用【例例724】编写一个菜单程序,有两个菜单项:编写一个菜单程序,有两个菜单项:“1.逐条显示逐条显示职工的记录职工的记录”和和“2.统计男女职工的人数统计男女职工的人数”,通过调用程序文,通过调用程序文件实现以上两个菜单项的功能。件实现以上两个菜单项的功能。程序内容如下:* 主程序CLEAR? 主菜单? =?
6、 1.逐条显示职工的记录? 2.统计男女职工的人数? =INPUT 请输入选择序号: TO NUMIF NUM=1 DO L7-13&调用程序文件ELSE DO L7-18&调用程序文件ENDIF2调用程序中的内部过程 【例725】将例724中2个独立的程序文件合并成一个程序文件,使被调用的过程成为程序文件中的内部过程,然后在程序中调用内部过程。* 主程序CLEAR? 主菜单? =? 1.逐条显示职工的记录? 2.统计男女职工的人数? =INPUT 请输入选择序号: TO NUMIF NUM=1 DO P1&调用程序文件中的过程ELSE DO P2&调用程序文件中的过程ENDIFRETURN&
7、主程序结束处要用RETURN语句,使主程序与内部过程隔断* 内部过程P1(逐条显示职工的记录)PROCEDURE P1 USE Zgjk DO WHILE !EOF() DISPLAY WAIT 按任意键显示下一条记录 SKIP ENDDO RETURNENDPROC* 内部过程P2(统计男女职工的人数)PROCEDURE P2 USE Zgjk M=0 W=0 SCAN IF 性别=男 M=M+1 ELSE W=W+1 ENDIF ENDSCAN CLEAR ? 男职工人数为:,M ? 女职工人数为:,W RETURNENDPROC 3调用过程文件中的过程 要调用过程文件中的过程,首先要打开
8、过程文件。 (1)打开过程文件 命令格式:SET PROCEDURE TO 功能:打开过程文件。 (2)关闭过程文件 过程文件使用完毕要及时关闭,以节省内存空间。 命令格式1:CLOSE PROCEDURE 命令格式2:SET PROCEDURE TO 功能:关闭过程文件。 (3)调用过程文件中的过程 命令格式:DO 功能:调用程序文件或过程文件中的过程。【例726】编写一个菜单程序,有4个菜单项:“0.退出”、“1.计算三角形的面积”、“2.计算矩形的面积”和“3.计算圆的面积”,通过调用过程文件中的过程实现以上菜单项的功能。* 计算各种面积SET PROCEDURE TO L7-23&打开
9、过程文件DO WHILE .T. CLEAR ? 计算面积 ? = ? 0.退出 ? 1.计算三角形的面积 ? 2.计算矩形的面积 ? 3.计算圆的面积 ? = INPUT 请输入选择序号: TO NUM DO CASE CASE NUM=0 EXIT CASE NUM=1 DO Triangle &调用过程文件中的过程,计算三角形的面积 CASE NUM=2 DO Rectangle &调用过程文件中的过程,计算矩形的面积 CASE NUM=3 DO Round &调用过程文件中的过程,计算圆的面积 ENDCASE WAIT 按任意键继续选择菜单ENDDOCLOSE PROCEDURE&关闭
10、过程文件程序运行结果如图730所示。 图图730 例例726的程序运行结果的程序运行结果参数传递与变量作用域 参数传递是关于调用过程与被调用过程之间的数据交换问题。在调用过程时,有时需要将数据带入被调用的过程,当过程执行结束时,有时又需要将过程执行的结果数据带回到调用程序中。实现调用程序与被调用过程之间的数据交换途径有两种:A)使用参数传递B)利用内存变量的作用域参数传递参数传递1参数传递语句参数传递语句命令格式:命令格式:DO WITH 功能:调用过程,并将实参传递给过程中的形参。功能:调用过程,并将实参传递给过程中的形参。说明:参数传递语句可以写在调用程序中的任意位置。说明:参数传递语句可
11、以写在调用程序中的任意位置。 2参数接收语句命令格式:PARAMETER 功能:在子程序或过程中定义私有的形参变量。说明:(1)参数接收语句必须是被调用过程的第一条可执行语句。(2)形参的数目不能少于实参的数目,否则将出错。如果形参的数目多于实参的数目,那么多余的形参初值取.F.。(3)实参与形参的排列顺序及数据类型要一致。(4)如果实参是常量或表达式,则将实参的值赋给形参,称作按值传递。这过程仅将实参的值传递给形参,形参值的改变不会影响实参。(5)如果实参是变量,则将实参的地址传给形参,这样实参和形参实际上是同一个变量,对形参值的修改将带回实参,称作按地址传递。【例例727】参数传递实例。设
12、已建立了参数传递实例。设已建立了3个程序文件,其内容个程序文件,其内容如下如下:* 外部过程PARA G&形参的名称不一定与实参相同? GG=Good afternoon.RETURN* 主程序文件CLEARGG=Good Morning.DO L7-27A WITH GG& GG实参变量,按地址传递? GGRETURN* 主程序文件CLEARGG=Good Morning.DO L7-27A WITH (GG) &变量GG经括号优先算符运算后成为了表达式,按值传递? GGRETURN 运行主程序文件,结果如图729所示。 图图729 主程序文件主程序文件L7-27B.prg 的运行结果的运行
13、结果运行主程序文件,结果如图运行主程序文件,结果如图730所示。所示。图图730 主程序文件主程序文件L7-27C.prg 的运行结果的运行结果变量作用域是指变量作用的有效范围。1变量作用域的含义(1)内存变量按作用域分类:全局变量、私有变量和局部变量。(2)全局变量、局部变量和私有变量的作用域示意如图733所示。 图图733 全局变量、局部变量和私有变量的作用域示意图全局变量、局部变量和私有变量的作用域示意图变量的作用域变量的作用域2作用域变量的定义(1)全局变量格式:PUBLIC 功能:定义全局内存变量(含数组)并赋予初值.F.。说明:1)全局变量要先定义后使用。2)在命令窗口中创建的内存
14、变量(含数组)为全局变量。3)全局变量一旦建立就一直有效,即使程序运行结束也不会消失。只有执行CLEAR MEMORY,RELEASE,QUIT等命令后全局变量才被释放。(2)私有变量 在程序或过程中不经PUBLIC和LOCAL说明而直接创建的变量为私有变量。私有变量也可以用PRIVATE语句定义。格式1:PRIVATE 格式2:PRIVATE ALL LIKE |EXCEPT 功能:在本模块中定义私有变量,屏蔽上层的同名变量。说明:目的是使得本模块中私有变量值的修改不会影响上层同名变量的值。 (3)局部变量 局部变量说明语句:LOCAL 说明: 1)局部变量要先定义后使用。 2)局部变量的作
15、用域仅限于建立它的本模块。 3)由于还有一个条件查找命令LOCATE,命令动词LOCAL不能缩写为前4个字符。 4)在本模块中屏蔽上层的同名变量。【例729】屏蔽内存变量的实例。 程序内容如下:* 主程序CLEARX=222&定义私有变量,作用域包括本模块及下属模块Y=999&定义私有变量,作用域包括本模块及下属模块DO P29&调用过程? 在主程序中:? X=,X&变量X的值没有被下层模块(过程29)修改,仍为222? Y=,Y&变量Y的值被下层模块(过程29)修改,输出Y=BBBRETURN &隔断主程序与过程* 过程PROCEDURE P29 &过程说明语句PRIVATE X &屏蔽上层
16、模块的私有变量X,使之在当前模块无效X=AAAY=BBB? 在子程序中:? X=,X&输出本模块中X的值,X=AAA? Y=,Y&输出本模块中Y的值,Y=BBBRETURN &子程序返回语句ENDPROC&过程结束语句程序运行结果如图735所示。 图图735 例例729的程序运行结果的程序运行结果自定义函数 1VFP函数的分类 标准函数(VFP系统内置的函数)函数 外部自定义函数(独立程序文件) 自定义函数 内部自定义函数 (在程序文件或过程文件中的函数)自定义函数与过程相似,也分为外部自定义函数和内部自定义函数。外部自定义函数是整个程序文件只包含一个自定义函数的定义语句;内部自定义函数是将自
17、定义函数的定义语句写在程序文件或过程文件中。2自定义函数的特点自定义函数的本质是一段过程代码,所以自定义函数与过程极相似,主要区别在于自定义函数用RETURN 语句,作为函数的返回值。 1外部自定义函数的定义命令格式: PARAMETERS RETURN 功能:定义一个函数,以程序文件名作为函数名,以作为函数自变量,以作为函数返回值。外部自定义函数的形式如图737所示。 图图737外部自定义函数外部自定义函数自定义函数的定义自定义函数的定义2内部自定义函数的定义命令格式:FUNCTION PARAMETERS RETURN ENDFUNC功能:在程序文件或过程文件中定义一个自定义函数,以作为函数名,以作为函数自变量,以作为函数返回值。说明:(1)若选用PARAMETERS ,则为有参函数;否则为无参函数。(2)由于一个程序文件或过程文件中可能包含其他语句或多个自定义函数,所以要用自定义函数起始句FUNCTION 指明自定义函数的名称,用自定义函数终端句ENDFUNC界定自定义函数的结束。 程序文件或过程文件中的内部自定义函数的形式如图738所示。 图图738内部自定义函数内部自定义函数 自定义函数与系统函数的调用方法相同,即按以下格式调用。命令格式:()说明:(1)虽然自定义函数是一段程序,但它是函数,不能用DO命令调用自定义函数。(2)调用无参数自定义函
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外贸英语函电全套课件
- 2023-2024学年安徽省宿州市省市示范高中高二下学期期中考试语文试题(解析版)
- 探索创新思维
- 塔城职业技术学院《预防医学(含医学统计学)》2023-2024学年第一学期期末试卷
- 武汉软件工程职业学院《外科止血包扎》2023-2024学年第一学期期末试卷
- 吉林省长春市八中2025届高三二模生物试题(文、理)试卷含解析
- 九寨沟县2025届四下数学期末质量检测试题含解析
- 江苏省淮安市淮阴师院附属中学2025届初三第一次模拟考试(1月)语文试题试卷含解析
- 宁夏大学《数字图形设计》2023-2024学年第一学期期末试卷
- 江西省安远县2025届中考物理试题模拟题及解析(江苏卷)含解析
- 2024年山西杏花村汾酒集团有限责任公司招聘笔试真题
- 湖北省武汉市2025届高中毕业生二月调研考试数学试题及答案
- 愚公移山英文 -中国故事英文版课件
- GB/T 24267-2009建筑用阻燃密封胶
- 2022年陕西省高中学业水平考试政治题(原题)
- 一带一路论文参考文献(70个范例参考),参考文献
- 销售谈判技巧课件
- 无锡鼋头渚课件
- 管道工技师理论知识题库及答案(完整版)
- JCP-200磁控溅射蒸发镀膜机 使用说明书
- 通信原理1抽样定理课件
评论
0/150
提交评论