登陆注册
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)移位运算

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

    计算机应用基础案例教程

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

    Delphi程序设计教程

    本书为适应不同层次读者的需要,从Delphi的基本知识讲起,由浅入深,全面讲述了Delphi的集成开发环境、Delphi的编程语言——ObjectPascal、常用组件的使用、窗体的设计、菜单的设计、对话框的设计、多文档界面程序的设计、多媒体编程和数据库应用程序设计等内容。
  • 下一代互联网

    下一代互联网

    本书系统介绍了下一代互联网的进展情况,包括下一代互联网的概念解析,国内外下一代互联网的最新发展情况,下一代互联网的关键技术进展,以及各国发展下一代互联网的政策计划。最后分析了下一代互联网对未来社会的影响,提出我国发展下一代互联网的政策建议等。全书共6章,包括互联网发展历史和现状,下一代互联网基本概念,下一代互联网研究最新进展,下一代互联网发展现状,我国发展下一代互联网现状,发展下一代互联网战略建议。
  • 组建家庭局域网与无线网

    组建家庭局域网与无线网

    该书是“快乐驿站”丛书之一,是一本精心为初级家庭电脑用户打造的局域网与无线网组建入门与提高的图书,同时还涉及一些办公网络的组建内容。《组建家庭局域网与无线网》以局域网和无线网的功能、设置以及实际应用为导向,用生动的实例、形象的图解和幽默的语言循序渐进地介绍了局域网和无线网的概念、产品、设计、组建、调试与维护的相关内容。
热门推荐
  • 锦绣农门之农女当家

    锦绣农门之农女当家

    从孤儿到家庭圆满,从家产无数到一穷二白,萧清辞表示高兴又无奈。一大家人,家徒四壁,穷的吃了上顿没下顿没事,做美食,画衣服首饰……后来,有车有房有田……
  • 苏少萌宠

    苏少萌宠

    第一次见到她,苏黎孺就喜欢上了她,无奈她心里一直有着她的初恋情人,自己面对她时霸道又柔情,时而冷酷,时而像个小孩子,自己能打动得了她吗?
  • 国际金融行业反洗钱规定及操作实践研究(谷臻小简·AI导读版)

    国际金融行业反洗钱规定及操作实践研究(谷臻小简·AI导读版)

    洗钱犯罪是目前国际社会普遍关注的焦点和热点问题,作为现代社会资金融通的主渠道,金融系统是洗钱的易发、高危领域。本书通过对各国或区域性组织对反洗钱实践的分析,简谈中国反洗钱体系的构建和现有问题的解决路径。
  • 魔师之无限穿越

    魔师之无限穿越

    骚年东辰化身为魔术师穿临各个位面留下无数奇迹传说。“辰哥,我想要那圆圆的月亮。”东辰只手一挥,洒下点点星光。一个白白的小球出现在他的手中。“唉,这世间只有我想不到的,没有我得不到的,无敌的寂寞你岂能懂”
  • 子午流注针经

    子午流注针经

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

    地秧草1

    热爱大自然喜欢画画的学渣李卫华经常受到老师的羞辱和父母的责骂。随着李卫华的成长,发现周围的世界正在发生巨变,环境遭到污染,人们变得唯利是图。这种改变令李卫华很痛苦,所以决心发奋读书认识世界和自己,立志要去改变这个世界,让世界变得更美好。通过自己的努力,李卫华如愿以偿考上了大学,并发现一个五彩缤纷的精致世界。最终李卫华走向了成熟和觉悟。
  • 绝地求生之末日曙光

    绝地求生之末日曙光

    假如你在现实中拿到枪你会怎么玩?sks两秒17发你见过没?双持sks见过没?飞起来的摩托车也能秀翻全场。没有最秀只有更秀。欢迎来到绝地求生!
  • 一生何锦江山愁

    一生何锦江山愁

    十八年前,汉源帝国皇帝听信谗言将镇边将军府一夜抄家。镇边将军府上下一百三十八口老弱妇孺一个不留。时值镇边将军夫人苏锦生产之际,诞下一对龙凤胎。为保将军一丝血脉,夫人艰难作决,自己与女儿留下做饵,为贴身丫鬟碧云与儿子挣得一线生机逃往江南苏家。在边疆奋力抵抗的镇边侯李栖梧及李家军众人得知消息后,放弃抵抗,诚降夷族。时隔十八年,苏家姐弟为替母报仇,设下重重圈套,誓将汉源江山易主。
  • 天下为聘:娘子快到碗里来

    天下为聘:娘子快到碗里来

    她本是21世界的全能才女,一朝穿越已为人妇,甚至还有了孩子,他本想夺取她身上的转生玉霸为己有,所以对她用尽一切残酷手段,奈何不知不觉间,她已在他心头。为了得到他,他不惜让她恨他。他本安于部落一角,却遇到她,救了她,爱上她,为了寻回她,屡屡身陷险境。他本安之一隅,放弃仇恨,却被她的勇气折服,为了她,他甘愿做她的依靠,一起图谋天下。奈何一生一世一双人,这一世早已注定她的归宿只有一个,我愿金戈铁马为你君临天下,你可愿一袭红衣为我红袖添香……
  • 无敌忍者

    无敌忍者

    一个不同的忍者世界,一个破碎的时空,看一个忍者的成神之路,一只龙龟的复苏。(虽然有忍者,有龟,但真的不是忍者神龟,大概吧)实际上这是一个披着火影外皮的玄幻小说,所有的只是火影的一些名词之类的东西,跟火影忍者基本没什么关系,这是一个全新的忍者世界,还有唯一的忍者。