第二章Objectpascal语言基础_第1页
第二章Objectpascal语言基础_第2页
第二章Objectpascal语言基础_第3页
第二章Objectpascal语言基础_第4页
第二章Objectpascal语言基础_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章第二章 Object PascalObject Pascal语言基础语言基础 2.1 词法符号词法符号 2.2 常量与变量常量与变量 2.3 简单数据类型简单数据类型 2.4 结构类型结构类型 2.5 运算符优先级运算符优先级2.6 语句与流程控制语句与流程控制2.7 过程与函数过程与函数 2.8 程序与单元的结构程序与单元的结构 2.9 标识符的作用域标识符的作用域 2.1 2.1 词法符号词法符号例例2-12-1:了解:了解DelphiDelphi源程序源程序 由程序可见,由程序可见,DelphiDelphi源程序是由单词和符号组成的源程序是由单词和符号组成的纯文本。纯文本。一、一、

2、 基本符号基本符号Object PascalObject Pascal语言仅使用以下几类基本符号:语言仅使用以下几类基本符号:1. 1. 大小写英文字母大小写英文字母A A、B B、C C、Z Z等等2626个大写,个大写,和和a a、b b、c c、z z等等2626个小写字母。个小写字母。2. 2. 数字符号数字符号0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9等。等。3. 3. 其他符号其他符号有有+ +,- -,* *,/ /,= =, ,( (,) ), , , , ,_ _,; ;,: :,, ,,. ., ,# #,$ $,及空格符等。及空格符等。

3、二、二、保留字、标识符、标准标识符、指令字保留字、标识符、标准标识符、指令字1.1.保留字保留字 程序如同一篇文章,由字符组成单词,再由单词和程序如同一篇文章,由字符组成单词,再由单词和符号构成句子符号构成句子语句。其中有一类单词,它们具语句。其中有一类单词,它们具有特定的语法含义,称为保留字(有特定的语法含义,称为保留字(reserved reserved wordswords)。)。程序员不得重新定义保留字的语义程序员不得重新定义保留字的语义。常用。常用的保留字如:的保留字如:beginbegin、endend、ifif、andand、forfor、dodo等。等。2.2.标识符标识符标识

4、符用作常量、变量、数据类型、过程、函数、单标识符用作常量、变量、数据类型、过程、函数、单元及程序等的名称。由一个或多个元及程序等的名称。由一个或多个ASCIIASCII码字符序列码字符序列组成,其构词规则如下:组成,其构词规则如下:(1 1)标识符由字母、数字或下划线组成;)标识符由字母、数字或下划线组成;(2 2)标识符的第一个字符必须是字母或下划线;)标识符的第一个字符必须是字母或下划线;(3 3)标识符的长度不应超过)标识符的长度不应超过255255个字符,否则只有前个字符,否则只有前255255个字符有效;个字符有效;(4 4)不能将保留字用作标识符;)不能将保留字用作标识符;(5 5

5、)标识符不区分大、小写。)标识符不区分大、小写。例如例如:x x、x1x1、maxmax、a15a15、Button_OKButton_OK都是合法的标识都是合法的标识符,而符,而5x5x、x-yx-y、ax10.5ax10.5等都是非法的标识符等都是非法的标识符。3. 标准标识符标准标识符 在在Object Pascal语言中,有一类标识符是系统预先语言中,有一类标识符是系统预先定义的,它们用于标识系统预先定义的标准函数、定义的,它们用于标识系统预先定义的标准函数、标准过程、标准类型、标准常量及标准文件等。标准过程、标准类型、标准常量及标准文件等。标准常量,如标准常量,如False、Maxi

6、nt、True等。等。标准类型,如标准类型,如Boolean、Char、String、TDateTime等。等。标准函数,如标准函数,如Abs、Eof、ShowMessage、Sqrt等。等。标准过程,如标准过程,如Dispose、New、Read、Readln、Reset等。等。标准文件,如标准文件,如Input、Output等。等。标准标识符是可以重新定义的。(例标准标识符是可以重新定义的。(例2-2)注意注意:(1 1)当程序中自定义的标识符与其引用的单元中所定)当程序中自定义的标识符与其引用的单元中所定义的重名时,如果要访问被引用单元的标识符,则义的重名时,如果要访问被引用单元的标识符

7、,则必须指示为外部单元的标识符,不然访问的是本程必须指示为外部单元的标识符,不然访问的是本程序定义的标识符。序定义的标识符。(2 2)因)因SystemSystem单元是自动引用的,不必也不允许在引单元是自动引用的,不必也不允许在引用部分列出用部分列出SystemSystem单元。单元。4. 4. 指令字指令字指令字为编译提供指示意义。指令字为编译提供指示意义。各指令各指令字有它专门的用途,如:字有它专门的用途,如:absoluteabsolute指令字用于指令字用于指示相指示相同类型的另一标识符存放同类型的另一标识符存放在同一个内存区域。在同一个内存区域。如下面代码:如下面代码:varvar

