登陆注册
16017000000013

第13章 Delphi的编程语言--ObjectPascal(3)

过程调用如下:

var

int:integer;

begin

int:=20;

sum(int);

end;

因为i是变量参数,所以过程调用后,形式参数的值已改变(由20变为20+10=30),实在参数的值也会随之改变(也为30)。

3.常数参数

在定义过程或函数时,常数参数的形参名前要加关键字const。

常数参数是将形参和实参都视为常数,其值在过程或函数运行期间不改变,也就是说,在过程或函数中,不能有改变参数值的操作。

4.6.4常用的标准函数和过程为了方便用户,Delphi中定义了许多标准的函数和过程,这里介绍一些常用的标准函数和过程。

1.数值函数

1)Abs函数

定义:functionAbs(X);

功能:返回参数X的绝对值,X可以为整数或实数类型,返回值类型与X的类型相同。

2)Sin、Cos、ArcTan函数

定义:functionSin(X:Extended):Extended;functionCos(X:Extended):Extended;functionArcTan(X:Extended):Extended;功能:分别返回参数X的正弦、余弦和反正切值。

3)Exp、Ln函数

定义:functionExp(X:Real):Real;functionLn(X:Real):Real;功能:分别返回参数X的以e为底的指数值和自然对数值。

4)Int、Frac函数

定义:functionInt(X:Extended):Extended;functionFrac(X:Extended):Extended;功能:分别返回参数X的整数部分和小数部分。

5)Sqr、Sqrt函数

定义:functionSqr(X:Extended):Extended;functionSqrt(X:Extended):Extended;功能:分别返回参数X的平方和平方根。

6)ParamCount、ParamStr函数

定义:functionParamCount:Integer;functionParamStr(Index:Integer):String;功能:ParamCount返回应用程序的参数个数。

ParamStr(Index)返回应用程序第Index个参数;而ParamStr(0)则返回应用程序的文件名和路径。

7)Random函数、Randomize过程

定义:functionRandom[(Random:Integer)];(方括号内的参数为可选项)procedureRandomize;功能:Random返回一个随机数,若无参数Random,则该随机数为大于或等于0而小于1的实数;否则随机数为大于或等于0而小于参数Random的整数。

8)SizeOf函数

定义:functionSizeOf(X);Integer;功能:返回参数X所占用的字节数。

9)Odd函数

定义:functionOdd(X:Longint):Boolean;功能:判断参数X是否为奇数,若X为奇数,则函数返回True;否则函数返回False。

10)Trunc、Round函数

定义:functionTrunc(X:Extended):Int64;functionRound(X:Extended):Int64;功能:Trunc返回参数X取整以后的值。

Round返回参数X四舍五入后的值。

11)Max、Min函数

定义:functionMax(A,B);

functionMin(A,B);

功能:分别返回两个参数A、B中的较大值和较小值,参数A、B可为整数或实数类型,返回值与参数类型相同。

2.字符串函数

1)IntToStr、StrToInt、StrToIntDef函数

定义:functionIntToStr(Value:Integer):string;

functionStrToInt(constS:string):Integer;

functionStrToIntDef(constS:string;Default:Integer):Integer;

功能:IntToStr将参数Value转化为十进制整数表示的字符串。

StrToInt将参数S转化为整数,若转化不成功,则发生异常。

StrToIntDef将参数S转化为整数,若转化不成功,则返回Default。

2)IntToHex函数

定义:functionIntToHex(Value:Integer;Digits:Integer):string;功能:将参数Value转化为十六进制数字符串,Digits指出字符串的长度,当转换成的字符串长度不足时用0在左边填充。

3)FloatToStr、StrToFloat函数

定义:functionFloatToStr(Value:Extended):string;functionStrToFloat(constS:string):Extended;功能:FloatToStr将参数Value转化为字符串。

StrToFloat将参数S转化为实数。

4)StringOfChar函数

定义:functionStringOfChar(Ch:Char;Count:Integer):string;功能:生成由Count个字符Ch组成的字符串。

5)UpCase函数

定义:functionUpCase(Ch:Char):Char;功能:若Ch为小写字母,则函数返回对应的大写字母;否则函数返回Ch。

6)UpperCase、LowerCase函数

定义:functionUpperCase(constS:string):string;functionLowerCase(constS:string):string;功能:UpperCase将参数S中的所有小写字母转换为大写字母返回。

LowerCase将参数S中的所有大写字母转换为小写字母返回。

