2105.4.10 星期五
教学内容:过程设计,参数传递
教学目的:掌握综合程序的设计及调用,以及各段程序之间的参数传递
教学重点:参数传递
教学难点:变量的作用域
教学时间:5课时
教学过程:
一、复习导入
上几节课,我们学习了子程序的设计、调用,以及调用过程中的变量作用域。并举例说明了全局变量、局部变量和私有变量的属性和作用。上星期五的课,开运动会耽误了一天。今天,我们就学习过程文件、过程调用、参数传递的问题。
二、新授
1)过程文件与过程
过程文件:将多个子程序写到一个文件中(减少系统资源的占用,提高工作效率),扩展文件名默认.prg。
过程文件中的‘子程序’有了一个名字叫‘过程’,并不是简单的把子程序罗列到一个文件中,而有固定的标志,以procedure开始,以endprocedure结束。
2)过程文件的打开与关闭
a.一次打开多个过程文件
set procedure to 过程文件1,过程文件2,过程文件.....
b.一次打开一个过程文件
set procedure to 过程文件
这样打一个过程文件,自动关闭原来已经打开的过程文件
c.一次打开一个过程文件,不关闭原来的过程文件
set procedure to 过程文件 additive
d.一次关闭所有已经打开的过程文件
set procedure to
e.一次只关闭指定的一个过程文件
set procedure to 过程文件名
注意:过程文件一经打开,直到下命令关闭前,都是打开的,可以直接调用。注意的是在调用过程文件中的过程之前,要打开过程文件,否则找不到调用的‘过程’。
3)过程的调用,和子程序的调用一样
4)带参数的调用
带参数的意义就在于调用程序的同时,把程序需要的信息传递过去。
参数的种类:
a.实际参数(do 程序名 with x1,x2,x3)其中的x1,x2,x3为实际参数,简称:实参
b.形式参数(被调用程序的首句为 parameters a1,a2,a3)其中的a1,a2,a3为形式参数,简称:形参
c.实参与形参要求个数一一对应,数据类型一一对应,否则报错
参数传递方式的种类:
a.地址传递
当实际参数以‘变量’的形式(如:do x2 with x)其中,实际参数为变量x,则x为地址传递。
b.值传递(分为三种形式)
常量:do x2 with 10
变量:do x2 with (x)
表达式:do x2 with x+0
异同:
都可以把数据传递给被调用的子程序或者过程。
但被调用的子程序或者过程对主程序的影响却是不一样的。其中地址传递中对‘形参’的改变,就是对实参的改变,即在被调用的子程序或者过程中改变了形参,则子程序或者过程返回时,对应实参的(变量)值已经发生改变。如果是‘值’传递,没有这种影响,即主程序中的相应的数据不发生改变。
三、练习
1.下载v68_4.prg的过程文件,分析里边的代码,然后按2中的命令列表执行,分析其中的情况
PROCEDURE jiecheng
PARAMETERS x,y
s=1
FOR i=1 to x
s=s*i
ENDFOR
y=s
? y
RETURN
ENDPROC
FUNCTION jc
PARAMETERS x
s=1
FOR i=1 to x
s=s*i
ENDFOR
RETURN s
ENDPROC
PROCEDURE sys
x=1
y=2
=f(x,y)
?x,y
DO f with x,y
? x,y
ENDPROC
FUNCTION f(fx,fy)
fx=10
fy=20
RETURN
ENDFUNC
2.命令列表
? jiecheng(5) 直接调用过程中的指定过程
SET PROCEDURE TO v68_4 发现上边的命令不能正常调用,因为过程处于关闭状态,先打开
? jiecheng(5) 显示5 的阶乘,120
? jiecheng(10) 显示10的阶乘,3628800
? jiecheng(10)+jiecheng(15)+jiecheng(20)+jiecheng(25) 显示10!+15!+20!+25!
? jc(2) 自定义函数的调用,显示2的阶乘,2
? jc(5) 自定义函数的调用,显示5的阶乘,120
b=1 创建变量b,让b=1
DO jiecheng with 5,b 采用子过程调用的格式,通过变量b带回结果
DO jiecheng with 5,b
? b 显示,b的结果为120,属于正常调用
b=1 让变量b,重新为1
DO jiecheng with 5,(b) 通过使用括号的形式传递参数、调用
?b 显示,b的结果为1,说明b没有带回结果
b=1 让变量b,重新为1
DO jiecheng with 5,b+0 通过表达式的形式传递参数、调用
?b 显示,b的结果为1,说明b没有带回结果
DO sys 调用过程文件中的sys过程,sys过程中又调用了过程文件中的自定义函数,且返回值
CLEAR
SET PROCEDURE TO 关闭过程文件
b=0
DO jiecheng in v68_4 with 5,b 关闭过程文件后,在命令中含有in <过程文件名>,也能正常调用
? b 显示,b的结果120
SET PROCEDURE TO v68_4
b=0
? jiecheng(5,b) 通过函数的调用方式传递参数
? b 显示结果为0
DO jiecheng in v68_4 with 5,b
? b 显示结果为120
四、总结
1.过程文件、过程的区别
2.过程文件打开、关闭
3.过程文件中的过程调用
4.子过程的两种调用方式(子程序、自定义函数)
5.过程传递参数的区别(程序do with 、函数 fx(x,y)的形式)
五、作业
|