8、I: Integer;I: Integer;J: Integer absolute I;J: Integer absolute I; 这里用到了指令字这里用到了指令字absoluteabsolute,它声明变量,它声明变量J J和已存在和已存在的同类型变量的同类型变量I I的值驻留在同一段内存单元中,即的值驻留在同一段内存单元中,即I I与与J J实为同一变量。实为同一变量。2.2 2.2 常量与变量常量与变量 常量常量:在程序中,值始终保持不变的量,包括:在程序中,值始终保持不变的量,包括字面字面常量常量、符号常量符号常量 和和类型常量类型常量等。等。 变量变量:变量是一种可随时更改其值的量

9、变量是一种可随时更改其值的量 。一个变量。一个变量在某一个时刻有且仅有一个值。在某一个时刻有且仅有一个值。一、常量一、常量1. 字面常量字面常量(1)整型常量)整型常量 即即整数整数,如,如3、10000、-90。在。在Object Pascal中十六中十六进制形式表示整型常量以字符进制形式表示整型常量以字符$开头,如开头,如$20相当于相当于十进制的十进制的32。(2)实型常量)实型常量即即实数实数,例如,例如,6.6、0.77e+4。后者的表示方法称为指。后者的表示方法称为指数记数法或科学记数法,数记数法或科学记数法,0.77e+4表示表示0.77104。 PascalPascal语言中的

10、实数表示和日常书写的形式基本相语言中的实数表示和日常书写的形式基本相似,但要注意以下几点:似,但要注意以下几点:小数点前后一定要有数字。小数点前后一定要有数字。数中不允许包含空格字符与逗号。例如数中不允许包含空格字符与逗号。例如1 1,000000,000000是不合语法的。是不合语法的。没有分式表示。没有分式表示。使用指数记数法时,使用指数记数法时,e e前面应有整数或实数,前面应有整数或实数,e e后面后面必须是整数。必须是整数。例如:例如:88.088.0、-0.8-0.8、1e+231e+23、-3.45e-6-3.45e-6都是正确的实数都是正确的实数表示法,而表示法,而88.88.

11、、.66.66、4.44.4e5.5e5.5、e6e6则是不正确的。则是不正确的。(3 3)布尔常量布尔常量它是指它是指FalseFalse和和TrueTrue这两个值,这两个值,FalseFalse表示逻辑值表示逻辑值“假假”,TrueTrue表示逻辑值表示逻辑值“真真”。(4 4)字符常量字符常量字符常量有两种表示方式:字符常量有两种表示方式:用单引号对括起来的单个字符,如用单引号对括起来的单个字符,如aa、 * * 、22等。等。用用# #引导一个整数,整数表示该字符的引导一个整数,整数表示该字符的ASCIIASCII码。例码。例如,如,#13#13、#$20#$20、#$30#$30、

12、#65#65分别表示回车符、空格分别表示回车符、空格符、数字符号符、数字符号00、字母、字母 AA。 因单引号用于定界字符常量,所以用因单引号用于定界字符常量,所以用表示表示单引号字符。单引号字符。(5 5)字符串字符串常量常量字符串常量是用单引号对括起来的一串字符,例如,字符串常量是用单引号对括起来的一串字符,例如, Good ideaGood idea、96.596.5、#=#=。当字符串内有单引号时,要用两个连续单引号表示,当字符串内有单引号时,要用两个连续单引号表示,例如,例如, Most childrenMost childrenss English Course English C

13、ourse。书写字符串需要注意以下几点:书写字符串需要注意以下几点:空格字符可以是字符串的组成部分。所以在字符串空格字符可以是字符串的组成部分。所以在字符串中的任何空格字符都是其值的一部分;中的任何空格字符都是其值的一部分;字符串中的字母有大小写区分,即字符串中的字母有大小写区分,即A1A1不等于不等于 a1a1。2. 2. 符号常量符号常量字面常量可以在程序中直接使用,而由标识符表示的字面常量可以在程序中直接使用,而由标识符表示的符号常量需预先定义。符号常量需预先定义。常量定义的一般形式为:常量定义的一般形式为:constconst = =表达式表达式; ;以保留字以保留字constcons

14、t后开始常量声明;后开始常量声明;“=”=”号左边为常量号左边为常量标识符;标识符;“=”=”号右边的表达式可以由常量、部分在号右边的表达式可以由常量、部分在程序编译时可计算的函数,及先定义的常量标识符程序编译时可计算的函数,及先定义的常量标识符等构成,表示符号常量的值。等构成,表示符号常量的值。Object PascalObject Pascal对常量定义有如下要求:对常量定义有如下要求:必须遵循先定义后使用的原则,即只有已定义的常必须遵循先定义后使用的原则,即只有已定义的常量标识符才能在程序中使用。量标识符才能在程序中使用。不能改变符号常量的值。不能改变符号常量的值。可用于常量定义的可用于