7)Copy函数

定义:functionCopy(S;Index,Count:Integer):string;功能:将字符串参数S中从第Index个字符开始的Count个字符组成的子字符串返回。

举例:s1:=‘ABCDEFG’;

s2:=Copy(s1,3,4);从s1的第3个字符开始的4个字符组成的子字符串则s2为‘CDEF’。

8)Delete过程

定义:procedureDelete(varS:string;Index,Count:Integer);功能:删除参数S中从第Index个开始的Count个字符。

举例:s1:=‘ABCDEFG’;

Delete(s1,2,3);

则s1为‘AEFG’。

注意过程与函数用法的不同:Copy是函数,可以放在赋值语句的右边;而Delete是过程,只能单独使用。

9)Insert过程

定义:procedureInsert(Source:string;varS:string;Index:Integer):string;功能:在参数S中的第Index个字符处插入Source字符串。

10)Pos函数

定义:functionPos(Substr:string;S:string):Integer;

功能:返回子字符串Substr在S中的位置;若Substr不在S中,则返回0。

11)Length函数

定义:functionLength(S):Integer;

功能:返回字符串参数S的长度。

12)CompareStr、CompareText函数

定义:functionCompareStr(constS1,S2:string):Integer;

functionCompareText(constS1,S2:string):Integer;

功能:比较两个字符串S1和S2,若S1S2,则返回一个大于0的整数;若S1=S2,则返回0;若S1S2,则返回一个小于0的整数。这两个函数的区别是:CompareStr区分大小写,CompareText不区分大小写。

3.系统函数

1)Date函数

定义:functionDate:TDateTime;

功能:返回系统当前的日期。

2)Time函数

定义:functionTime:TDateTime;

功能:返回系统当前的时间。

3)Now函数

定义:functionNow:TDateTime;

功能:返回系统当前的日期和时间。

说明:这3个函数的返回值都是TDateTime类型,实质是一个Double类型,其整数部分表示从1899年12月30日以来所经过的天数,小数部分表示经过24小时的百分比,例如0表示1899年12月30日零点,2.5表示1900年1月1日中午12点。

4)DateToStr、TimeToStr、DateTimeToStr函数

定义:functionDateToStr(Date:TDateTime):string;

functionTimeToStr(Time:TDateTime):string;

functionDateTimeToStr(DateTime:TDateTime):string;

功能:DateToStr将日期Date转换成字符串形式。

TimeToStr将时间Time转换成字符串形式。

DateTimeToStr将日期、时间DateTime转换成字符串形式。

5)DayOfWeek函数

定义:functionDayOfWeek(Date:TDateTime):Integer;

功能:返回日期Date对应的星期几。

4.7类和对象

ObjectPascal与传统Pascal的主要区别在于增加了面向对象程序设计的特性。

面向对象的程序设计的思想是按照自然规律认识世界的必然。我们要完整地认识一个物体,不能将这个物体的性质和对这个物体的使用分割开来。同样在程序设计中,不应该将要处理的数据和处理这些数据的方法分割开来。面向对象程序设计中的对象就是将要处理的数据和处理这些数据的方法结合在一起而建立的一个实体。而这个实体是面向对象程序中一个特殊类型--“类”的一个实例。

4.7.1类的基本概念

类是用户自己创建的数据类型。

类有3个组成部分(或者说有3类成员):字段(也称域)、方法和属性。

字段是类的内部数据变量,方法是类中定义的过程和函数,属性是类提供给外部使用的数据变量,但与字段不同的是,属性还封装了读取和修改数据的方法。

对象和类的关系是变量和数据类型的关系,对象是类这种数据类型的变量。

4.7.2类的定义

如同构造数据类型一样,类也需要定义。

定义类的语法格式为:

type

类名=class(基类);

成员列表

end;

其中

1)type/end是前面定义构造数据类型用过的关键字。

2)class是定义类的关键字;圆括号中的基类是指派生本定义类的父类,若缺省则说明本定义类的基类是ObjectPascal中所有类的共同基类Tobject。

3)成员列表声明该类的所有成员,即字段、方法和属性。

4)类成员字段的声明同一般变量的声明方法一样,即“变量名:数据类型”格式。

5)类成员方法的声明同一般过程和函数的声明方法一样,即“procedure过程名(形参列表)”和“function函数名(形参列表)”格式。

6)因为属性还封装属性的读写方法,所以属性的声明不但要声明属性名和类型,还要声明属性的读写方法,其语法格式为:

