登陆注册
36209800000011

第11章 Delphi的编程语言--ObjectPascal(1)

本章要点

基本Pascal语言的语法

面向对象的Pasacl--ObjectPascal的语法

Delphi的编程语言是ObjectPascal,即面向对象的Pascal。ObjectPascal是对传统的Pascal语言的扩展,是增加了面向对象功能的Pascal语言。

Pascal语言是结构化程序设计语言,具有程序结构严谨合理、数据结构完整、语言语法简单、语句通用灵活、程序易写易读、编程风格优美等特点,是程序员学习结构化程序设计的最佳选择。

面向对象的程序设计技术,是当今程序设计的流行技术,是解决软件危机的重要方法,是程序设计技术发展的重要阶段,是当前编程中必不可少的重要工具。

本章将对Pascal和ObjectPascal基本语法进行介绍。

4.1代码格式

在用一种编程语言编写程序代码时,除了要符合语言的语法规则外,还应该遵从一定的书写格式。ObjectPascal也不例外。

4.1.1字符集和保留字

1.字符集

ObjectPascal语言使用的字符集包括如下内容。

英文字母:26个英文字母的大写A-Z、小写a-z;数字:0、1、2、3、4、5、6、7、8、9;特殊字符:等。

2.保留字

保留字,也称关键字,是语言定义的、用做专门用途的字符串,用户不得另作它用。

ObjectPascal的保留字如表4-1所示。

除此之外,ObjectPascal中使用的标准命令,也是保留字,如表4-2所示。

4.1.2字母的大、小写

在Pascal程序代码中,忽略字母的大、小写,即大、小写视为同一字母,如“NAME”、“Name”和“name”,都为同一标识符。程序代码中使用大、小写,是为了美观、易读。

4.1.3空白区

在Pascal语言中,空格、换行和TAB键都被称为空白区。编译器将忽略空白区而不影响编译。

4.1.4注释

注释是为增强程序的可读性而在程序代码中加入的说明,它不影响程序的编译。

Pascal代码中的注释有3种格式:

注释内容:用包括注释内容,用于多行注释。

注释内容:用包括注释内容,用于多行注释。

注释内容:用标志其后为注释内容,用于单行注释。

4.1.5书写风格

在Pascal程序代码中,为增强程序的可读性和美观,也提倡缩排方式,如:

4.2常量和变量

程序中处理的数据有两种形态:常量和变量。

4.2.1常量

常量是其值在程序运行过程中保持不变的数据量。

如果程序中一个值相同的数据量被多次使用,就可以将这个数据量定义为一个常量。

在ObjectPascal中,定义常量用如下的格式:

Const常量名1=常量值1;

常量名2=常量值2;

其中Const是定义常量的保留字,常量名是在程序中代表常量值的标识符,常量值是程序中需要处理的数据的值,这些值可以是数值,可以是字符或字符串,也可以是表达式。

典型的常量定义如:

ConstMax=100;

Chr=‘A’;

Str=‘Iamastudent’;

这样定义之后,程序中出现Max、Chr、Str的地方分别代表数值100、字符A、字符串Iamastudent。

4.2.2变量

变量是其值在程序运行过程中可以改变的数据量。

变量在使用前必须进行定义。定义变量要指定变量名(变量标识符),说明变量的数据类型。定义变量实际是在内存中指定存储变量的一段存储空间。

在ObjectPascal中,定义变量用如下的格式:

var

变量名1:变量类型1;

变量名2:变量类型2;

其中var是定义变量的保留字,变量名是变量在程序中的标识符,变量类型是变量的数据类型。相同类型的变量可以放在一起定义,变量间用逗号分开。

典型的变量定义如:

var

m,n:Integer;

Str:String;

这里m,n和Str分别被定义成整数型变量和字符串型变量。

4.3数据类型

一种语言的数据类型,是指这种语言可以处理的数据的类型。一个变量的数据类型决定了它可以赋什么样的值、允许进行怎样的操作。所以,学习一种语言,掌握这种语言的数据类型是很重要的。

ObjectPascal有丰富的数据类型,这为它的编程提供了很大的方便。这些数据类型可分为基本数据类型、构造数据类型和指针类型。

4.3.1基本数据类型

ObjectPascal的基本数据类型包括整数类型、实数类型、布尔类型、字符类型和字符串类型等几类。

1.整数类型(Integer)

整数类型是取值为整数的数据类型。

ObjectPascal中的整数类型又包括以下不同的类型,其位数和取值范围也不相同。

Integer32位有符号整数,取值范围为-2147483648~2147483647。

Cardinal32位无符号整数,取值范围为0~4294967295。

Shortint8位有符号整数,取值范围为-128~127。

Byte8位无符号整数,取值范围为0~255。

Smallint16位有符号整数,取值范围为-32768~32767。