15、常量定义的函数函数,即在程序,即在程序编译时编译时可计算的函可计算的函数,有数,有AbsAbs、ChrChr、HiHi、LengthLength、LoLo、OddOdd、OrdOrd、PredPred、PtrPtr、RoundRound、SizeOfSizeOf、SuccSucc、SwapSwap、TruncTrunc等。等。使用常量定义的使用常量定义的意义意义在于减少常量值差错机会与修在于减少常量值差错机会与修改程序的工作量,并提高程序的可读性。改程序的工作量,并提高程序的可读性。二、类型常量二、类型常量 类型常量定义在类型常量定义在PascalPascal程序的声明部分,以保留字程序的声明

16、部分,以保留字constconst开头。一个类型常量定义部分可包含多个类型开头。一个类型常量定义部分可包含多个类型常量定义,每个类型常量定义末尾均有分号,其一般常量定义,每个类型常量定义末尾均有分号,其一般形式为:形式为: const const :=表达式表达式; ; 例:例:const Pi: Double = 3.1415926; 类型常量的用法同变量完全一样,可以对类型常量重类型常量的用法同变量完全一样,可以对类型常量重新赋值。新赋值。三、变量三、变量 变量说明的一般形式为:变量说明的一般形式为: varvar :; 其中,变量标识符列表中可以包含一个或多个变量标其中,变量标识符列表中

17、可以包含一个或多个变量标识符,若有多个变量标识符时,相邻的两个变量标识识符,若有多个变量标识符时,相邻的两个变量标识符之间应使用逗号符之间应使用逗号“, ,”隔开;类型标识符用以指定隔开;类型标识符用以指定这些变量的数据类型。这些变量的数据类型。 变量说明以保留字变量说明以保留字varvar开头。一个变量说明部分可包含开头。一个变量说明部分可包含多个变量的说明,每个变量说明末尾均有分号。多个变量的说明,每个变量说明末尾均有分号。2.3 2.3 简单数据类型简单数据类型 在在Object PascalObject Pascal语言中,每个数据都有一个确定的语言中,每个数据都有一个确定的类型,某种

18、数据类型定义了该类型数据的存储方式类型,某种数据类型定义了该类型数据的存储方式和允许的一组运算,存储方式的定义相应地便确定和允许的一组运算,存储方式的定义相应地便确定了该类型数据的取值范围。了该类型数据的取值范围。 Object PascalObject Pascal是一个强类型语言,拥有丰富的数是一个强类型语言,拥有丰富的数据类型,并允许程序员自定义新的数据类型。据类型,并允许程序员自定义新的数据类型。 常见的分类方法中,数据类型分为常见的分类方法中,数据类型分为简单类型简单类型、字符字符串类型串类型、结构类型结构类型、指针类型指针类型、过程与函数类型过程与函数类型和和可变类型可变类型等。等

19、。一、有序数据类型一、有序数据类型 有序数据类型定义的是取值有序的数据集。其特点有序数据类型定义的是取值有序的数据集。其特点是:数据的分布是离散的;除了第一个元素外,其是:数据的分布是离散的;除了第一个元素外,其他任何元素都有一个前驱元素;除了最后一个元素,他任何元素都有一个前驱元素;除了最后一个元素,其他任何元素都有一个后继元素。其他任何元素都有一个后继元素。 Object PascalObject Pascal提供的有序数据类型有:提供的有序数据类型有:整型整型、字符字符型型、布尔型布尔型、枚举型枚举型和和子界型子界型等五种类型。等五种类型。 常用的有序数据操作函数有:常用的有序数据操作函

20、数有:ord、prec、succ、high、low;常用过程有:;常用过程有:inc、dec。1. 1. 整型整型(1 1)存储格式和取值范围)存储格式和取值范围 整型仅表示整型仅表示整数整数的一个子集,通用的整数数据类型的一个子集,通用的整数数据类型包括包括IntegerInteger和和CardinalCardinal,其它基本的整型包括其它基本的整型包括ShortintShortint、SmallintSmallint、LongintLongint、Int64Int64、ByteByte、WordWord和和LongwordLongword。(2 2)运算符运算符算术运算符:、算术运算符

21、:、- -、* *、divdiv(整除)、(整除)、modmod(取(取模),若参加算术运算的两个数都是整型数据,则模),若参加算术运算的两个数都是整型数据,则运算结果也是整型。运算结果也是整型。关系运算符关系运算符:= =、=、 、=、 关系运算的结果是布尔型,即取关系运算的结果是布尔型,即取TrueTrue或或FalseFalse值。值。例如:例如:5=55=5的值为的值为TrueTrue;5555的值为的值为FalseFalse。正负号运算符正负号运算符:+ +、- - 与加、减运算不同,此为单目运算。如与加、减运算不同,此为单目运算。如-a-a,求运算元,求运算元的负值。的负值。整型数

