资源描述:
《高级数据类型》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、5种标准的数据类型整型、实型、字符型、字符串型、布尔型高级数据类型枚举、子界、集合、记录Delphi枚举类型Pascal程序不仅用于数值处理,还更广泛地用于处理非数值的数据。例如,性别、月份、星期几、颜色、单位名、学历、职业等。1、枚举类型的定义格式:type枚举类型标识符二(标识符1,标识符2,…,标识符n)2、枚举类型数据特点①枚举元素只能是标识符;例如,下列类型定义是合法的:typedays=(sun,mon,tuc,wed,thu,fri,sat);colors=(red,yellow,blue,white
2、,black,green);而下列类型定义是错误的:typecolortype=(,red','yellow','blue','white');numbers二(1,3,5,7,9);定义枚举类型时列出的所有枚举元素构成了这种枚举类型的值域(取值范围)。②枚举类型属于顺序类型根据定义类型时各枚举元素的排列顺序确定它们的序号,且序号从0开始。例女口,定义typedays=(sun,mon,tue,wed,thu,fri,sat);则,ord(sun)=0,ord(mon)=1,,以此类推。枚举类型中的第一个元素无前趋
3、,最后一个元素无后继。pred(sat)二fri;succ(sun)=mon;ord(sat)=6;③同一个枚举元素不能出现在两个或两个以上的枚举类型定义中。如下列定义是错误的:typecolor1=(red,yellow,white);color2=(blue,red,black);因为red属于枚举类型colorl和color2④枚举类型变量只能进行赋值运算和关系运算,不能进行算术运算和逻辑运算。在枚举元素比较时,实际上是对其序号的比较。例如定义如K:typedays=(sun,mon,tue,wed,thu,
4、fri,sat);colors=(rcd,yellow,blue,white,black,grecn);varcolor:colors;weekday:days;则卜面语句是合法的:weekday:=mon;ifweekday二sunthenwriteCrest");而下面语句是不合法的:mon:二1;错把枚举值当成变量名;weekday:=blue;枚举值blue不属于枚举变量weekday的值域;read(color);枚举类型变量不能用读语句进行赋值;write(weekday);writeIn(blue);
5、不能通过写语句输出枚举类型的变量值和枚举值。①可以把变量的说明与类型的定义合并在一起,如:varholiday,workday:(sun,mon,tue,wed,thu,fri,sat);color:(red,yellow,blue,white,black,green);对枚举数据的输入与输出可通过间接方式进行。输入时,一般可输入一个代码,通过程序进行转换,输出时,也只是打卬出与枚举元素和对应的字符串。这在后面的例题中将有使用示例。二、枚举类型的应用例1、输入今天是星期几的序号,输出明天是星期几的英文单词(星期天序
6、号为0)Otypeweekday二(sun,mon,tue,wed,thu,fri,sat);vari:integer;today,tomorrow:weekday;beginwriteinWhatdateisit');readln(i);caseiof{根据输入转换成枚举型}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)thentomorrow:
7、=sunelsetomorrow:=succ(today);writeCThetomorrowis');casetomorrowofsun:writeinCsunday');mon:writeln(,monday,);tue:writeln(,tuesday*);wed:writeln(,wednesay,);thu:writeinCthursday,);fri:writeinfriday,);sat:writeinCsaturday,);end;end.枚举类型是一种有序类型,所以枚举类型的变量可以作为循环变量。
8、学习枚举类型时,注意枚举元素与变量的区别,以及枚举与变量的输入输出方法的处理。子界类型如果我们定义一个变量为integer型,那么它的取值范围一般为-32768〜32767o而事实上,每个程序小所用的变量的值都有•个确定的范围。例如,人的年龄一般为1到120岁,一年中的月数为1到12月,一月中的天数为1到31天等等。如果能在程序屮对所用的变量的值域作具体规芯