过程与函数
过程(procedure) and 函数(function)———-实现面向对象的重要手段
通用过程的定义
Procedure<过程名>[(<形参表>)];
[局部声明];
begin
<语句序列>;
end;
<形参表>的格式为:
[Const|Var]<形参名>:类型
1)保留字Procedure是定义通用过程的首部,’过程名’要遵循规则
2)<形参表>同类型逗号隔开,不同类型分号。无形参,可省略括号
3)局部声明可以:常量、变量、类型
4)程序开始begin,end结尾带分号
通用过程的调用
调用格式:
过程名(参数表);
1)参数表中个数、类型、顺序一致
2)如果形参用前冠var,对应实参必须是变量,否则同类型表达式就好
函数:和过程一样,函数也是子程序的一种形式。区别:函数有返回,过程没有
函数定义格式:
Function<函数名>[(形参表1)]:<函数返回类型>;
[局部声明];
begin
<语句序列>;
end
<形参表>个格式:
[Const|Var]<形参名>:类型
- 1
函数体中不给函数名赋值,函数返回默认值(数值)0、(布尔)false、(字符)空字符
参数传递:
变量参数:参数前冠var,表示可变参数。
传递方式:地址传递。参数值改变影响实际参数值。
例,(console Application中测试)
//这是一个简单的过程
procedure ce(a:integer;var b:integer);
begin
b:=a;
end;
//测试主体
var
result:integer;
begin
ce(1,result)
write(inttostr(result));
//传入1和result,把结果转化为int型,输出
readln;
end;
如果,b不是var前冠,结果为2130567168
值参数和常量参数
参数前冠const:常量参数,无var也无const就是值参数
值参数:传递过程不是一个存储单元(地址),形参改变不会影响实参
常量参数:是否实参,结果不变
默认参数:在定义的时候给值
例,(过程)
procedure <方法名>(xm:string;xb:widestring='男';mz:string='汉族');
- 1
139页
子程序的嵌套与递归
1)在子程序(函数或过程中)定义了另外的子程序(function or procedure),称为(function or procedure)的嵌套。
2)子程序(function or procedure)直接或间接调用自己。有分直接和间接递归
变量的作用域
公有变量:
单元接口 interface决定了本单元哪些变量是公有的。
一个单元需要用如(DMata),只需在uses中引入该单元
私有变量:
在私有部分声明,只能被本单元使用
局部变量:(多用)
只能在该子程序中有效
全局变量:(少用全局,防止全局变量副作用)
需要多个子程序之间交换数据,则可以通过全局变量