22、的逻辑运算符整型数的逻辑运算符:notnot、andand、oror、xorxor 整数转换为二进制数后逐位进行逻辑运算。其中整数转换为二进制数后逐位进行逻辑运算。其中notnot是单目运算符是单目运算符。例:例: 00000000 01010110 (86)10 and 00000101 00010100 (1300)10 00000000 00010100 (20)10左、右移位运算符:左、右移位运算符:ShlShl、ShrShr Shl Shl运算符的运算格式运算符的运算格式为为A ShlA Shl n n,表示将整型数,表示将整型数A A的的各位向左移各位向左移n n位,高位溢出,低位

23、位,高位溢出,低位补补0 0。ShrShr运算符的运算符的运算格式为运算格式为A ShrA Shr n n,表示表示将整型数将整型数A A的各位向右的各位向右移移n n位位,低位溢出,高位低位溢出,高位补补0 0。如:如:00000000 0101011000000000 01010110左移左移2 2位后,为位后,为00000001 00000001 0101100001011000,即:表达式,即:表达式86 86 ShlShl 2 2的值为的值为344344。例例2-32-3:交换一个字符序号值的高交换一个字符序号值的高4 4位和低位和低4 4位。位。(3 3)标准函数和标准过程)标准函

24、数和标准过程 绝对值函数绝对值函数Abs(x)Abs(x),函数值为,函数值为| |x|x|。例如:例如:Abs(-100)Abs(-100)的值为的值为100100,Abs(99)Abs(99)的值为的值为9999。平方函数平方函数SqrSqr(x)(x),函数值为,函数值为x x2 2。例如例如:SqrSqr(-4)(-4)的值为的值为1616,SqrSqr(3)(3)的值为的值为9 9。奇函数奇函数Odd(x)Odd(x),函数的结果为布尔型。当,函数的结果为布尔型。当x x为奇数时,为奇数时,函数值为函数值为TrueTrue;当;当x x为偶数时,函数值为为偶数时,函数值为FalseF

25、alse。例如:例如:Odd(3)Odd(3)的值为的值为TrueTrue,Odd(4)Odd(4)的值为的值为FalseFalse。字符函数字符函数ChrChr(x)(x),函数返回,函数返回ASCIIASCII码值为码值为x x的字符。的字符。例如:例如:ChrChr(65)(65)的值为的值为AA。 取高、低字节函数取高、低字节函数Hi(x)Hi(x)和和Lo(x)Lo(x),分别返回整型数,分别返回整型数x x的高字节和低字节,结果是的高字节和低字节,结果是ByteByte类型。类型。例如:例如:Hi($1234)Hi($1234)的值为的值为$12$12,Lo($1234)Lo($1

26、234)的值为的值为$34$34。交换函数交换函数Swap(x)Swap(x),将整型数,将整型数x x的高字节和低字节进的高字节和低字节进行交换,交换后的两个字节重新组成一个整数作为行交换,交换后的两个字节重新组成一个整数作为函数返回值。函数返回值。例如,例如,Swap($1234)Swap($1234)的值为的值为$3412$3412。 其他操作函数或过程:其他操作函数或过程:ordord、precprec、succsucc、highhigh、lowlow、incinc、dec dec 。例:有序数操作函数例:有序数操作函数2. 2. 字符型字符型 基本的字符型有基本的字符型有AnsiCh

27、arAnsiChar和和WideCharWideChar两种。两种。AnsiCharAnsiChar类类型的数据是一个字节(型的数据是一个字节(8 8位)编码的,与位)编码的,与扩充的扩充的ANSIANSI字符集对应字符集对应。而。而WideCharWideChar是是两个字节两个字节(1616位)编码的,与位)编码的,与UnicodeUnicode字符集对应,字符集对应,UnicodeUnicode字符集的前字符集的前256256个字符和个字符和ANSIANSI字符集相同。字符集相同。 通用字符类型是通用字符类型是CharChar,和,和AnsiCharAnsiChar相当。相当。(1 1)

28、取值范围)取值范围 (2 2)运算符)运算符 Object PascalObject Pascal语言允许用语言允许用= =、 、=、 、=六六个关系运算符对字符型数据进行运算操作。个关系运算符对字符型数据进行运算操作。 用字符序号的大小关系来定义相应字符的大小关系,用字符序号的大小关系来定义相应字符的大小关系,因此,所有的字符都可以进行比较(因此,所有的字符都可以进行比较(即关系运算)。即关系运算)。AB AB / / 结果为结果为TrueTrueba ba / / 结果为结果为False False 12 1False / TrueFalse / 结果为结果为TrueTrue逻辑运算符:逻

