资源描述:
《Delphi--第四章 高级数据类型ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四章高级数据类型高级数据类型标准数据类型:整型、实型、字符型、字符串型、布尔型。无需声明定义即可在程序中直接使用。而解决实际问题,还需要其他数据类型,需要用户自定义,这些属于高级数据类型。这些数据类型必须在使用之前用语句进行定义。高级数据类型主要有:枚举类型、子界类型、集合类型、数组、记录类型、指针类型类型定义语句类型定义语句的语法格式为:type<标识符1>=<类型1>;<标识符2>=<类型2>;…<标识符n>=<类型n>;其中,type表示类型定义段的开始。<标识符>是用户为自定义类型取的名称。<类型>是数据类型名,标准或高级皆可。注意:若自定义类型为高级数据类型,
2、需先定义高级数据类型。枚举类型通常,表示取值有限的非数值数据,可以用数值或字符串来表示,比如用1表示红色,2表示黄色;或用“red”表示红色,“yellow”表示黄色。但这样的表示都存在一些缺点:使用数值表示很不直观,特别当表示的种类较多时容易引起混乱和错误,使用字符串则需要占用较多的内存。由于数据的个数有限,且可以一一列举。因此,可创建自定义数据类型——枚举类型。枚举类型语法格式:type类型标识符=(枚举值1,……,枚举值n);例如:typedaytype=(sun,mon,tue,wed,thu,fri,sat);注意:1、括号内为枚举元素,是该类型数据的所有取值,又
3、称枚举常量。但枚举元素只能是标识符(字母开头的字母数据串),而不能是数值常量或字符常量,如下:typedaytype=(‘sun’,‘mon’,‘tue’,‘wed’,‘thu’,‘fri’,‘sat’);2、不要把作为枚举元素的标识符视作变量名,它不能被赋值。例如以下的语句是错误的: sun:='sun';mon:='mon';枚举类型3、枚举常量不允许在同一枚举类型定义中重复出现,同一个枚举常量也不能出现在不同的枚举类型定义中。例如以下的定义是错误的: typedaytype1=(monday,monday); daytype2=(monday,wednes
4、day);4、Pascal不允许直接读写枚举值(如write(pred(mon)))。所以枚举值的输出常用case语句间接的输出。casesucc(sun)of sun:write(‘sunday’); mon:write(‘monday’); .sat:write('saturday'); end;枚举类型枚举类型变量的声明Varx,y:daytype;注意:此时的daytype必须是已定义好的枚举类型。也可以将枚举类型的定义和变量的定义结合在一起。例如:vara:(sun,mon,tue);枚举类型的运算顺序运算:序列号从0开始,如果类型说明中有N个元素
5、,那么,每个元素对应的序号从左到右依次为0~(N-1),如上面daytype中,sun的序号为0……,sat的序号为6,即ord(sun)=0,succ(sun)=mon,pred(fri)=thu注意:枚举类型中的第一个元素没有前趋,最后一个元素没有后继。枚举类型关系运算:例如,sun6、数据可以定义为“子界类型”。其中的基类型,必须为顺序类型。子界类型具有便于查错、节省内存的优点。语法结构:type子界类型标识符=常量1..常量n; 例如:typea=1..3; b=‘a’..‘d’;注意:1、子界的两个常量必须是同一种顺序类型,这里的“顺序”不是指大小,而是指子界中的每个元素都有后继元素或前趋元素。如:typex=0.2..0.8是错误的。子界类型2、子界的上、下界所属的数据类型即子界的基类型。若子界的基类型为标准数据类型(整型、布尔型、字符型),则子界的上、下界可以直接使用该类型常量,若子界的基类型为枚举类型,则必须先定义基类型(枚举类
7、型),再定义子界类型。例如:typeweek=(sun,mon,tue,wed,thu,fri,sat);subweek=mon..thu;子界变量的声明Varnum1,num2:week;str1,str2:subweek;可以将子界类型的定义和变量的定义结合在一起,例如:vara:1..9子界类型子界类型变量的运算子界类型的运算与其基类型的运算一致。例4-2:十进制到其他进制的转换例:按月、日、年顺序读入一日期,输出该日期是这一年中的第几天。集合类型集合是指具有相同性质且可以相互区分的对象的全体。构成集合的各个