资源描述:
《《高级数据类型》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四章高级数据类型类型定义语句前面我们学习了Pascal语言的5种标准数据类型:整型、实型、字符型、字符串型以及布尔型,这些数据类型无需声明定义即可在程序中直接使用。而解决实际问题,还需要其他数据类型,这些都属于用户自定义的数据类型,属于高级数据类型。这些数据类型必须在使用之前用语句进行定义。高级数据类型主要有:枚举类型、子界类型、集合类型、数组、记录类型、指针类型类型定义语句类型定义语句的语法格式为:type<标识符1>=<类型1>;<标识符2>=<类型2>;…<标识符3>=<类型3>;其中保留字type表示类型定义段的开始。<标识符>是用户为自
2、定义类型取的名称,<类型>是用户定义的数据类型名,既可以是ObjectPascal语言的标准数据类型,也可以是ObjectPascal语言的高级数据类型。枚举类型在处理诸如物体的颜色、人的职业、教师的职称等非数值数据时,可以用数值或字符串来表示,比如用1表示红色,2表示黄色;或用“red”表示红色,“yellow”表示黄色。但这样的表示都存在一些缺点:使用数值表示很不直观,特别当表示的种类较多时容易引起混乱和错误,使用字符串则需要占用较多的内存。仔细分析这些数据,可知这些数据的个数总是有限的,而且可以一一列举。为此,ObjectPascal提供的用户
3、自定义数据类型——枚举类型,可以很方便地处理这类数据。枚举类型type枚举类型标识符=(标识符1,……,标识符n);例如:typedaytype=(sun,mon,tue,wed,thu,fri,sat);注意:1、括号内为枚举元素,是该类型数据的所有取值,又称枚举常量。但枚举元素只能是标识符(字母开头的字母数据串),而不能是数值常量或字符常量。例如以下的定义是错误的:typedaytype1=(‘sun’,‘mon’,‘tue’,‘wed’,‘thu’,‘fri','sat');2、不要把作为枚举元素的标识符视作变量名,它不能被赋值。例如以下的语句
4、是错误的:sunday:='sun';monday:='mon';枚举类型3、枚举常量不允许在同一枚举类型定义中重复出现,同一个枚举常量也不能出现在不同的枚举类型定义中。例如以下的定义是错误的:typedaytype1=(monday,tuesday);daytype2=(monday,wednesday);4、Pascal不允许直接读写枚举值(如write(pred(mon))),所以枚举值的输出常用case语句间接的输出。casesucc(sun)ofsun:write(‘sunday’);mon:write(‘monday’);..sat:wr
5、ite('saturday');end;枚举类型枚举类型变量的声明Varx,y:daytype;注意:此时的daytype必须是已定义好的枚举类型。也可以将枚举类型的定义和变量的定义结合在一起。例如:vara:(sun,mon,tue);枚举类型的运算顺序运算:枚举类型属于顺序类型。根据定义类型时各枚举元素的排列顺序确定它们的序列,序列号从0开始,如果类型说明中有N个元素,那么,每个元素对应的序号从左到右依次为0~(N-1),如上面daytype中,sun的序号为0……,sat的序号为6,即ord(sun)=0,succ(sun)=mon,pred(
6、fri)=thu注意:枚举类型中的第一个元素没有前趋,最后一个元素没有后继。枚举类型关系运算:例如,sun7、个常量必须是同一种顺序类型,如:a..b,要求a<=b。这里的“顺序”不是指大小,而是指子界中的每个元素都有后继元素或前趋元素。如typex=0.2..0.8是错误的。子界类型2、子界的上、下界所属的数据类型即子界的基类型。若子界的基类型为标准数据类型(整型、布尔型、字符型),则子界的上、下界可以直接使用该类型常量,若子界的基类型为枚举类型,则必须先定义基类型(枚举类型),再定义子界类型。例如:typeweek=(sun,mon,tue,wed,thu,fri,sat);subweek=mon..thu;子界变量的声明Varnum1,num2:a;s
8、tr1,str2:b;可以将子界类型的定义和变量的定义结合在一起,例如:vara:1..9子界类型子界类型变