29、辑运算符:notnot(非)、(非)、andand(与)、(与)、oror(或)、(或)、xorxor(异或)。(异或)。 (3 3)标准函数)标准函数 例:有序数的操作函数例:有序数的操作函数4. 4. 枚举类型(枚举类型(enumeratedenumerated) 枚举类型是一个以标识符标识的有序整型常数的集合,枚举类型是一个以标识符标识的有序整型常数的集合,这些常数是该类型变量可取的合法值。声明枚举类型这些常数是该类型变量可取的合法值。声明枚举类型的语法如下:的语法如下: typetype typeName = (val1, ., valn typeName = (val1, ., va

30、ln) ); 其中其中typeNametypeName和和vavalili是有效的标识符,是有效的标识符, typeNametypeName 是是枚举类型,枚举类型,valivali是枚举量的标识符。是枚举量的标识符。例例:type TWeekDay = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday); 这些枚举量不能再定义为其它标识符。当用这些枚举量不能再定义为其它标识符。当用OrdOrd函数函数分别对其取值时,将得到分别对其取值时,将得到0 0、1 1、2 2、3 3、4 4、5 5、6 6。 在默认的情况下

31、,枚举值是从在默认的情况下,枚举值是从0 0开始的有序整数,在开始的有序整数,在实际编程的过程中,可以越过这种限制,可以根据实际编程的过程中,可以越过这种限制,可以根据需要指定标识符表中的值。例如:需要指定标识符表中的值。例如:type type MyColorMyColor = (red=2,green=6,white=7,black=9); = (red=2,green=6,white=7,black=9);一些枚举类型的值只有两种可能的值,如下声明:一些枚举类型的值只有两种可能的值,如下声明:type SampleEnum = (val1, val2, val3 = 0);type Sa

32、mpleEnum = (val1, val2, val3 = 0);SampleEnumSampleEnum中中val1val1、val2val2、val3val3的的OrdOrd函数值分别为:函数值分别为:0 0、1 1、0 0,即,即Ord(val1)Ord(val1)与与OrdOrd(val3)(val3)相同。相同。枚举量的取值范围为枚举量的取值范围为0 0255255。例例2-4:匿名访问枚举量:匿名访问枚举量 5. 5. 子界类型(子界类型(SubrangeSubrange)声明形式如下:声明形式如下:typetype 类型标识符类型标识符 = = 上界值上界值 . . 下界值下界

33、值; ; 其中上、下界值是某种已定义的有序类型的值,上界其中上、下界值是某种已定义的有序类型的值,上界值小于或等于下界值,如:值小于或等于下界值,如:type type TAgeTAge=18.60=18.60; / / TAgeTAge是一个整型的子界类型是一个整型的子界类型typetypeCaps = A.Z; / Caps = A.Z; / CapsCaps是一个字符型的子界类是一个字符型的子界类型型 子界类型变量的值是有序的,对其进行增子界类型变量的值是有序的,对其进行增/ /减量操作都减量操作都要在其定义范围内。要在其定义范围内。二、实数类型二、实数类型 1. 1. 存储格式和取值范

34、围存储格式和取值范围Object PascalObject Pascal语言中用语言中用RealReal标识通标识通用实型。基本实型用实型。基本实型有有6 6种:种:SingleSingle(单精度)、(单精度)、DoubleDouble(双精度)、(双精度)、ExtendedExtended(扩展型)、(扩展型)、Real48Real48、CompComp(十进制组装(十进制组装型)和型)和CurrencyCurrency(货币型)。(货币型)。RealReal与与DoubleDouble实际上实际上是相同的类型。是相同的类型。2. 2. 运算符运算符(1 1)算术运算符:、)算术运算符:、

35、- -、* *、/ /在使用这几个运算符时,只要有一个运算对象是实型,在使用这几个运算符时,只要有一个运算对象是实型,则运算结果也是实型。其中,则运算结果也是实型。其中,“/”/”称为实数除,即称为实数除,即使两个整数相除,其结果也是实型。使两个整数相除,其结果也是实型。(2 2)关系运算符:)关系运算符:= =、=、 、=、 ”与与“”运运算时应谨慎,因为实型类型的表示是近似值,相近算时应谨慎,因为实型类型的表示是近似值,相近的实数的存储表示可能是一样的。可采用差的绝对的实数的存储表示可能是一样的。可采用差的绝对值与一任意小的数比较。值与一任意小的数比较。例:例:X=YX=Y运算应当写成运算

36、应当写成Abs(X-Y)1e-6Abs(X-Y)1e-6;而;而XYXY运算应运算应写成写成Abs(X-Y)1e-6Abs(X-Y)1e-6。 3. 3. 标准函数标准函数 (1 1)绝对值函数)绝对值函数Abs(x)Abs(x):函数值为:函数值为x x的绝对值。的绝对值。(2 2)平方函数平方函数SqrSqr(x)(x):函数值为:函数值为x x的的平方。平方。(3 3)正弦函数)正弦函数Sin(x)Sin(x):函数值为:函数值为x x的正弦,其中的正弦,其中x x的单的单位为弧度。位为弧度。(4 4)余弦函数)余弦函数CosCos(x)(x):函数值为:函数值为x x的余弦,其中的余弦

