子界与枚举类型

[复制链接]
发表于 2023-12-22 17:47:57 | 显示全部楼层 |阅读模式
Pascal有丰富的数据类型,在程序设计中有特殊而方便的应用。
类型定义的语法格式:
  type
  <标识符1>=<类型1>;
  <标识符2>=<类型2>;
  ……
  <标识符n>=<类型n>;
8.1子界与枚举
1.子界类型:
当某些变量的取值范围很具体时,可用子界类型,它更符合实际、便于查错和节省内存。
定义如下:
typeriqi=1..31;
    zimu='A'..'Z';
var day:riqi;
   ch1:zimu;
也可以直接定义:
   day:1..31;
   year:0..200;
   ch1:'A'..'Z';
8.2枚举类型:
通过预定义列出所有值的标识符来定义一个有序集合,这些值的次序和枚举类型说明中的标识符的次序是一致的。枚举类型的形式:
  (标识符1,……,标识符n)
  例如:
  typedaystype=(sunday,monday,tuesday,wednesday,thursday,friday,saturday)
  枚举元素只能是标识符,而不能是数值常量或字符常量。例如以下的定义是错误的:<
  typedaystype=('sun','mon','tue','wed','thu','fri','sat')
  枚举元素是标识符,不要把作为枚举元素的标识符视作变量名,它不能被赋值。同一个枚举元素不能出现在两个或两个以上的枚举类型定义中。例如以下的定义是错误的:
  type daytype1=(monday,tuesday);
  daytype2=(monday,wednesday);
  可以将枚举类型的定义和变量的定义结合在一起。例如:varamonday,tuesday,sunday)
  枚举类型属于顺序类型。根据定义类型时各枚举元素的排列顺序确定它们的序列,序列号从0开始。
  例如:已经定义daystype
  ord(sunday)=0,succ(sunday)=monday,pred(friday)=thursday
  但是枚举类型中的第一个元素没有前趋,最后一个元素没有后继。Turbo Pascal不允许直接读写枚举值,所以枚举值的输出常用case语句间接的输出。枚举值的输入,则要一一判断读入字符是否是枚举类型的标识符。若是才能赋给枚举变量,否则就会出错。
  例如:枚举值的输出
  case day of
  sunday:write('sunday');
  monday:write('monday');
  tuesday:write('tuesday');
  wednesday:write('wednesday');
  thursday:write('thursday');
  friday:write('friday');
  saturday:write('saturday');
  end;  

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表