第六讲 枚举类型和子界类型.ppt_第1页
第六讲 枚举类型和子界类型.ppt_第2页
第六讲 枚举类型和子界类型.ppt_第3页
第六讲 枚举类型和子界类型.ppt_第4页
第六讲 枚举类型和子界类型.ppt_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

第六讲枚举类型和子界类型 数据是程序设计的一个重要内容 其重要特征 数据类型 确定了数据的取值范围以及所能参与的运算 Pascal数据类型 简单类型 构造类型 指针类型 标准类型 自定义类型 整型 实型 字符型 布尔 逻辑 型 枚举型 子界型 数组型 记录型 集合型 文件型 一 枚举类型 1 枚举类型的定义 用计算机来解决客观世界的问题时 需要用计算机程序的量来描述客观世界的问题 但有些问题很难用标准类型来描述 如一个星期的七天 一年的十二个月 颜色的类别等 为了说明这些非数值量的特征 Pascal语言提供了枚举类型 用枚举方法将该种类型的所有取值用标示符一一列出 如用 Monday 代表 星期一 用 Tuesday 代表 星期二 这种处理方式既简单又直观 用枚举的方法所定义的数据类型就称为枚举类型 枚举类型属于用户自定义类型 因此在程序的说明部分必须对类型进行定义 只有经过定以后 这种类型才能被使用 类型说明的关键字是type 类型标示符由用户自己决定 原则是以字母开头 后面跟以字母或数字 但注意不要使用Pascal保留字或标准标示符 如以 daytype 表示有关日期的数据类型名 可定义如下 typedaytype sun mon tue wed thu fri sat 可见 枚举类型定义的一般格式为 type 其中 给出了用户定义的枚举类型的名字 括号中的 称为枚举元素 它们构成了这种枚举类型的取值范围 又称 值域 需要注意的是后跟的是等号 定义了枚举类型后 就可以在变量说明部分定义相应的枚举类型的变量了 如 typedaytype sun mon tue wed thu fri sat colortype red yellow blue white vard1 d2 daytype c colortype 在类型说明部分 定义了两个枚举类型 daytype和colortype daytype的值域为sun mon tue wed thu fri sat共七个 colortype的值域为red yellow blue white共四个 在变量说明部分 定义了变量d1 d2为枚举类型daytype 它们的取值只限于类型daytype的值域 还定义了变量c为枚举类型colortype 它的取值只限于类型colortype的值域 以上类型定义和变量说明可合并在变量说明部分 即vard1 d2 sun mon tue wed thu fri sat c red yellow blue white 2 枚举类型数据的特点及应用 1 枚举元素只能是标示符 不能是数值常量 字符常量等其他任何数据类型 下列的定义是错误的 typemonthtype 1 2 3 4 5 6 7 8 9 10 11 12 colortype red yellow blue 还需注意的是 枚举元素是标示符 但不能当作变量名对其进行赋值 2 同一个枚举元素不能出现在两个或两个以上的枚举类型定义中 如下列的定义是错误的 typecolor1 red yellow blue white color2 black blue green 因为枚举元素blue既属与枚举类型color1 又属于枚举类型color2 枚举类型定义中通过列出所有值的标示符来定义一个有序集合 这些值的次序和枚举类型说明中的标示符的次序是一致的 且序号从0开始 变量说明如下 vard1 d2 sun mon tue wed thu fri sat 其中枚举值sun的序号为0 枚举值mon的序号为1 依此类推 枚举值sat的序号为6 同时 枚举值是可以有大小来区别的 关系式sunfri的值是false 用序号函数可以求出枚举值的序号 ord sun 0ord mon 1ord fri 5用succ和pred函数可以求出枚举值的后继和前趋 succ sun monsucc wed thupred wed tue当然 枚举类型中的第一个元素没有前趋 最后一个元素没有后继 可见 枚举值可以作为序号函数ord 前趋函数pred 和后继函数succ 的自变量 4 对枚举类型只能进行赋值运算和关系运算vard1 d2 sun mon tue wed thu fri sat c red yellow blue white 此时 在程序中允许出现以下语句 d1 sun d2 fri c blue ifd1 d2thenwrite thesameday elsewrite thedifferentday 可见 对枚举类型能进行赋值运算和关系运算 但下列的语句是错误的 mon 1 c sun read d1 d2 c write d1 d2 c writeln blue 错误分析 语句a 把枚举值当成了变量名 语句b 枚举值sun不属于枚举变量c的值域 语句c 枚举类型的变量不能用read或readln语句进行读值 语句d 枚举类型的变量值和枚举值不能通过write或writeln语句进行输出 write blue 中的blue只是用标是符表示的一个符号 并不会被输出 二 子界类型 1 子界类型的定义 定义变量a为整型的说明是 vara integer 此时 a的取值范围是 32768 32767 这是因为PC机中整数用2个字节存放 如果程序中变量a是用来存放人的年龄 则程序中出现于句a 10这在语法上是不错的 取值也没有超过规定 但人的年龄不可能是负数 为了解决这一问题 可在程序中加入一条判断来排除这一错误 除了加判断语句外 Pascal还提供了用户自定义类型 子界类型 用来对某些变量的值域作一些具体的规定 如 typeagetype 1 150 chtype a z 在这里 定义了两个子界类型 子界类型agetype的值域为1至150的整数 子界类型chtype的值域为字符型中的 a 至 z 对于正型integer 可以这样理解 typeinteger 32768 32767 可见 子界类型定义的一般格式为 type 其中常量1称作下界 常量2称作上界 且上界必须大于下界 下界和上界可以是整型 字符型 布尔型 枚举型等顺序型的两个常量 但必须是同一种顺序类型 该顺序类型称为子届类型的 基类型 与枚举类型一样 定义了子界类型后 就可以定义子界类型的变量了 如 typeagetype 1 150 chtype a z vara1 a2 agetype ch chtype 定义了a1 a2为子界类型agetype的两个变量 ch为子界类型chtype的变量 也可以将类型定义与变量定义合并起来在变量说明中进行定义 vara1 a2 1 150 ch a z 请看 typeage 1 150 month 1 12 letter a z day sun mon tue wed thu fri sat workday mon fri vara1 a2 age ch letter m 1 12 t1 t2 workday 子界类型的基类性必须是顺序类型 下面的定义是错误的 vark 3 5 4 5 2 子界类型数据的特点及应用 1 对积类型适用的各种运算 均适用于该子界类型对于前面例子中的a1 a2是子界类型的变量 而该子界类型的基类性为整型 因此变量a1 a2可参与整型数据的一切运算 同理 变量ch可参与字符型数据的一切运算 变量t1 t2可参与枚举类型数据的运算 如 a1 100div5 a2 a1 20 ch pred e t1 tue t2 pred t1 需注意的是 子界类型的变量能否用read write直接进行输入和输出 取决于该子界类型的基类性 对于基类行为枚举类型的变量t1 t2就不能用read write直接进行输入和输出 2 在同一程序中 具有相同基类型的不同子界类型的数据 可以混合运算typeatype 1 20 btype

温馨提示

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

评论

0/150

提交评论