第6章自定义类型 本章要点: 区枚举类型的定义及使用 回子界类型的定义及使用 区集合类型的定义及使用 区记录类型的定义及使用 区面向对象程序设计
本章要点: 枚举类型的定义及使用 子界类型的定义及使用 集合类型的定义及使用 记录类型的定义及使用 面向对象程序设计 第6章 自定义类型
61枚举类型 Object Pasca有五种标准数据类型:整型( Integer)、实型 (Rea)、字符型( Character)、字符串型( String)和布尔型 ( Boolean)。这些数据类型无需声明,即可在程序中直接使用。为了满 足用户的需要, Object Pascal还允许用户使用自定义的数据类型。自定 义的数据类型,属于高级数据类型 Object Pascal高级数据类型在使用之前必须首先使用类型定义语句 进行定义。经过定义后的高级数据类型就可在程序代码中使用。其用法 与常用的整型、字符串型用法相同。 常用的高级数据类型有枚举类型、子界类型、集合类型及记录类型 6.1.1枚举类型的定义 在处理实际问题过程中常用到的数据取值可能总是有限的几个值, 例如学生成绩等级有优秀、良好、及格、不及格;处理这一类数据时 可以用数值或字符串来表示,比如用“1”表示优秀,“2”表示良好。利 用数值表示此类数据不直观,容易出错,利用字符串表示不方便处理, 占用内存较多。为此, Object Pascal提供了枚举类型用于处理这一类 数据。 Inprise Dephi
6.1 枚举类型 Object Pascal有五种标准数据类型:整型(Integer)、实型 (Real)、字符型(Character)、字符串型(String)和布尔型 (Boolean)。这些数据类型无需声明,即可在程序中直接使用。为了满 足用户的需要,Object Pascal还允许用户使用自定义的数据类型。自定 义的数据类型,属于高级数据类型。 Object Pascal高级数据类型在使用之前必须首先使用类型定义语句 进行定义。经过定义后的高级数据类型就可在程序代码中使用。其用法 与常用的整型、字符串型用法相同。 常用的高级数据类型有枚举类型、子界类型、集合类型及记录类型。 6.1.1 枚举类型的定义 在处理实际问题过程中常用到的数据取值可能总是有限的几个值, 例如学生成绩等级有优秀、良好、及格、不及格;处理这一类数据时 可以用数值或字符串来表示,比如用“1”表示优秀,“2”表示良好。利 用数值表示此类数据不直观,容易出错,利用字符串表示不方便处理, 占用内存较多。为此,Object Pascal提供了枚举类型用于处理这一类 数据
6.1.1枚举类型的定义 枚举类型的定义格式如下: type <枚举类型名称>=(<标识符1>,<标识符2>,…,<标识符n>); 枚举类型名称>是用户自定义的枚举类型的名称。<标识符>表示该 类型数据中的元素,圆括号中列出了该类型数据的所有取值,这些取值 又称为枚举常量。每个枚举常量必须是标识符,不能是其他任何数据类 型。枚举常量不允许在同一数据类型定义中重复出现,也不允许同时在 不同的枚举类型定义中出现。 例如可以定义一个Colo枚举类型: ype color=(Red, Yellow, Blue, White, Black) 该枚举类型名为 color,其中包括五个枚举常量:Red、 Yellow Blue、 White、Back。 枚举类型变量的声明与其他类型变量的声明完全相同。如下面的代 码声明了一个枚举类型 color的变量c1,c2: var c1, C2: color; 声明了一个枚举类型变量后可以给它赋值,但必须注意的是只能将 枚举类型中定义的枚举常量赋值给它 则会出现错误 Inprise Dephi
6.1.1 枚举类型的定义 枚举类型的定义格式如下: 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; 声明了一个枚举类型变量后可以给它赋值,但必须注意的是只能将 枚举类型中定义的枚举常量赋值给它, 则会出现错误
612枚举类型的运算(1) 从本质上分析,枚举类型实际上就是一个数据取值结果的集合。用枚举 常量表示使程序可理解性加强,但与集合不同的是每个枚举常量对应一个序 数(整数),利用序数可以方便地对枚举类型数据进行计算 1.使用序数函数 Object Pasca规定,在枚举类型定义语句中的每一个枚举常量都与唯 的一个序数相对应。对于一个有n个枚举常量的枚举类型,其中的枚举常 量从左到右依次对应序数为Q~n-1。2使屈廢墩数函数Ord可以得到每个枚举 常量所对应的序数,使用前趋函数 Predo返回数据的前趋值,使用后继函 数SucO返回数据的后继值,使用首序数函数LoWQ返回序数类型的数据 中序数最小的一个数据,使用末序数函数Hgh0返回序数类型的数据中序 数最大的一个数据。 Inprise Dephi
6.1.2 枚举类型的运算(1) 从本质上分析,枚举类型实际上就是一个数据取值结果的集合。用枚举 常量表示使程序可理解性加强,但与集合不同的是每个枚举常量对应一个序 数(整数),利用序数可以方便地对枚举类型数据进行计算。 1. 使用序数函数 Object Pascal规定,在枚举类型定义语句中的每一个枚举常量都与唯一 的一个序数相对应。对于一个有n个枚举常量的枚举类型,其中的枚举常 量从左到右依次对应序数为0~n-1。使用序数函数Ord可以得到每个枚举 常量所对应的序数,使用前趋函数Pred()返回数据的前趋值,使用后继函 数Succ()返回数据的后继值,使用首序数函数Low()返回序数类型的数据 中序数最小的一个数据,使用末序数函数High()返回序数类型的数据中序 数最大的一个数据。 0 1 2 3 4
612枚举类型的运算(2) 在下面的定义中:tYpe color=(red Yellow, blue White black)i 234 枚举常量的序数依次为0~4,Oro(Red)的值为0, Pred(blue)的值为 Yellow, Succ(Blue)的值为 White, LoW(Color)的值为Red, High(Color))的值为BaK 注意:不要对第一个序数的求前趋和对最后一个序数求后继 2关系运算 由于每个枚举常量对应唯一一个序数,因此可以在枚举常量之间 进行比较。 比较规则是:按枚举值的序数进行比较,序数大者较大。对应上 述Colo类型定义中,Bue> Yellow的值为True。 Inprise Dephi
6.1.2 枚举类型的运算(2) type color=(Red, Yellow,Blue,White,Black); 0 1 2 3 4 在下面的定义中: 枚举常量的序数依次为0~4,Ord(Red)的值为0,Pred(Blue)的值为Yellow, Succ(Blue) 的值为White,Low(Color) 的值为Red,High(Color) 的值为Black。 注意:不要对第一个序数的求前趋和对最后一个序数求后继。 2. 关系运算 由于每个枚举常量对应唯一一个序数,因此可以在枚举常量之间 进行比较。 比较规则是:按枚举值的序数进行比较,序数大者较大。对应上 述Color类型定义中,Blue>Yellow的值为True