level 1
嘿嘿嘿全民漂移
楼主
第八章 其它数据类型8.1 用户自定义类型8.1.1 用户自定义类型Turbo Pascal语言提供了丰富的数据类型,充分利用语言本身提供的各种类型,可扩大计算机的数据处理范围和处理能力。到目前为止我们已经学习标准类型(实型、整型、字符型、字符串型)、数组型、文件型,数据类型的分类请参考1.2.6章节。用户自定义类型包括子界型和枚举型。8.1.2 枚举类型及其应用我们经常会遇到类似如:每周组成数据信息仅由星期一到星期日这些数据构成,即星期一至星期日这些特定值的集合构成了每周的数据类型。具有这种特点的类型又称为枚举型。枚举类型由允许的所有枚举值构成。定义格式如下:TYPE <枚举类型标识符>=(<标识符>,<标识符>,...,<标识符>);VAR <枚举类型变量表>:<枚举类型标识符>;注意:(1)枚举值只能由字母开头的字母数字组合,枚举值不区分字母大小写。枚举值在所有枚举数型的定义中只能出现一次。 (2)枚举类型属有序类型,即每一个枚举值都有其对应的序号,编号从0开始,因此枚举值也可比较大小,可用于for循环中作递增或递减值,即循环变量可以是枚举型变量。 (3) 枚举型变量或枚举值不能在read、readln、write、 writeln语句中使用。例如:定义一种关于星期的枚举类型如下:type day=(sunday,monday,tuesday,wednesday,thursday,friday,saturday);var payday,firstday,today,tomorrow:day;说明:(1)day为用户自定义的枚举类型标识符,其中sunday, monday, tuesday, wednesday, thursday, friday, saturday称为枚举值,不区分大小写字母,即sunday与Sunday代表同一个值。 (2)每一个枚举值都有其对应的序号,即sunday对应序号为0,monday序号为1,....,saturday对应序号为6。如:ord(sunday)=0, pred(monday)=sunday,succ(sunday)=monday等,其中函数ord求序号,pred函数和succ函数分别求前序值和后序值。枚举值可比较大小,如:monday>sunday,结果为true。 (3)read(today);write(today);write(sunday)都是不允许的,即枚举型变量、枚举值是不能直执用read读语句或write写语句进行读写。例如:下面枚举型定义有错type 错误原因 t1=('a','b','c','d'); 不能用字符串常量,即不能加引号。 t2=(1,2,3,4); 必须要以字母开头。 t3=(sun,mon,tue,wed,sun); t4=(wed,thu,fri,sat);由于不能直接读和打印枚举值,所以我们通过case,if等语句实现对应输出。例8.1 :输入今天是星期几,打印出明天是星期几。program rzy8_1;type day=(sunday,monday,tuesday,wednesday,thursday,friday,saturday);var today,tomorrow:day; number:integer;function nextday(n:integer):string; var week:string; begin case n of 0:today:=sunday; 1:today:=monday; 2:today:=tuesday; 3:today:=wednesday; 4:today:=thursday; 5:today:=friday; 6:today:=saturday; end; if today=saturday then tomorrow:=sunday else tomorrow:=succ(today); case tomorrow of sunday:week:='sunday'; monday:week:='monday'; tuesday:week:='tuesday'; wednesday:week:='wednesday'; thursday:week:='thursday'; friday:week:='friday'; saturday:week:='saturday'; end; nextday:=week; end;begin write('enter today',#39,'s number(0--6):'); repeat readln(number); until (number>=0) and (number<=6); writeln('tomorrow is ',nextday(number));
2008年01月27日 07点01分
1