9); 枚举类型属于顺序类型 根据定义类型时各枚举元素的排列顺序确定它们的序号

时间:2021-09-18 03:24:05

  Pascal措施不只用于数值措置惩罚惩罚,还更广泛地用于措置惩罚惩罚非数值的数据。例如,性别、月份、星期几、颜色、单位名、学历、职业等。
?

1. 枚举类型的界说

格局: type 枚举类型标识符=(标识符1,标识符2,…,标识符n)

2. 枚举类型特点

枚举元素只能是标识符; 界说枚举类型时列出的所有枚举元素组成了这种枚举类型的值域(取值范畴)。例如,下列类型界说是合法的:

type days=(sun,mon,tue,wed,thu,fri,sat); colors=(red,yellow,blue,white,black,green);

   而下列类型界说是错误的:

`Pascal type colortype=(‘red‘,‘yellow‘,‘blue‘,‘white‘); numbers=(1,3,5,7,9);

枚举类型属于挨次类型
按照界说类型时各枚举元素的摆列挨次确定它们的序号,且序号从0开始。例如,界说type days=(sun,mon,tue,wed,thu,fri,sat); 则, ord(sun)=0,ord(mon)=1,……,以此类推。枚举类型中的第一个元素无前趋,最后一个元素无后继。pred(sat)=fri; succ(sun)=mon; ord(sat)=6;

同一个枚举元素不能呈此刻两个或两个以上的枚举类型界说中。如下列界说是错误的:

type color1=(red,yellow,white); color2=(blue,red,black);  // 因为red属于枚举类型color1和 color2

枚举类型变量只能进行赋值运算和关系运算,不能进行算术运算和逻辑运算. 在枚举元素对照时,实际上是对其序号的对照。
例如界说如下:

type days=(sun,mon,tue,wed,thu,fri,sat);   colors=(red,yellow,blue,white,black,green); var color:colors;    weekday:days;  //则下面语句是合法的:  weekday:=mon;  if weekday=sun then write(‘rest‘);  //而下面语句是不同法的: mon:=1; //错把枚举值当成变量名; weekday:=blue; //枚举值blue不属于枚举变量weekday的值域; read(color); //枚举类型变量 不能用读语句进行赋值; write(weekday); writeln(blue);//不能通过写语句输出枚举类型的变量值和枚举值。

可以把变量的说明与类型的界说合并在一起,如:

  var    holiday,workday:(sun,mon,tue,wed,thu,fri,sat);     color:(red,yellow,blue,white,black,green);

对枚举数据的输入与输出可通过间接方法进行。输入时,一般可输入一个代码,通过措施进行转换,输出时,也只是打印出与枚举元素相对应的字符串。这在后面的例题中将有使用示例。 3. 应用实例

例1、输入今天是星期几的序号,输出明天是星期几的英文单词(星期天序号为0)。

  type weekday=(sun,mon,tue,wed,thu,fri,sat);    var i : integer;      today,tomorrow : weekday;   begin    writeln(‘What date is it‘); readln(i);    case i of { 按照输入转换成枚举型 }     0:today:=sun;     1:today:=mon;     2:today:=tue;     3:today:=wed;     4:today:=thu;     5:today:=fri;     6:today:=sat;    end;    if (today=sat) then tomorrow:=sun else tomorrow:=succ(today);    write(‘The tomorrow is ‘);    case tomorrow of     sun:writeln(‘sunday‘);     mon:writeln(‘monday‘);     tue:writeln(‘tuesday‘);     wed:writeln(‘wednesay‘);     thu:writeln(‘thursday‘);     fri:writeln(‘friday‘);     sat:writeln(‘saturday‘);    end;   end.

PS: 枚举类型是一种有序类型,所以枚举类型的变量可以作为循环变量。

子界类型

如果我们界说一个变量为integer型,那么它的取值范畴一般为-32768~32767。而事实上,每个措施中所用的变量的值都有一个确定的范畴。 例如,人的春秋一般为1到120岁,一年中的月数为1到12月,一月中的天数为1到31天等等。

如果能在措施中对所用的变量的值域作具体规定,就便于查抄出那些不同法的数据,这就能更好地保证措施运行的正确性且在必然水平上节省内存空间。

子界类型能很好解决上面的问题。别的,在数组的界说中,常用到子界类型,以规定数组下标的范畴。

1. 界说格局

type 子界类型标识符=常量1..常量2

常量1称为子界的下界,常量2称为子界的上界;

注意事项:
?