首页 Delphi教程—过程与函数

Delphi教程—过程与函数

举报
开通vip

Delphi教程—过程与函数Delphi教程第4章过程与函数  一个比较大的程序可以被划分成若干个模块,每个模块完成一个或几个功能,每个功能可以用一个程序段来实现,这个程序段被称为“子程序”。在Delphi中,过程(Procedure)指没有返回值的“子程序”,而函数(Function)是有返回值的“子程序”。4.1过程  运行结束后没有返回值的子程序称为过程。在Delphi7中有三种类型的过程:即标准过程、事件过程和自定义过程。  其中标准过程和自定义过程又可以称为通用过程。即这两种过程可以独立于事件,被任何过程或函数调用。4.1.1标准过...

Delphi教程—过程与函数
Delphi教程第4章过程与函数  一个比较大的程序可以被划分成若干个模块,每个模块完成一个或几个功能,每个功能可以用一个程序段来实现,这个程序段被称为“子程序”。在Delphi中,过程(Procedure)指没有返回值的“子程序”,而函数(Function)是有返回值的“子程序”。4.1过程  运行结束后没有返回值的子程序称为过程。在Delphi7中有三种类型的过程:即标准过程、事件过程和自定义过程。  其中标准过程和自定义过程又可以称为通用过程。即这两种过程可以独立于事件,被任何过程或函数调用。4.1.1标准过程 标准过程是系统内部已经定义好的过程,不需要编写代码,也不能改变过程的名称和参数。标准过程的调用非常简单,在需要调用的位置直接书写该过程即可。4.1.2事件过程  当对象接受到某个动作时,Windows会 通知 关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知 Delphi产生一个事件(鼠标单击事件),而Delphi会自动执行该对象与该事件有关的一段程序,这就是该对象的一个事件过程。1.事件过程的创建  在窗体上(或在对象监视器中)选中该对象,然后在对象监视器的事件(Event)选项卡中选择相应的事件名,用鼠标双击其右侧的下拉列表框,Delphi将自动产生一个默认的事件过程框架,执行该事件的代码需要添加在框架内。Delphi产生的默认事件过程的名称遵循下面的命名原则:控件名称加上事件类型名(无On)。2.事件过程调用  已经创建完成的事件过程可以被其他事件过程调用。4.1.3自定义过程   一般自定义过程定义在单元的implementation部分的中{$R*.dfm}后面。1.自定义过程声明自定义过程的一般声明格式如下:procedure<过程名>[(<形参表>)];[局部声明]begin[<过程语句序列>]end;  过程的声明必须以procedure开始,包括过程名,形参表,局部声明部分和以begin开始end结束的过程语句序列。  第一行必须以“;”分号结束,是过程首部。其余部分为过程的实现部分,必须包括一个begin-end结构。End后面也必须以“;”分号结束,表示过程结束。<形参表>过程参数的一般书写形式为:([Var|Const]<参数名>:<类型>)  Var和Const为系统的保留字,Var表示参数传递方式为地址传递,即形参值的改变将反映到实参中。Const表示在过程内部不能改变形参的值。不带这两个参数的形参传递方式为值传递,即过程内部对形参值的改变将不会反映到实参中。过程的定义可以有类似下面的两种形式:procedureGetSum(V1,V2:Integer;varSum:Int64);procedureProcNoPara;2.自定义过程的创建和使用  一般可以创建两种自定义过程。一种是仅能本单元中使用,对其他的单元文件该过程不可见;另外一种就是还可以在其他单元中使用的公共过程。要创建能在其他单元中使用的过程,必须将过程首部声明在单元的公共接口部分(Interface)中。如果是仅在本单元内部使用的自定义过程,则必须先创建才能被使用。4.2函数  函数是有返回值的子程序,一般通过函数名或一个系统预定义的隐含变量Result返回函数的值。在Delphi中有两种函数,内部函数和自定义函数。4.2.1标准函数  标准函数是系统内部已经定义好的函数。不能改变标准函数的参数以及返回值类型。其定义形式如下:  functionStrToInt(constS:string):Integer;  表明该函数接受一个常量参数,并返回一个整型值。4.2.2自定义函数1.函数的定义 一般的语法格式为:Function<函数名>[(<形参表>)]:返回类型;[局部声明]Begin[<语句序列>]End;  自定义函数含有一个以Function开始的函数首部,包括函数名,函数的形参表和函数的返回值类型以及返回值类型前面的“:”冒号和后面的“;”分号。一个函数可以没有形参表,但必须有函数返回值类型,同样也可以 没有局部声明,但必须有一个实现函数功能的函数体,以Begin开始,End结束。在End后也必须有一个“;”分号表示函数体的结束。2.自定义函数的创建和使用  对于仅在本过程内部使用的函数,必须遵循先创建在使用的原则。如果想让一个函数对其他的单元也是可见的,则必须将函数首部定义在单元的接口部分。则函数功能的实现和调用之间的位置就不必遵循先创建再使用的 规则 编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf 。同样也需要使用一个与函数的返回值类型相同的变量来接受函数的返回值。4.3内部过程和函数  内部函数和过程是指定义在一个过程和函数内部,只能由该过程和函数使用的函数和过程,内部程序又称为程序嵌套。1.嵌套层次为了准确地表达嵌套层次,通常将嵌套从外向内进行编号,并把相应子程序的层号称为子程序的嵌套深度。一般单元文件为0层,其中的子程序从外向内依次为1层、2层、3层、…。Unit0层A11层A22层A33层图4-3嵌套层次关系图运行界面图 有嵌套关系的子程序,若层号相差为1,称为相邻层,并称层号小的为外层子程序,层号大的为内层子程序;若层号相差大于1,则称为隔层。子程序的嵌套要求外层子程序能够完全包含内层子程序,不允许局部包含,即不允许交叉。2.子程序的调用规则 Delphi中,子程序调用必须遵循如下规则:(1)子程序可以调用其相邻内层的子程序,不能隔层调用。如图4-4所示,A1可以调用A1B和A1C但不能调用A3。(2)内层子程序可以调用外层的子程序而且允许隔层调用。如A2B可以调用A2,A3调用A1(3)同一层的子程序,允许后定义的子程序调用先定义的子程序,如A2C可以调用A2B但是A2B不可以调用A2C。(4)如果需要调用同层中后定义的子程序,必须用保留字forward(超前引用)对后面的子程序提前说明。Unit0层A11层A1B2层A33层图4-4子程序的调用规则A1C2层A21层A2B2层A2C2层4.4参数的传递4.4.1形式参数与实际参数  形式参数是指出现在过程或者函数首部“形参表”中的变量名,表示用于接收数据的变量。实际参数是指在调用过程或是函数时,传递给过程或函数的常量、变量或表达式。  在过程或是函数的定义中,使用形式参数来确定该过程或函数所需要的参数的个数、类型以及参数之间的次序。在调用该过程或是函数时,实际参数将替换形式参数,形参和实参之间的对应关系为:第一个形参接受第一个实参的值,第二个形参接受第二个实参的值,依次类推。4.4.2参数的传递方式  在Delphi中,有两种参数的传递方式,“按值传递”和“按地址传递”。在过程或者函数的首部“〈形参表〉”中的参数前面使用系统的保留字Var或者Out的形参变量表示为“按地址传递”,使用Const或没有任何保留字的形式参数,将使用“按值传递”的方式。  声明为“按值传递”的参数仅负责得到实际参数的值,不保留内部对该参数的改变,而声明为“按地址传递”的参数将保留函数或过程内部对实际参数值的改变,并在调用结束后返回该值。  “按地址传递”的参数实参和形参的类型必须一致,而“按值传递”的实参和形参之间仅需要赋值相容即可。4.4.3使用缺省参数  在声明函数或过程中,可以给形参指定一个缺省的值,在调用时,如果没有给形参指定实参,则系统自动使用缺省的值,如果赋值,则使用实际参数的值。缺省参数声明的方法是在形参的类型后面使用“=”等号,并给出具体的常量值。  但是需要注意的是,如果后面的参数没有使用缺省参数,不允许仅对前面的参数使用缺省参数。4.4.4赋值兼容与调用约定  赋值兼容是指变量可以进行赋值或进行参数传递。当两个类型要进行赋值操作而又不满足赋值兼容时,将产生编译错误。  ObjectPascal提供了五种过程和函数的调用方式,分别为Register,Pascal,Cdecl,Stdcall,SafeCall。缺省的调用方式是Register方式。Register和Pascal调用方式传递参数是从左到右,而Cdecl,Stdcall和Safecall调用方式传递参数则是从右到左。Register调用方式自动清除调用所使用的堆栈和寄存器,负责处理调用错误,同时也是速度最快的调用方式。4.5变量的作用域 变量的作用域是指变量可以被识别的范围。4.5.1公有变量和私有变量一般Delphi的单元具有下面的结构unit单元名//单元首部interface//单元接口部分implementation//单元实现部分end.//单元结束  在单元的接口部分(Interface)声明的变量属于公有变量,不仅可以被本单元中的所有过程和函数使用,同时还可以被其他单元中的过程和函数使用。在单元的实现部分后 声明的变量属于私有变量,不能被其他单元使用。4.5.2全局变量和局部变量  局部变量是指在过程或函数的内部声明的变量;而定义在单元的实现部分的变量,对整个单元内部的过程和函数都是有效的,是全局变量。公有变量也是全局变量。当全局变量和局部变量的名称相同时,在过程和函数的内部,使用的是局部变量的值。4.5.3变量的存储方式  从空间上来讲,全局变量的作用范围是整个程序,局部变量仅在本程序段内部有效。  从变量的存储时间上来看,全局变量是静态存储,局部变量是动态存储。所谓的静态存储是变量在程序运行期间一直占有固定的存储空间,直到整个程序结束变量所占用的空间才释放。而动态存储则是程序在运行期间根据需要动态的分配存储空间,子程序一旦结束,变量所占有的存储空间立即释放。  一般内存中供程序使用的区域可以分为三个部分,程序区,静态存储区和动态存储区。在动态存储区中存放的数据有:函数或过程的形式参数,函数和过程内部声明的局部变量以及函数和过程调用时的现场保护和返回地址等。谢谢大家!
本文档为【Delphi教程—过程与函数】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
都绘匠人
国家注册城乡规划师,资深工程师,具备城乡规划领域多年从业经历
格式:ppt
大小:360KB
软件:PowerPoint
页数:21
分类:理学
上传时间:2022-04-22
浏览量:0