登陆注册
16017000000011

第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)移位运算

同类推荐
  • 计算机与人工智能(科学新知丛书)

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

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

    玩转手机

    本书主要包括:手机的发展历史、手机知识、手机的选购与巧用、手机与网络、手机短信等内容。
  • 初级会计电算化

    初级会计电算化

    本书是作者根据历年会计从业资格考试的考试大纲以及多年对真题的分析,并结合多为专家、学者的实践经验而编写的。本书主要分为八套模拟试卷,以对考生考前的学习进行模拟实战,达到提高考生成绩的目的。
  • 图说电子计算机

    图说电子计算机

    今天人们谈到计算机常常会把它和网络联系起来。20世纪90年代兴起的因特网其影响之广、普及之快也是大家始料未及的,也从没有一种技术能像网络一样日新月异,并迅速地改变着我们的学习和生活方式。因特网大大缩小了时空界限,为我们提供了快捷方便的交流途径。在未来10年内,计算机又将会有怎样飞速的发展呢?在互联网上进行医疗诊断、远程教学、电子商务、视频会议等活动已经实现,未来的互联网的传输速率将会提高100倍,大家可以随时随地连接到因特网上,更方便地进行交流、沟通和开展商务活动。
  • 公开时刻

    公开时刻

    本书从传播者分析,内容分析,媒介分析受众与效果分析,传播环境与传播控制分析等几大方面把汶川地震作为重大传播案例,阐释汶川地震的传播学遗产。对政府部门和新闻媒体在危机公关方面做出正面评价。
热门推荐
  • 燕子李三

    燕子李三

    燕子李三是清末民初一位传奇式的侠义人物,他的故事在京津一带流传甚广。他侠肝义胆,从不曾被命运缚住手脚;他穷困而不沮丧,遭痛楚而能超脱,是一位善于在打拼中“自胜”的人物。本书气势磅礴,情节跌宕起伏,将燕子李三的半生描写得活灵活现,从而为广大读者塑造了一个更加真实的燕子李三。
  • 总裁追妻,鲛人恋

    总裁追妻,鲛人恋

    她,原是鲛族公主,可为了给父母族人复仇,不得不在人类生活中辛苦寻找凶手,复完仇后,正准备回自己的息身之处,不料,“怎么!夫人你要走哪去?”某个腹黑总裁在一旁不爽的说到,她皱眉,:“谁是你夫人?”“除了你,还有谁?”“老娘不认你!”“我赖定你了!”看他如何追妻,看最后鹿到谁手!
  • 天使之魔君奴仆

    天使之魔君奴仆

    与鬼交流?!游离阴间?!和死神恋爱?!感应和挟制一切灵异?!听起来令人人毛骨悚然!而一个原本体弱多病的小女孩却因为意外获得获得魔君撒旦的饰物——一个手镯而成为魔君奴仆,便拥有了这些诡异惊悚的经历。
  • 浮生莫忧

    浮生莫忧

    人生如萍,生命无常。浩荡的红尘中,总有一个卑微的身影在游走,穿梭在虚实之间,明灭不定。时韶如流,磨灭了最初纯真的模样,光不在那么鲜亮,人性越渐扭曲,真实却也在说谎……凛冬深夜里静默的呢喃,浅浅淡淡,加重了庸者对生命的哀叹。日复年载的重故,只为不愿辜负这场造化。等待那一个淹埋在无痕岁月中的一个无期。
  • 穷书生的山贼路

    穷书生的山贼路

    北宋,一个文人的时代。一介穷苦书生,奈何原因种种,上了山,做了贼。入了朝堂,却又重头再来。
  • 腹黑邪王:绝世倾城妃

    腹黑邪王:绝世倾城妃

    她是二十一世纪的杀手,又是神医,活死人,肉白骨,只要有一口气,她就能把人拉回来,因为一次意外,穿越到了灵雪大陆成了废柴。未婚夫想退婚?给你一纸休书,赶紧滚蛋。说我是废柴?睁大你们的眼睛看看谁才是真正的废柴。某天,碰到了一只大腹黑,他说:天才配天才,绝配。她反击:你也太自恋了吧?
  • 武乡,敌后文化的中心

    武乡,敌后文化的中心

    抗日战争中,八路军与武乡民众一道,在武乡这片土地上,团结合作、共同抗敌,先后与敌人进行了大小战斗6368次,歼敌28830人,取得了辉煌的战绩,可以说武乡的山山岭岭上都有过激烈的战斗,沟沟洼洼里都有着烈士的忠骨。《武乡敌后文化的中心》主要收集整理了发生在我县境内一些重大战役战斗,以展示武乡人民在战火纷飞的岁月里,与八路军并肩作战,用小米加步枪打出红色江山的光荣历史。
  • 尸婴道士

    尸婴道士

    共工第九子后土,一统九州,创轮回秩序,传下冥司道统,专司监管天条漏洞,维护轮回公正。尸婴之身宁十七入红尘为冥司道第十七代天下行走!上有师命:不服就打到服,挨揍就别回来见我了,老道丢不起那人!
  • 霸道首席爱上她

    霸道首席爱上她

    她失忆在海边,被他捡到了,他居然说她是狗仔队的人。你是我的,你的心是我的人也是我的,你不许跟别的男人有关系,,,,,
  • 十里锦红,江山为聘

    十里锦红,江山为聘

    一位杀手穿越到了一个脸被烧毁的相府嫡小姐的身体里。某女说:”我要为自己而活。“打姨娘、毁家姐、撕婚约。某女无所畏惧。当她想远离纷争时,却无奈成了各位皇子争抢的对象。毫无疑问,皇子们纷纷被打脸。但某女却因一道圣旨,把它赐给了没娘疼的面具腹黑七王爷当了王妃。从那日起无比腹黑的七王爷成了妻奴。某女怒道:“王爷,你给我滚。”男子微微一笑:“娘子要为夫去哪?难道去你身上。”