Word16位无符号整数,取值范围为0~65535。

Longint32位有符号整数,取值范围为-2147483648~2147483647。

Longword32位无符号整数,取值范围为0~4294967295。

Int6464位有符号整数,取值范围为-263~263-1。

定义整数型变量的实例如下:

2.实数类型(Real)

实数类型是取值为实数的数据类型。

ObjectPascal中的实数类型又包括以下不同的类型,其位数、取值范围和有效数字精度也不相同。

Real8字节,取值范围为5.0×10-324~1.7×10308,有效数字精度15~16位。

Real486字节,取值范围为2.9×10-39~1.7×1038,有效数字精度11~12位。

Single4字节,取值范围为1.5×10-45~3.4×1038,有效数字精度7~8位。

Double8字节,取值范围为5.0×10-324~1.7×10308,有效数字精度15~16位。

Extended10字节,取值范围为3.6×10-4951~1.1×104932,有效数字精度19~20位。

Comp8字节,取值范围为-263~2633.布尔类型(Boolean)-1,有效数字精度19~20位。

Currency8字节,取值范围为-922337203685477.5808~922337203685477.5807,有效数字精度19~20位。

定义实数型变量的实例如下:

布尔类型是只能取True(真)和False(假)两种值的数据类型,用于逻辑变量。

ObjectPascal的布尔类型包括4种类型,它们是Boolean、ByteBool、WordBool和LongBool,分别占用1、1、2、4个字节,最常用的只有Boolean,其余3种只用于特殊情况。

定义布尔型变量的实例如下:

4.字符类型(Character)

字符类型用于表示单个字符。

ObjectPascal的字符类型有3种类型。

Char一般的(缺省)字符类型,占一个字节,用于保存单个ANSI标准字符。

AnsiChar占一个字节,用于保存单个ANSI标准字符。

WideChar占两个字节,用于保存单个Unicode标准字符。

定义字符型变量的实例如下:

5.字符串类型(String)

字符串类型用于表示字符序列(称字符串),其长度(即包含字符的个数)是可变的,但一般有一个最大长度的限制。

ObjectPascal的字符串类型有3种类型,允许的最大长度不同。

ShortString最大长度为255个字符;

AnsiString最大长度为231个字符;

WideString最大长度为230个字符。

定义字符串型变量的实例如下:

4.3.2构造数据类型

ObjectPascal的构造数据类型包括枚举类型、子域类型、记录类型、集合类型、数组类型和文件类型等。

1.类型声明

构造数据类型的一个共同特点就是要先用类型声明来声明类型,然后再用前面介绍的方法定义这种类型的变量。

类型声明的语法格式如下:

Type

新类型名1=类型1;

新类型名2=类型2;

其中Type是类型声明的保留字。

这里定义的只是一种新的数据类型的类型名,如同前面讲的Intege、Real、String一样,还不是可以使用的变量;要使用变量,还要用前面介绍的方法定义这种类型的变量。

2.枚举类型

枚举类型是只能取值于所有列举出的(即枚举)有限个元素的一种数据类型。

枚举类型的类型声明格式如下:

Type

枚举类型名=(元素1,元素2,元素3,…);

其中枚举类型名是用户定义的枚举类型的类型标识符,凡出现的该标识就代表用户定义的这种枚举数据类型;圆括号中的元素1、元素2、…,就是这个枚举类型所包含的所有元素列表,元素间用逗号分开。

如可以声明一个包含几种可能颜色的枚举数据类型如下:

Type

Colors=(red,blue,yellow,green,purple);

这样Colors就是一个枚举数据类型,用它再来定义枚举型变量,如

var

color1:Colors;

这里变量color1在程序中只能取声明类型时列举的几种取值之一。

3.子域类型

子域类型,也有称子界类型,是取值于给定取值范围的一种数据类型,它与枚举类型的区别是,枚举类型枚举变量所有可能的取值,而子域类型只给出变量可能的取值范围。

子域类型的类型声明格式如下:

Type

子域类型名=下界..上界;

如可以声明一个取值在整数1到9之间的子域数据类型如下:

Type

Int=1..9;

这样Int就是一个子域数据类型,用它再来定义子域型变量,如var

int1:Int;

同样,这里变量int1取值只能在1到9范围内。

4.记录类型

记录类型是可以包含若干个不同数据类型元素的一种数据类型。

记录类型的类型声明格式如下:

Type

记录类型名=Record

元素1:类型;

元素2:类型;

end;

其中Record是保留字,说明用户定义的记录类型名是一个记录数据类型,Record与end之间是记录的元素列表,包含的元素可以是不同的数据类型,用前面讲过的格式指明每个元素的数据类型。

如可以声明一个包含学生姓名、年龄和性别等元素的记录类型及记录类型的变量如下:

