Pascal措施不只用于数值措置惩罚惩罚,还更广泛地用于措置惩罚惩罚非数值的数据。例如,性别、月份、星期几、颜色、单位名、学历、职业等。
?
格局: 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称为子界的上界;注意事项:
?