本章要点:
枚举类型的定义及使用
子界类型的定义及使用
集合类型的定义及使用
记录类型的定义及使用
面向对象程序设计
第6章自定义类型
枚举类型
Object Pascal有五种标准数据类型:整型(Integer)、实型(Real)、字符型(Character)、字符串型(String)和布尔型(Boolean)。这些数据类型无需声明,即可在程序中直接使用。为了满足用户的需要,Object Pascal还允许用户使用自定义的数据类型。自定义的数据类型,属于高级数据类型。
Object Pascal高级数据类型在使用之前必须首先使用类型定义语句进行定义。经过定义后的高级数据类型就可在程序代码中使用。其用法与常用的整型、字符串型用法相同。
常用的高级数据类型有枚举类型、子界类型、集合类型及记录类型。
枚举类型的定义
在处理实际问题过程中常用到的数据取值可能总是有限的几个值,例如学生成绩等级有优秀、良好、及格、不及格;处理这一类数据时可以用数值或字符串来表示,比如用“1”表示优秀,“2”表示良好。利用数值表示此类数据不直观,容易出错,利用字符串表示不方便处理,占用内存较多。为此,Object Pascal提供了枚举类型用于处理这一类数据。
枚举类型的定义
枚举类型的定义格式如下:
type
<枚举类型名称>=(<标识符1>,<标识符2>,…,<标识符n>);
<枚举类型名称>是用户自定义的枚举类型的名称。<标识符>表示该类型数据中的元素,圆括号中列出了该类型数据的所有取值,这些取值又称为枚举常量。每个枚举常量必须是标识符,不能是其他任何数据类型。枚举常量不允许在同一数据类型定义中重复出现,也不允许同时在不同的枚举类型定义中出现。
例如可以定义一个Color枚举类型:
type
color=(Red,Yellow,Blue,White,Black);
该枚举类型名为color,其中包括五个枚举常量:Red、Yellow、Blue、White、Black。
枚举类型变量的声明与其他类型变量的声明完全相同。如下面的代码声明了一个枚举类型color的变量c1,c2:
var c1,c2 : color;
声明了一个枚举类型变量后可以给它赋值,但必须注意的是只能将枚举类型中定义的枚举常量赋值给它,
则会出现错误。
枚举类型的运算(1)
从本质上分析,枚举类型实际上就是一个数据取值结果的集合。用枚举常量表示使程序可理解性加强,但与集合不同的是每个枚举常量对应一个序数(整数),利用序数可以方便地对枚举类型数据进行计算。
使用序数函数
Object Pascal规定,在枚举类型定义语句中的每一个枚举常量都与唯一的一个序数相对应。对于一个有n个枚举常量的枚举类型,其中的枚举常量从左到右依次对应序数为0~n-1。使用序数函数Ord可以得到每个枚举常量所对应的序数,使用前趋函数Pred()返回数据的前趋值,()返回数据的后继值,使用首序数函数Low()返回序数类型的数据中序数最小的一个数据,使用末序数函数High()返回序数类型的数据中序数最大的一个数据。
0 1 2 3 4
枚举类型的运算(2)
type
color=(Red, Yellow,Blue,White,Black);
0 1 2 3 4
在下面的定义中:
枚举常量的序数依次为0~4,Ord(Red)的值为0,Pred(Blue)的值为Yellow,(Blue) 的值为White,Low(Color) 的值为Red,High(Color) 的值为Black。
注意:不要对第一个序数的求前趋和对最后一个序数求后继。
2. 关系运算
由于每个枚举常量对应唯一一个序数,因此可以在枚举常量之间进行比较。
比较规则是:按枚举值的序数进行比较,序数大者较大。对应上述Color类型定义中,Blue>Yellow的值为True。
枚举类型的使用(1)
(1)对各枚举常量按常量进行处理,不能对它们进行赋值,也不能再把它定义为其他类型的变量。
(2)定义了一个枚举类型的变量后,可以将枚举常量赋值给该变量,不能将枚举常量之外的任何值赋予该枚举变量,也不能利用序数来赋值。
(3)可以指定枚举常量的序数。缺省情况下,枚举值的序号从0开始,并且接下来的序列对应类型声明中相应的标识符。可以通过对部分或全部枚举值明确指定序号来忽略缺省序号。
枚举类型在定义后方可在程序中使用,枚举类型的使用与基本数据类型有相似之处,但对枚举类型的使用有以下几点说明。
【例6-1】口袋中有红、黄、蓝、黑、白五种颜色的小球若干(各种颜色小球数大于1),每次从口袋中依次取出三个小球,利用枚举类型编
06 自定义类型 来自淘豆网m.daumloan.com转载请标明出处.