pascal语言中的过程与函数

pascal语言中的过程与函数

ID:12179228

大小:142.50 KB

页数:16页

时间:2018-07-16

pascal语言中的过程与函数_第1页
pascal语言中的过程与函数_第2页
pascal语言中的过程与函数_第3页
pascal语言中的过程与函数_第4页
pascal语言中的过程与函数_第5页
资源描述:

《pascal语言中的过程与函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Pascal过程与函数Pascal中的例程有两种形式:过程和函数。理论上说,过程是你要求计算机执行的操作,函数是能返回值的计算。两者突出的不同点在于:函数能返回计算结果,即有一个返回值,而过程没有。两种类型的例程都可以带多个给定类型的参数。不过实际上函数和过程差别不大,因为你可以调用函数完成一系列操作,跳过其返回值(用可选的出错代码或类似的东西代替返回值);也可以通过过程的参数传递计算结果(这种参数称为引用,下一部分会讲到)。下例定义了一个过程、两个函数,两个函数的语法略有不同,结果是完全相同的。procedureHello;beginShowMessage('Hello

2、world!');end;functionDouble(Value:Integer):Integer;beginDouble:=Value*2;end;//or,asanalternativefunctionDouble2(Value:Integer):Integer;beginResult:=Value*2;end;流行的做法是用Result给函数赋返回值,而不是用函数名,我认为这样的代码更易读。一旦定义了这些例程,你就可以多次调用,其中调用过程可执行操作;调用函数能计算返回值。如下:procedureTForm1.Button1Click(Sender:TObject

3、);beginHello;end;procedureTForm1.Button2Click(Sender:TObject);varX,Y:Integer;beginX:=Double(StrToInt(Edit1.Text));Y:=Double(X);ShowMessage(IntToStr(Y));end;注意:现在不必考虑上面两个过程的语法,实际上它们是方法。只要把两个按钮(button)放到一个Delphi窗体上,在设计阶段单击它们,DelphiIDE将产生合适的支持代码,你只需要填上begin和end之间的那几行代码就行。编译上面的代码,需要你在窗体中加一个Ed

4、it控件。现在回到我前面提到过的代码封装概念。当你调用Double函数时,你不需要知道该函数的具体实现方法。如果以后发现了更好的双倍数计算方法,你只需要改变函数的代码,而调用函数的代码不必改变(尽管代码执行速度可能会加快!)。Hello过程也一样,你可以通过改变这个过程的代码,修改程序的输出,Button2Click方法会自动改变显示结果。下面是改变后的代码:procedureHello;beginMessageDlg('Helloworld!',mtInformation,[mbOK]);end;提示:当调用一个现有的Delphi函数、过程或任何VCL方法时,你应该记住

5、参数的个数及其数据类型。不过,只要键入函数或过程名及左括号,Delphi编辑器中会出现即时提示条,列出函数或过程的参数表供参考。这一特性被称为代码参数(CodeParameters),是代码识别技术的一部分。引用参数Pascal例程的传递参数可以是值参也可以是引用参数。值参传递是缺省的参数传递方式:即将值参的拷贝压入栈中,例程使用、操纵的是栈中的拷贝值,不是原始值。当通过引用传递参数时,没有按正常方式把参数值的拷贝压栈(避免拷贝值压栈一般能加快程序执行速度),而是直接引用参数原始值,例程中的代码也同样访问原始值,这样就能在过程或函数中改变参数的值。引用参数用关键字var标

6、示。参数引用技术在大多数编程语言中都有,C语言中虽没有,但C++中引入了该技术。在C++中,用符号&表示引用;在VB中,没有ByVal标示的参数都为引用。下面是利用引用传递参数的例子,引用参数用var关键字标示:procedureDoubleTheValue(varValue:Integer);beginValue:=Value*2;end;在这种情况下,参数既把一个值传递给过程,又把新值返回给调用过程的代码。当你执行完以下代码时:varX:Integer;beginX:=10;DoubleTheValue(X);x变量的值变成了20,因为过程通过引用访问了X的原始存储单

7、元,由此改变了X的初始值。通过引用传递参数对有序类型、传统字符串类型及大型记录类型才有意义。实际上Delphi总是通过值来传递对象,因为Delphi对象本身就是引用。因此通过引用传递对象就没什么意义(除了极特殊的情况),因为这样相当于传递一个引用到另一个引用。Delphi长字符串的情况略有不同,长字符串看起来象引用,但是如果你改变了该字符串的串变量,那么这个串在更新前将被拷贝下来。作为值参被传递的长字符串只在内存使用和操作速度方面才象引用,但是如果你改变了字符串的值,初始值将不受影响。相反,如果通过引用传递长字符串,那么串的初

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

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

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