37、,其中x x的单的单位为弧度。位为弧度。(5 5)反正切函数)反正切函数ArctanArctan(x)(x):函数值为:函数值为x x的反正切,函的反正切,函数值的单位为弧度。数值的单位为弧度。(6 6)指数函数)指数函数Exp(x)Exp(x):函数值为指数:函数值为指数e ex x。(7 7)对数函数)对数函数In(x)In(x):函数值为:函数值为x x的自然对数。的自然对数。(8 8)平方根函数平方根函数SqrtSqrt(x)(x):函数值为:函数值为x x的平方根。的平方根。(9 9)舍入函数)舍入函数Round(x)Round(x):对实数:对实数x x作四舍五入,结果作四舍五入,

38、结果为整数。例如:为整数。例如:Round(5.6)Round(5.6)的值为的值为6 6,Round(-7.6) Round(-7.6) 的值为的值为-8-8。(1010)截尾取整函数)截尾取整函数TruncTrunc(x)(x):截去实数:截去实数x x的小数部分,的小数部分,结果为整数。例如:结果为整数。例如:TruncTrunc(-9.9)(-9.9)的值为的值为-9-9,TruncTrunc(7.8) (7.8) 的值为的值为7 7。(1111)取整函数)取整函数IntInt(x)(x):截去实数:截去实数x x的小数部分,返回的小数部分,返回整数部分。整数部分。(1212)取小数函

39、数)取小数函数FracFrac(x)(x):返回实数返回实数x x的小数部分,的小数部分,结果为实型。结果为实型。 三、三、日期时间类型日期时间类型 1. 1. 存储格式和取值范围存储格式和取值范围日期时间型日期时间型TDateTimeTDateTime在在Object PascalObject Pascal中实际是双精中实际是双精度浮点型(度浮点型(DoubleDouble);其原型是:);其原型是:TDateTime = Double;TDateTime = Double;TDate = TDateTime; TDate = TDateTime; TTime = TDateTimeTTim

40、e = TDateTime; ;Object PascalObject Pascal中规定:以中规定:以18991899年年1212月月3030日日12:0012:00时为时为准计为准计为0 0,每增加,每增加1 1天,日期时间类型数据增天,日期时间类型数据增1 1。因此,。因此,整数部分表示距离该日该时的天数。例:整数部分表示距离该日该时的天数。例:0 0 :18991899年年1212月月3030日日 12:00 12:00 2.75 2.75 :19001900年年1 1月月1 1日日 18:0018:002. 2. 运算符运算符Object PascalObject Pascal提供了

41、如下日期时间运算符:提供了如下日期时间运算符:(1 1)加减运算符:)加减运算符:+ +、- - D + ND + N、或、或D ND N计算某个日期之前或之后若干时间的日期。其中,计算某个日期之前或之后若干时间的日期。其中,D D是是日期时间型的数据,日期时间型的数据,N N是实数。表达式的值为日期时是实数。表达式的值为日期时间型数据。间型数据。 D1-D2D1-D2 计算两个日期时间的时间间隔。其中计算两个日期时间的时间间隔。其中D1D1、D2D2为日期为日期时间型数据,结果为实型数据。结果为负数则表示时间型数据,结果为实型数据。结果为负数则表示D1D1时间在时间在D2D2时间之前,否则相

42、反。时间之前,否则相反。 3. 3. 标准函数和过程标准函数和过程(1 1)Date()Date():函数返回系统当前日期,无参数,返回:函数返回系统当前日期,无参数,返回数据是数据是TDateTimeTDateTime型。型。(2 2)Time()Time():函数返回函数返回系统当前时间,无参数,返回系统当前时间,无参数,返回数据是数据是TDateTimeTDateTime型。型。(3 3)Now()Now():函数返回函数返回系统当前日期和时间,无参数,系统当前日期和时间,无参数,返回数据是返回数据是TDateTimeTDateTime型。型。(4 4)StrToDateStrToDat

43、e(日期字符串日期字符串) :字符串转换为日期:字符串转换为日期时间函数,返回数据是时间函数,返回数据是TDateTimeTDateTime型;型;StrToTimeStrToTime(时间字符串时间字符串):参数为时间串,返回数据:参数为时间串,返回数据是是TDateTimeTDateTime型;型; StrToDateTimeStrToDateTime(日期时间型串日期时间型串):参数为日期时间串,:参数为日期时间串,返回数据是返回数据是TDateTimeTDateTime型。如:型。如:StrToDateStrToDate(10/1/2004); (10/1/2004); StrToTi

44、me(12:50:24);StrToTime(12:50:24);StrToDateTimeStrToDateTime(10/1/2004 12:00:00);(10/1/2004 12:00:00);(5 5)取日期时间中的部分数据,以下函数的参数均为)取日期时间中的部分数据,以下函数的参数均为日期时间型日期时间型:DateofDateof( (参数参数) ):返回去掉时间后的日期(:返回去掉时间后的日期(TDateTimeTDateTime型);型);TimeofTimeof( (参数参数) ):返回去掉日期后的时间(:返回去掉日期后的时间(TDateTimeTDateTime型);型);

