下面这段是网上找的:
主要有四点区别:
第一,函数往往只为求一个函数值,过程一般会被设计成求若干个运算结果,完成一系列的数据处理。
第二,函数有类型,最终要将函数值传送给函数名,过程无类型,不能给过程名赋值。
第三,调用方式不同,函数的调用出现在表达式中,过程的调用是由独立的过程调用语句实现的。
第四,返回值的方法不同,函数值是通过函数名传回调用程序,过程则是通过参数将运算的结果传给调用程序。请教这四点对吗?下面是一个简单的例子:function benben(x:integer):integer;//声明函数
var //声明函数的变量z为整型
z:integer;
begin //函数的作用是判断x如果不小于0,则返回值为x+1,
//如果x小于0,则返回值为x+2
if x>=0 then z:=x+1
else z:=x+2;
//benben:=z;
Result:=z;
end;procedure douya(i:integer);
begin
if i>=0 then showmessage('x的值大于等于0')
else showmessage('x的值小于0');
end;procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
i:=benben(-10); //调用函数,把参数-10
Edit1.Text:=inttostr(i);
douya(-10);
end;
这里特别是第三点:函数的调用出现在表达式中?i:=benben(-10); //调用函数,把参数-10,这是一个语句不是表达式啊
第四点:过程没有返回值啊,那么“过程则是通过参数将运算的结果传给调用程序。”是什么意思?
主要有四点区别:
第一,函数往往只为求一个函数值,过程一般会被设计成求若干个运算结果,完成一系列的数据处理。
第二,函数有类型,最终要将函数值传送给函数名,过程无类型,不能给过程名赋值。
第三,调用方式不同,函数的调用出现在表达式中,过程的调用是由独立的过程调用语句实现的。
第四,返回值的方法不同,函数值是通过函数名传回调用程序,过程则是通过参数将运算的结果传给调用程序。请教这四点对吗?下面是一个简单的例子:function benben(x:integer):integer;//声明函数
var //声明函数的变量z为整型
z:integer;
begin //函数的作用是判断x如果不小于0,则返回值为x+1,
//如果x小于0,则返回值为x+2
if x>=0 then z:=x+1
else z:=x+2;
//benben:=z;
Result:=z;
end;procedure douya(i:integer);
begin
if i>=0 then showmessage('x的值大于等于0')
else showmessage('x的值小于0');
end;procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
i:=benben(-10); //调用函数,把参数-10
Edit1.Text:=inttostr(i);
douya(-10);
end;
这里特别是第三点:函数的调用出现在表达式中?i:=benben(-10); //调用函数,把参数-10,这是一个语句不是表达式啊
第四点:过程没有返回值啊,那么“过程则是通过参数将运算的结果传给调用程序。”是什么意思?
函数和过程最大的区别是函数有返回值。
上面的4点概念,只是常用的习惯上的区别。第4点,指的是,把参数做为形参传递进过程,过程中改变其值。
过程中的参数可以设为var从而将结果传出。
procedure setvalue(value:integer);
var
a:integer;
begin
a:=value;
end;函数有返回值,如
function GetValue:integer;
begin
result:=3;
end;
i:=benben(-10) 是个表达式 也是个语句.
应该说 函数可能出现在表达式中 而过程不可能出现在表达式中问题2:
函数值是通过函数名传回调用程序,过程则是通过参数将运算的结果传给调用程序。
函数名实际上是一个指针,通过这个指针来返回结果
而过程只能通过参数来返回,一个明显的现象就是, 你有见过过程名出现在表达式的右边吗?
没有吧 因为过程只能通过参数(Result)来返回结果.
也就是说 如果有返回值的一定得用函数function 没返回值的得用过程procedure
第一,声明的语法形式不一样,函数以function为关键字,过程以procedure为关键字进行声明。
第二,调用方式不同,函数的调用一般出现在表达式中,过程的调用不能出现在表达式中,是由独立的过程调用语句实现的。
第三,函数有返回值,过程无返回值。