property属性名:类型read字段或方法write字段或方法;其中property、read、write都是保留字。

7)为了控制对类成员的访问权限,声明类成员时可用5个关键字(也称存取说明符)定义类成员的可见性,如表4-3所示。

对类数据的访问用类方法来实现,而将类数据对外部隐蔽起来,称为类的封装。类的封装是面向对象思想的一个重要概念。

4.7.3对象的创建与删除

如前所述,对象是类的实例,因此定义了类之后,还要创建对象,如同定义了数据类型,还要定义变量一样。不同的是创建对象要调用构造函数Create,当不需要这个对象时,要调用析构函数Free删除它。

一个调用构造函数、析构函数创建对象和删除对象的实例如下。

先定义一个类:

可见,方法成员的访问同调用一般函数或过程的格式不同,即要在方法前面加“对象名.”,如:student1.setname。类似地,字段成员的访问同一般变量的访问也不同,也要在字段成员前面加“对象名”,如。

4.8类的继承性

类的继承性是面向对象的重要概念。

4.8.1类的继承的概念

类的继承,是指把一个新类定义为已经存在的旧类的后代,旧类称为父类或基类,而新类称为子类或派生类、衍生类,子类继承了父类的所有成员。

在Delphi中使用继承的语句很简单,只要在派生类声明时指出其基类就可以:

这里,定义了类TA,又定义了它的一个派生类TB。TB不仅有它自己的域B和方法Pb,而且继承了TA的域A和方法Pa,因此B0.A和B0.Pa都是合法的。

4.8.2覆盖根据类的继承的概念,派生类可以继承基类的所有成员。但有时没有必要或者不合适,这时可以通过如下的方法进行修改:创建和原成员同名的成员,当编译器调用该名成员时,调用的是新成员,而覆盖了老成员,从而达到修改基类成员的目的。

习题41.在ObjectPascal程序代码中,注释有几种格式?各用于什么情况?

2.什么是常量?什么是变量?ObjectPascal中如何定义常量和变量?

3.ObjectPascal中有哪些数据类型?

4.ObjectPascal中有哪些运算符?它们的优先级如何?什么是表达式?

5.赋值语句有什么用途?其格式是什么样的?

6.ObjectPascal中有哪几种分支语句?假设有变量A、B,若A0,则B=10;若A=0,则B=0;若A0,则B=-10,试写出实现以上功能的if语句。

7.说明for语句、while语句和repeat语句的区别。假设I=1~10,J=1~10,试写出实现M=11+12+22+13+…+910+1010的for语句。

8.过程和函数有什么区别?说明它们的定义和调用的格式。

9.如何定义类?如何定义对象?

同类推荐
  • 计算机应用基础案例教程

    计算机应用基础案例教程

    本书是根据教育部对高等院校计算机公共基础课程的基本要求,结合计算机技术的最新发展及高职高专类院校计算机基础课程改革的最新动向编写而成。其主要内容包括计算机基础知识、WindowsXP操作系统、Word2003文字处理软件、Excel2003电子表格软件、PowerPoint2003演示文稿制作软件、计算机网络与安全及常用工具软件的使用。本书将理论知识与项目实践相结合,既对理论有较为系统全面的讲解,又通过案例突出了操作技能的培养。本书内容新颖,体系结构合理,可作为高职高专学校、成人高等学校的计算机公共基础课教材,也可以作为广大计算机爱好者的自学参考书。
  • 信息技术教育大全-操作系统大全

    信息技术教育大全-操作系统大全

    本书系统介绍说明了有关电子信息系统及操作系统等知识,希望对该信息技术有需求的读者能够从中得到帮助。
  • 现代企业财务软件应用教程

    现代企业财务软件应用教程

    本书内容包括财务软件概论、系统管理、企业应用平台、总账管理、报表管理、薪资管理、固定资产管理、应收款管理、应付款管理等。
  • 成为淘宝创业的超级毕业生

    成为淘宝创业的超级毕业生

    本书讲述如何通过淘宝创业将大学在校生打造成为“超级毕业生”。主要内容包括大学生从事淘宝创业的理论基础、学以致用的操作指南,以及可资借鉴的案例。书中的理念篇可供对创业教育感兴趣的高校教师参考;实战篇提出的“淘宝十二招”,操作简单,易学易用;案例篇讲述了十位成功在校创业大学生的故事,主要供学生参考。读完本书,相信凡是关注大学教育者或希望通过淘宝创业的大学生,皆能从中获得启发,对创业从无心变有心,从有心变行动,亲身投入或参与到这个伟大的事业中来。
