第二章 delphi面向对象的编程方法(三)

第二章 delphi面向对象的编程方法(三)

ID:17754287

大小:45.00 KB

页数:18页

时间:2018-09-05

第二章 delphi面向对象的编程方法(三)_第1页
第二章 delphi面向对象的编程方法(三)_第2页
第二章 delphi面向对象的编程方法(三)_第3页
第二章 delphi面向对象的编程方法(三)_第4页
第二章 delphi面向对象的编程方法(三)_第5页
资源描述:

《第二章 delphi面向对象的编程方法(三)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第二章Delphi面向对象的编程方法(三)2.1.8.4过程和函数的语句部分 过程或函数的语句部分由begin开始,end结束。函数需要一个返回值。可以将返回值赋给函数名称,也可以将返回值赋给Result变量。下面的例程将返回值赋给函数名称: functionCalculateInterest(Principal,InterestRate:Double):Double;beginCalculateInterest:=Principal*InterestRate;end; 将返回值赋给Result变量也是可以的,则上面的程序改为: Result:=Principal*Interes

2、tRate;下面是这个函数的调用方法:InterestEarned:=CalculateInterest(2000,0.012);在Implementation后面的过程和函数,可以且只能被此库单元的事件处理过程使用。要让过程和函数可以被其他的程序库单元使用,则需要将过程或函数的标题部分放在库单元中的interface部分,而把含标题的整个过程或函数放在库单元的inplementation部分,并在要访问这个过程或函数的库单元的uses子句中加入说明这个过程或函数的库单元名称。 2.1.8.5函数的递归调用 在ObjectPascal中,过程或函数必须先说明再调用。上文的NoVa

3、lue函数必须在使用它的事件处理过程之前说明和执行,否则程序会报告一个未知标识符的错误。以上规则在递归调用时是例外情况。所谓递归调用,是指函数A调用函数B,而函数B又调用函数A的情况。在递归调用中,函数要进行前置,即在函数或过程的标题部分最后加上保留字forword。下文的例程是一个递归调用的典型例子: …implementationvaralpha:Integer;procedureTest2(varA:Integer):forword;{Test2被说明为前置过程}procedureTest1(varA:Integer);beginA:=A-1;ifA>0thentest2(

4、A);{经前置说明,调用未执行的过程Test2}writeln(A);end;procedureTest2(varA:Integer);{经前置说明的Test2的执行部分}beginA:=Adiv2;ifA>0rhentest1(A);{在Test2中调用已执行的过程Test1}end; procedureTForm1.Button1Click(Sender:TObject);beginAlpha:=15;{给Alpha赋初值}Test1(Alpha);{第一次调用Test1,递归开始}end; 按钮的OnClick事件处理过程给Alpha赋初值,并实现先减1再除2的循环递归调用

5、,直到Alpha小于0为止。 2.1.8.6过程和函数的参数 当您的程序代码在调用一个过程或函数时,通常用参数传递数据到被调用的过程或函数中。最常用的参数有数值参数、变量参数和常量参数三种。由被调用过程或函数定义的参数为形参,而由调用过程或函数指明的参数叫实参。在NoValue函数中,说明函数体中的AnEditBox是形参,而调用时在ifNoValue(Edit1)…中,Edit1是实参。数值参数在运行过程中只改变其形参的值,不改变其实参的值,即参数的值不能传递到过程的外面。试看下面的例程: procedureCalculate(CalNo:Integer);beginCalNo

6、:=CalNo*10;end; 用以下例程调用Calculate函数:…Number:=StrToInt(Edit1.Text);Calculate(Number);Edit2.Text:=IntToStr(Number);… Number接受由编辑框1输入的数值,经Calculate过程运算。它是一个数值型实参。在进入Calculate函数后,会把Number实参拷贝给形参CalNo,在过程中CalNo增大十倍,但并未传递出来,因此Number值并未改变,在编辑框2中显示仍然是编辑框1中的输入值。形参和实参占用不同的内存地址,在过程或函数被调用时,将实参的值复制到形参占用的内存

7、中。因此出了过程或函数后,形参和实参的数值是不同的,但实参的值并不发生变化。如果您想改变传入的参数值,就需要使用变量参数,即在被调用程序的参数表中的形参前加上保留字var。例如: procedureCalculate(varCalNo:Integer); 则CalNo并不在内存中占据一个位置,而是指向实参Number。当一个变参被传递时,任何对形参所作的改变会反映到实参中。这是因为两个参数指向同一个地址。将上一个例程中过程头的形参CalNo前面加上var,再以同样的程序调用它,则

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。