Type

Student=Record

Name:String;

Age:Integer;

Sex:Boolean;

End;

Var

Student1:Student;

经这样定义之后,Student1就成为一个包含3个元素的记录类型的变量了。

5.集合类型

集合类型是包含相同数据类型元素的一种数据类型。

记录类型的类型声明格式如下:

Type

集合类型名=Setof元素类型;

如可以声明一个其元素为子域类型的集合类型如下:

Type

Int=Setof1..9;

这样就声明了一个元素为子域类型的集合类型Int。

6.数组类型

数组是若干个相同数据类型的元素排列在一起的一种数据类型。

数组可以是一维的,也可以是多维的,每一维的元素个数可以不同。

数组类型的类型声明格式如下:

Type

数组类型名=Array[下标1定义,下标2定义,…]of元素数据类型;

其中Array是声明数组类型的保留字,中列出声明的数组的维数及每维包含的元素个数,of后面指明数组元素的数据类型。

如可以声明一个元素类型为整数的二维数组类型如下:

Type

IntArray=ArrayofInteger;

这里声明了一个其元素类型为整数的二维数组类型IntArray,第一维有5个元素,第二维有10个元素,共有5×10个元素组成了一个矩阵。

7.文件类型

ObjectPascal把文件也当做一种数据类型。

文件类型是若干相同类型元素的有序集合,其元素的数据类型可以是除文件类型之外的任意类型。

文件类型的类型声明格式如下:

Type

文件类型名=fileof元素类型;

4.3.3指针类型

指针是一种特殊的数据类型。其他类型的变量对应的内存存放的是该变量的值;而指针变量对应的内存存放的是存储另一变量的内存地址,称为指针指向另一个变量。另一变量的数据类型,称为指针的基类型。

指针类型的类型声明格式如下:

Type

指针类型名=基类型;

其中表示等号左边的标识符是一个指针变量。

使用指针变量可以增加程序设计的灵活性,但也增加了程序的复杂性,使用时应慎重。

4.4运算符和表达式

ObjectPascal对数据的运算和处理是通过运算符和表达式实现的。

4.4.1运算符

ObjectPascal的运算符分为若干种类。按参加运算数的数据类型分,可分为算术运算符、布尔运算符、关系运算符等;按参加运算的数的个数分,可分为单目(也称一元)运算符(即一个数参加运算)、双目(也称二元)运算符(即两个数参加运算)和多目(也称多元)运算符(即多个数参加运算)。

1.算术运算符

算术运算符(也称数值运算符)是进行算术运算的运算符,参加运算的数是整数类型或实数类型,运算的结果也是整数类型或实数类型。

1)加、减、乘运算

为多目运算符,参加运算的数可以为整数或实数,结果也为整数或实数,若整数和实数混合运算,则结果自动向精度高的类型转化。

2)除法运算

实数除法,为多目运算符,参加运算的数可以为整数或实数,结果为实数。

div,mod:整数除法,为双目运算符,参加运算的数为整数,结果为整数,div为两整数除得的整数商,而mod为两整数除得的余数。如7div2,结果为3,而7mod2,结果为1。

3)位运算

not,and,or,xor:not为单目运算符,其他为双目运算符,参加运算的数为整数,结果也为整数,分别将运算数表示成8位二进制数后按位求反、按位相“与”、按位相“或”、按位相“异或”。如7和9,表示成二进制数分别为00000111和00001001,not7,则为11111000,7or9,则为00001111。

4)移位运算