热门推荐
  • 推销世界上最伟大的产品——自己

    推销世界上最伟大的产品——自己

    本书涵盖了人生成功的方方面面,教你如何去包装并且向他人展示一件无比重要的“产品”——你自己。它告诉你人生重要的是什么;你真正需要推销的是什么;怎样与人沟通,让自己的招牌亮起来:为创造梦想的生活,应该有什么样的态度和信念。
  • 独家蜜宠:老公,请节制

    独家蜜宠:老公,请节制

    “你那个是什么东西,硌得我好难受!”她的手身向后面,却听到他一声难受的叹息。他是A市商业巨头,传说他嗜血无情,可偏偏对她一忍再忍,“小不点,累了我一夜,你说不认人就不认人了?”他边说边游移着手,羞得她涨红了脸语无伦次,“你、你变态。明明是我累了一夜!”总裁大人邪魅一笑:“哦~那今晚让你补回来,累我三夜如何?”【宠、巨宠、宠的没有下限。点进来不后悔!!!】
  • 凰起天阑:绝色收魂师

    凰起天阑:绝色收魂师

    世人皆知,天阑少宫主荏弱无能。然而没人料到,这层怯弱的皮囊下,早已换了个狠戾决绝的灵魂。“谁伤我一寸,我定要他连皮带骨还回来!”他神情危险,掌心蹿起簇赤红火苗,唇角却挂着抹懒洋洋的笑。“无忧这身皮肉,细润如脂,本座可是爱惜得紧,怎么会伤它呢?”当果敢决断的收魂师,对上生杀予夺的君王。强强相斗,且看谁能降服了谁?
  • 倾其一诺

    倾其一诺

    寂静的夜里,总有一盏灯就像°孤独的身影总有肩膀依靠----by诩清澈的湖里,依然平静But在远方的你可安好----by熙辽阔的花海,有人欢笑可是独独少了你的微笑----by白当诩伊诺认清那个男人时,为时已晚,她暗暗发誓此生再也不会爱上任何男人,可是,这个男人,让她情不自禁打破誓言----------月亚熙自认是花心少女,在别人看着她花心时,在别人不齿时,谁又知晓她背后的痛,而这个和她吵吵闹闹的男人,就要离她远去了么----------白娅萱出身平凡却有着不平凡的气质,不平凡的外貌,因为外貌,就要受到所有人的嘲讽吗?她不甘!当她完美蜕变,当她强袭归来,当她拥有许多,可是却丢失了那份陪伴她的温柔。
  • 上古世纪之新世界

    上古世纪之新世界

    一颗不知来自何处的陨石神秘降临一个游戏却改变了少年的生活这一次改变世界
  • 残余伤爱

    残余伤爱

    在青春的年华里,他却在不对的时间遇上对的她,可惜的是,最美的遇见却成为最痛的伤害,一切都还没发生,爱也被代替,当曾经的美好却已经开始逐渐走向灭亡…………多年后的命运又会怎么样呢?爱能否回到身边?
  • 乐庵语录

    乐庵语录

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。
  • 伍天

    伍天

    伍天新书’小说’就是没有人去构思过的,是一个闻所未闻的故事。每一本小说就是每一个与众不同的新颖世界!一书一浩瀚宇宙天地,无奇不有。故事起源于··秋峰山脉,······伍氏的小少年:伍天,········亲们,一起去享受这一个美妙无穷,与众不同的世界么?与那些五彩缤纷的世界又有何不同?
  • 梨园原

    梨园原

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。
  • 混沌女神之嗜血妖后

    混沌女神之嗜血妖后

    女强之路情之一字,甚为玄妙,她虽不懂,却也不得不世俗,信任之人的背叛,是意料之中,也是意料之外。斗转星移,时空转换,她附身于走火入魔的少女身上,筋脉尽堵。混沌入体,破而后立,灵体双修,踏上强者之路。初见他,犹如神邸,温润却也不敢触碰,她笑着饮血,还劝他来一杯。再见他,她妖娆笑着说,“我们还真有缘,要不你从了我吧。”重生异世,她恣意妄为,随心所欲,不想束缚本性。强者之路坎坷重重,她说大道无情,一人足矣,却不知已处处留情。(本文纯属虚构,请勿模仿。)