VFP程序设计VFP程序
设计-子程序过程函数
主讲:杜春敏
[问题
问题] 问题
如果程序中需要多次使用相同或相似的代码段, 如果程序中需要多次使用相同或相似的代码段,有没有更好 的方法来解决? 的方法来解决?
S=0 I=1 一个循环,两次调用 Do while I<=100 s= s+I I=I+1 Enddo I=1 Do while I<=200 s= s+I 并列的两个循环 I=I+1 Enddo Do sum with 100 Do sum with 200 S=0 I=1
题目: 题目: 计算1 100的和 计算1-100的和 加上1-200的和 加上1 200的和
*sum.prg Para t I=1 Do while I<=t s= s+I I=I+1 Enddo
2
1
2
[一段代码,两次调用] 一段代码,两次调用 一段代码 [两段代码 两段代码] 两段代码
3
子程序、 子程序、过程和自定义函数 为了提高程序的通用性,常采用模块化 模块化 的程序设计方法。一个结构上相对独立的 相对独立的 程序段就是一个模块,这种模块可以是: 程序段 子程序、过程或 子程序、过程或自定义函数。 他们在命名方式 存储方法 参数传递 命名方式、存储方法 命名方式 存储方法和参数传递 上略有不同。
4
子程序、 子程序、过程和自定义函数
一、子程序 子程序是一个相对独立的程序段。 子程序是一个相对独立的程序段。子程序总 是被其他程序调用,一般不单独执行。 是被其他程序调用,一般不单独执行。
一)建立和修改 用MODI COMM命令 命令 例如: 例如:MODI COMM SUM.PRG MODI COMM TJ
5
子程序、 子程序、过程和自定义函数
调用、 二)调用、返回 调用 1.调用子程序 调用子程序 DO <子程序文件名 [WITH 参数表 子程序文件名> 参数表] 子程序文件名 例如: 例如:DO SUM WITH 100,200 DO TJ 2. 返回 RETURN [TO MASTER] 从子程序返回上一级子程序. 从子程序返回上一级子程序 TO MASTER选项 则返回主控程序. 选项,则返回主控程序 选项 则返回主控程序
6
例:计算 3!+4!+5! ! ! !
SET TALK OFF X=3 F=1 DO FACT C=F X=4 F=1 DO FACT C=C+F X=5 F=1 DO FACT C=C+F ? ‘C=’,C SET TALK ON Y=1 DO WHILE Y<=X F=F*Y Y=Y+1 ENDDO RETURN
子程序FACT.PRG 子程序
实际操作: 实际操作: 运行: 运行:DO JS
7
主程序JS.PRG 主程序
写出程序运行结果. 例:写出程序运行结果 写出程序运行结果 set talk off store 2 to x1,x2,x3 x1=x1+1 do z1 ?x1+x2+2*x3 ZZ.PRG Z1.PRG Z2.PRG X2=x2+1 do z2 ?x1+x2+x3 x3=x3+1 return to; master
?思考:如果将RETURN TO 思考: 思考 MASTER改成RETURN,结果 如何? 8
例:求三角形面积。 求三角形面积。
SET TALK OFF S=0 INPUT ‘请输入三角形的一边:’ TO 请输入三角形的一边: 请输入三角形的一边 A INPUT ‘请输入三角形的一边:’ TO 请输入三角形的一边: 请输入三角形的一边 B INPUT ‘请输入三角形的一边:’ TO 请输入三角形的一边: 请输入三角形的一边 C
PARA x,y,z DO JS WITH A,B,C ?S T=(x+y+z)/2
主程序SAN.PRG 主程序
S=SQRT(T*(T-x)*(T-y)*(T-z))
实际操作: 实际操作: 运行: 运行:DO san
子程序js.prg 子
程序 9
三.过程及过程文件 过程及过程文件
过程是子程序的另一种形式。所不同的是, 子程序是独立程序 独立程序,而过程是过程文件的组 独立程序 过程文件的组 成部分,可以把多个过程包含在一个文件当 成部分 中。这样,当过程文件打开时,它所包含的多 个程序也同时调入内存,这样提高了程序 运行速度。 注:命令文件和过程文件可以并存,但一次 只能打开一个过程文件。
10
子程序 过程 子程序文件 过程
程序
过程
过程
过程
过程文件
复杂的过程文件
11
过程及过程文件-建立 三.过程及过程文件 建立 过程及过程文件
一)建立 建立 1.方法:用MODI COMM命令 方法: 命令. 方法 命令 例如: 例如 modi comm general 2.过程的结构 过程的结构: 过程的结构 PROCEDURE <过程名> 过程名> <过程体 过程体> 过程体 RETURN [TO MASTER/TO <过程名 过程名>] 过程名 或Endproc
例如: 例如: procedure jia para x,y,s s=x+y endproc
12
过程文件可以由多个过程构成: 过程文件可以由多个过程构