同类推荐
  • 黑客就在你身边

    黑客就在你身边

    互联网络正在改变着我们的生活,每个人都处在互联网的天罗地网之中。本书以轻松的笔调,向人们介绍了有关“黑客”的知识。当你读完这本书后,你会发觉“黑客”一点都不神秘,他们渴望全社会对他们有一个公正的评价。
  • 初级会计电算化

    初级会计电算化

    本书是作者根据历年会计从业资格考试的考试大纲以及多年对真题的分析,并结合多为专家、学者的实践经验而编写的。本书主要分为八套模拟试卷,以对考生考前的学习进行模拟实战,达到提高考生成绩的目的。
  • 互联网创业前奏曲(第二部)——网站运营之人性、策略与实战

    互联网创业前奏曲(第二部)——网站运营之人性、策略与实战

    本书是《互联网创业前奏曲》系列的第二本书,是作者多年互联网实践经验和业界观察的总结,是国内罕有的关于互联网网站运营和用户心理结合的书籍,用通俗的语言阐述互联网运营背后的人性驱动。你想互联网创业吗?你是否在为找不到好的互联网运营策略和方法而发愁?你非常想了解互联网行业?你是否在为自己不了解互联网运营而苦恼?本书针对这些问题列举了很多互联网运营的案例,帮你制定运营策略,更好的修炼和提升运营功力。
  • 计算机与人工智能(科学新知丛书)

    计算机与人工智能(科学新知丛书)

    本书是专门为中小学生编写的科普读物。全书共分八个部分,分别就计算机诞生的历程,计算机的种类、构造、作用及其发展趋势等方面进行了详尽的论述,全书论述深入浅出,行文活泼流畅。为本书的主要读者——广大的中小学生朋友认识计算机、了解计算机和掌握计算机提供了一把钥匙,是新时期中小学生开展素质教育不可多得的科普读物,中小学生家长及教师阅读此书也能从中获得有益的启示和感悟。
  • 成为淘宝创业的超级毕业生

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

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

    青丝舞雪倾华年

    流年逝,红颜殇,凤断魂,别离恨转瞬间,早已沧海桑田忘不了,你那青丝飞舞的身影忘不了,你那倾城绝美的笑颜我愿倾尽年华去追寻我苦苦追寻千年却发现你一直就在我的身边始终停留在原地,不曾离开只因期盼我回头的一瞬
  • 虽然我不是狩魔猎人

    虽然我不是狩魔猎人

    “大人,我的女儿被怪物一样的男人掠去了,你能帮我找回来吗?求求你,她是我唯一的孩子!虽然我家穷,但你想要什么我都答应!”“为什么你不去找狩魔猎人?”“找了,那个白头发的将我女儿带回来过,可昨天又被抓走啦!我听过您的事迹,比狩魔猎人还厉害!一定能解决它!”“不不,这听起来有点难度,而且我急着赶路啊。”“我这里有一袋红色碎石头,还有一块莫啥用的金属,是我在地里挖到的。我身上暂时只有这些了。”“红宝石尘?反魔法金属?我……我不缺钱。等下,你兜里的是……对了!我们来局昆特牌吧!”“哼,我曾在诺维格瑞大赌局夺冠,这么多年来,还从没输过!”——————巫师世界观,会有杰洛特、希里等角色……
  • 快乐赢未来

    快乐赢未来

    本书通过对快乐经营理念的诠释,为职场人乐业爱岗、积极进取、构建人性管理和快乐文化提供了启示和思路。
  • Alive:异病

    Alive:异病

    身体的异变,还是心灵的病变?【新手作品请多多指教】
  • 异世唐门

    异世唐门

    唐门,唐天。人说百年难得一见形容天才而唐天却被说为千年难得一见的天才二十二岁暗器、毒、玄功大成被世人看中成为唐门下任掌门第一人选~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~可是这样的他就因爱自杀天公作美又给了他次机会来到异世这里没有炫丽的魔法只有练武者着的斗气翻江倒海、临空飞行、成神成魔。都靠着斗气来到异世的唐天还会在因爱自杀吗?拥有唐门绝学的他巅峰在哪里?
  • 蛇院童话

    蛇院童话

    穿越了还得再穿越,在童话世界做了十年公主的罗丝背负使命来到哈利波特的世界,谁也不知道她是否能找到拯救那个世界的办法。
  • 如何再利用农业废弃物

    如何再利用农业废弃物

    本书论述了农业废弃物再利用对减少环境污染,改善农村生态环境具有重要的意义。同时,介绍了废物利用的相关技术。
  • 金钏逐波江水遥

    金钏逐波江水遥

    五千年历史长河中盛世大唐是最耀眼的明珠摇落一顷星光点缀瑰丽梦景阴谋、阳谋、权谋谋不定的是山河算不透的是人心担不起的是道义勘不破的是贪嗔一代红颜战沙场、踏江湖、居庙堂凤兮凤兮,四海翱翔
  • 血色刀芒

    血色刀芒

    叶枫,绝对的高富帅!父亲,叶震天,是雾隐七峰之一天刀峰峰主。其本人天脉者,武修资质逆天,十二岁便真气期七层。冠绝年轻一辈。但天有不测风云,三年前天刀峰遭遇神秘人血洗,叶震天为保护叶枫坠入山崖,生死不明,母亲失踪。叶枫也被神秘人掌力震伤筋脉,从天脉者变成废脉者。三年来,叶枫一直没有放弃,刻苦修炼,但最多修炼到真气期一层,真气便会散入肌肉,穴道。修为一直停滞不前。还有三个月就是武修考核,宗门大比。要是达不到真气三层就将被赶下山门,而父母生死不明,血海深仇扑朔迷离,未来到底何去何从~~~武修等级真气期-真元期-化境(蝶变劫)-灵脉境-灵府境-坐照境(神变劫)-神识境-神海境-入微境(涅磐劫)~~~
  • 极仙道祖

    极仙道祖

    剑指万千宗,因果终无头。无尽诛仙路,以证仙极道。以天地之极道,成就仙祖真身!