45、YearofYearof( (参数参数) ):返回日期的年份(:返回日期的年份(WordWord型);型);MonthofMonthof( (参数参数) ):返回日期的月份(:返回日期的月份(WordWord型);型);DayofDayof( (参数参数) ):返回日期的日号(:返回日期的日号(WordWord型);型);WeekofWeekof( (参数参数) ):返回日期在该年份是第几个星期,返:返回日期在该年份是第几个星期,返回回1 1到到5353之间的整数。之间的整数。(6 6)日期时间转换为字符串的函数,返回值为字符串,)日期时间转换为字符串的函数,返回值为字符串,如:如:TimeT

46、oStrTimeToStr( (参数参数) ):将时间数据转换为字符串返回;:将时间数据转换为字符串返回;DateToStrDateToStr( (参数参数) ):将日期数据转换为字符串返回;:将日期数据转换为字符串返回;DateTimeTostrDateTimeTostr( (参数参数) ) :将日期时间数据转换为字符:将日期时间数据转换为字符串返回。串返回。 此外,还有此外,还有HourofHourof、MinuteofMinuteof、SecondofSecondof、FormatDateTimeFormatDateTime等。等。 例例2-52-5:使用日期时间:使用日期时间2.4 2

47、.4 结构类型结构类型 结构类型结构类型是能够描述和扩展定义较复杂的数据的存储是能够描述和扩展定义较复杂的数据的存储类型,通过结构类型,程序中可以存储结构复杂数据。类型,通过结构类型,程序中可以存储结构复杂数据。 结构类型可通过将多种基本数据类型结合在一起,也结构类型可通过将多种基本数据类型结合在一起,也可以通过扩展预先定义的数据类型来得到。可以通过扩展预先定义的数据类型来得到。 结构数据类型有下面的几类:集合类型(结构数据类型有下面的几类:集合类型(setset)、数组)、数组类型(类型(arrayarray)、记录类型()、记录类型(recordrecord)、文件类型)、文件类型(fil

48、efile)、类类型()、类类型(classclass)、类引用类型()、类引用类型(class class referencereference)、接口类型()、接口类型(interfaceinterface)。)。 在使用结构类型时,在使用结构类型时,Object PascalObject Pascal语言提供了一种压语言提供了一种压缩机制,可以最大限度地节省结构类型的存储空间。缩机制,可以最大限度地节省结构类型的存储空间。在声明结构类型时引用保留字在声明结构类型时引用保留字packedpacked,数据将以压缩,数据将以压缩方式存储,但是,这样延缓了数据的访问速度,还会方式存储,但是,这

49、样延缓了数据的访问速度,还会产生类型的兼容性的问题。产生类型的兼容性的问题。一、一、集合类型集合类型 格式格式:set of set of baseTypebaseType; ; 其中其中baseTypebaseType是集合中元素的类型或值域是集合中元素的类型或值域。Object PascalObject Pascal中规定了基类型只能是不超过中规定了基类型只能是不超过256256个有个有序值的集合,集合的元素的序数值必须序值的集合,集合的元素的序数值必须介于介于0 0和和255255之之间。间。 typetypeTSetATSetA = set of Integer; = set of I

50、nteger; / / 错误错误TSetBTSetB = set of 255.300; = set of 255.300; / / 错误错误TSetC = set of WideCharTSetC = set of WideChar; / ; / 错误错误TsetDTsetD = set of 10.50; = set of 10.50; / / 正确正确TsetETsetE= set of char; = set of char; / / 正确正确1. 1. 集合的并、交、差运算集合的并、交、差运算集合运算有:交(集合运算有:交(* *)、并()、并(+ +)、差()、差(- -),运算对

51、),运算对象是两个相同类型的集合,运算结果也是集合。象是两个相同类型的集合,运算结果也是集合。如:如:x x为为1,3,51,3,5,y y为为3,4,53,4,5,则,则x x* *y y 为为3,53,5,x+yx+y为为1,3,4,51,3,4,5,x-yx-y为为11。2. 2. 集合的关系运算集合的关系运算(1 1)运算符)运算符= =、判断两个集合相同或不相同。如:判断两个集合相同或不相同。如:表达式表达式 1, 3, 5 = 3, 1, 5 1, 3, 5 = 3, 1, 5 的值为的值为TrueTrue;(2 2)= ( (包含包含) )、= 3 1,3 = 3 的值为的值为T

52、rueTrue;(3 3)属于运算)属于运算inin,如:表达式,如:表达式 3 in 3,5 3 in 3,5 的值为的值为TrueTrue。二、数组类型二、数组类型 数组类型数据表示的是同种类型数据的集合。数组类型的数据是数组类型数据表示的是同种类型数据的集合。数组类型的数据是排列有序的,每个数据元素排列有序的,每个数据元素都有一个唯一的都有一个唯一的索引号。与集合类型索引号。与集合类型不同的是,数组类型的数据可以重复。数组类型分为静态数组和不同的是,数组类型的数据可以重复。数组类型分为静态数组和动态数组。动态数组。1. 1. 静态数组:静态数组:在声明时指定了数组的大小。在声明时指定了数

