计算机编译原理课件.ppt

计算机编译原理课件.ppt

ID:56963436

大小:546.00 KB

页数:64页

时间:2020-07-22

计算机编译原理课件.ppt_第1页
计算机编译原理课件.ppt_第2页
计算机编译原理课件.ppt_第3页
计算机编译原理课件.ppt_第4页
计算机编译原理课件.ppt_第5页
资源描述:

《计算机编译原理课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第2章数据类型数据类型实质上是对存储器中所存储的数据进行的抽象。数据类型作为数据结构的抽象表示,可以分为三个层次的抽象,即内部类型、用户定义类型和抽象数据类型。数据类型包含一组值和一组操作。12.1引言1.数据类型的作用实现了数据抽象从机器的具体特征中解脱出来提高了编程效率2语言的某种特定的数据抽象受到两个因素的影响:语言所面向的机器(只提供定点运算或同时提供浮点运算);语言所面向的应用领域。32.数据类型的分类内部类型语言根据所面向的机器和应用定义了不同的数据类型,这些类型称为内部类型(语言定义类型)。用户定义类型自Pascal语言开始,语言提供了由用户定

2、义类型的方法。采用这类方法由用户自己定义的数据类型称为用户定义类型(自定义类型)。42.2内部类型1.内部类型的特点反映基本硬件特性在语言级,同一类型数据的操作使用共用的抽象表示(如+、-、*、/)。52.内部类型的优越性1)基本表示的不可见性基本位串对程序员是不可见的。两个整数相加25+9,结果为34基本表示:00011001+00001001结果:0010001062)编译时能检查变量使用的正确性能够进行静态类型检查如:非法运算;形参、实参类型匹配73)编译时可以确定无二义的操作超载(多态):运算符的意义依赖于操作数的类型。如:“+”可以表示整数或实数加

3、。编译时,拒绝混合运算,或提供类型转换指令合理地使用超载,可以提高可读性和可用性。84)精度控制可以通过数据类型显式定义数据的精度如:float、double92.3用户定义类型语言除内部类型外,还允许用户借助于语言提供的数据的组合(聚合)机制,自己定义新的数据类型。许多语言允许程序员规定基本数据对象的聚合(乃至聚合的聚合)。101.笛卡尔积n个集合A1,A2,…,An的笛卡儿积:A1×A2×…×An它是一个集合,其元素是有序的n元式(a1,a2,…,an)11例:一个正多边形用一个整数(正多边形边数)和一个实数(边的长度)来描述,那么任意正多边形都是笛卡儿

4、积integer×real的一个元素。12笛卡儿积:Pascal语言的记录C语言的结构132.有限映像1)定义:从定义域类型DT的值的有限集合,到值域类型RT的值的有限集合的函数(映射)称为有限映像。array[1..50]ofchar整数1至50到字符集的有限映像142)值域对象通过下标选取3)下标越界会出错,动态检查4)SNOBOL4的ARRAY构造符不要求值域集的所有元素是同一类型的155)DT到相应值的特定子集的绑定策略:编译时绑定(静态数组C)对象建立时绑定(半动态数组ALGOL)对象处理时绑定(动态数组APL)163.序列1)任意多个数据项组成,

5、数据项称为该序列的成分,且类型相同2)串是序列3)顺序文件的思想也是来自序列的概念,只能顺序读写174.递归若数据类型T包含属于同一类型T的成分——递归类型。1)允许在类型定义中使用被定义类型的名字2)指针是建立递归数据对象的重要手段185.判定或一个选择对象结构的构造机制,规定在两个不同选择对象之间作出适当的选择。每一选择对象结构称为变体。PASCAL的变体记录;C的联合。196.幂集类型T的元素所有子集的集合,称为幂集,T称为基类型。若语言缺乏集合类型,只好使用链表或其他机制来实现。202.4Pascal语言数据类型212.5Ada语言数据类型222.6

6、C语言数据类型232.7Java语言数据类型自学242.8抽象数据类型用户定义类型与内部类型的异同1.都建立了某种基本表示的抽象内部类型:对二进制位串的抽象。用户定义类型:对内部类型和已定义的用户定义类型作为基本表示的抽象。252.都关联了一组操作3.隐蔽性不同内部类型:基本表示是不可见的,不能对它的成分进行操作;用户定义类型:基本表示是可见的,可以对它的成分进行操作。26抽象数据类型满足下述特性的用户定义类型称为抽象数据类型1.在允许实现这个新类型的程序单元中,建立与基本表示有关的具体操作。2.对使用这个新类型的程序单元来说,新类型的基本表示是隐蔽的。27

7、2.8.1SIMULA67语言的类机制自学282.8.2CLU语言的抽象数据类型自学292.8.3Ada语言的抽象数据类型自学302.8.4Modula2语言的抽象数据类型自学312.8.5C++语言的抽象数据类型自学322.8.6Java抽象数据类型自学332.9类型检查对数据对象的类型和使用的操作是否匹配的一致性检查称为类型检查。34静态检查和动态检查静态检查使程序更正确,更有效。动态检查使编程方便,但影响了可靠性,且降低了执行效率。35语言按类型分类语言可以按类型进行分类,可分为:无类型语言弱类型语言强类型语言36无类型语言:一个语言没有类型定义,则称

8、为无类型语言。强类型语言:一个语言的所有类型检查都在

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。