53、组的大小。定义静态数组的语法形式如下:定义静态数组的语法形式如下:type type 数组类型标识符号数组类型标识符号= =array indexType1, ., indexTypen of array indexType1, ., indexTypen of baseTypebaseType; ;其中,其中,indexTypeindexType是有序类型,是有序类型,indexTypeindexType通常是以通常是以IntegerInteger为子为子界的,也可以是其它有序类型的子界;界的,也可以是其它有序类型的子界;baseTypebaseType声明元素的数声明元素的数据类型;数组由

54、同一类型的数据元素组成。据类型;数组由同一类型的数据元素组成。例:例:type type Tarr1 = Array 1.10 of Integer; Tarr1 = Array 1.10 of Integer; Tarr2 = Array 1.3,1.5 of Char; Tarr2 = Array 1.3,1.5 of Char; var var a:Tarr1; a:Tarr1; / / 声明变量声明变量a a是是Tarr1Tarr1类型数组类型数组b:Tarr2; b:Tarr2; / / 声明变量声明变量b b是是Tarr2Tarr2类型数组类型数组也可以声明变量时直接定义数组的类型

55、,如:也可以声明变量时直接定义数组的类型,如:varvar a: Array 1.10 of Integer; a: Array 1.10 of Integer;数组元素的访问是通过数组名后面加上方括号和下标数组元素的访问是通过数组名后面加上方括号和下标值来访问的。如:值来访问的。如:a1:=10;a1:=10;2. 2. 动态数组:在定义时并没有确定数组的大小或长度,动态数组:在定义时并没有确定数组的大小或长度,而是在访问之前用而是在访问之前用SetLengthSetLength过程为数组动态或重新过程为数组动态或重新分配其存储空间。分配其存储空间。定义动态数组的语法形式如下:定义动态数组的

56、语法形式如下:Var Var 数组类型标识符:数组类型标识符: array of array of baseTypebaseType; ;例如:例如:var var DynArrDynArr: array of Integer; array of Integer; 声明声明DynArrDynArr为元素是整型的动态数组。为元素是整型的动态数组。也可以先定义类型,再声明变量,如:也可以先定义类型,再声明变量,如:type type TdynIntArrTdynIntArr = array of integer; = array of integer;var DynArr:TdynIntArrva

57、r DynArr:TdynIntArr; ;语句语句SetLength(DynIntArrSetLength(DynIntArr,10); ,10); 为动态数组为动态数组DynIntArrDynIntArr分配分配1010个元素的存储空间,下标从个元素的存储空间,下标从0 0到到9 9(动(动态数组的下标总是从态数组的下标总是从0 0开始)。如要释放动态数组占用开始)。如要释放动态数组占用的存储空间,可以将的存储空间,可以将nilnil赋值给该动态数组变量,或调赋值给该动态数组变量,或调用过程用过程SetLength(DyIntArrSetLength(DyIntArr,0),0)实现实现。

58、 多维动态数组多维动态数组通过使用嵌套的通过使用嵌套的“array of .”array of .”结构结构实实现,例如:现,例如:typetype TGrid TGrid = array of array of String; = array of array of String; / / 定义二维动态字符串数组类型定义二维动态字符串数组类型TgridTgrid例例2-62-6:输出下三角的乘法表:输出下三角的乘法表三、字符串类型三、字符串类型 1. 1. 取值范围取值范围 字符串字符串是一个由字符组成的系列,是一个由字符组成的系列,AnsiStringAnsiString也称作也称作Lon

59、gStingLongSting,是多数情况下推荐使用的类是多数情况下推荐使用的类型型。各字符。各字符串类型可以混合串类型可以混合在赋值和表达式中,编译器将自动执在赋值和表达式中,编译器将自动执行转换。行转换。StringString型是字符串的通用类型。在默认的型是字符串的通用类型。在默认的$H+$H+状态,编译器将状态,编译器将StringString解释为解释为AnsiStringAnsiString,用,用$H-$H-编译指令可以指示编译器将编译指令可以指示编译器将StringString解释为解释为ShortStringShortString。 对字符串访问就像对数组的访问一样,如:对

60、字符串访问就像对数组的访问一样,如:strstr是字符是字符串变量,串变量,i i是整型表达式,则是整型表达式,则strstrii表示该字符串的表示该字符串的第第i i个字符。个字符。例例2-72-7:将字符串中的字符转换为大写:将字符串中的字符转换为大写。 对于通用字符串类型对于通用字符串类型StringString,在定义,在定义StringString型变量时型变量时可以可以指定其最大的长度指定其最大的长度(0 0255255),此时),此时StringString型被型被视为视为ShortStringShortString型。型。ShortStringShortString型不是以型不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论