电子科技大学计算机科学与工程学院编译原理课件第02章 数据类型.pptVIP

  • 2
  • 0
  • 约9.38千字
  • 约 116页
  • 2019-05-06 发布于广东
  • 举报

电子科技大学计算机科学与工程学院编译原理课件第02章 数据类型.ppt

第2章 数据类型 数据类型实质上是对存储器中所存储的数据进行的抽象。 数据类型包含一组值和一组操作。 本章内容 将类型作为数据结构的抽象表示,可以分为三个层次的抽象,即内部类型、用户定义类型和抽象数据类型。 抽象数据类型----C++类。 数据类型与编译有关的几个问题。 类型的实现模型。 2.1 引言 1. 数据类型的作用 实现了数据抽象 从机器的具体特征中解脱出来 提高了编程效率 语言的某种特定的数据抽象受到两个因素的影响: 一是语言所面向的机器(只提供定点运算或同时提供浮点运算); 二是语言所面向的应用领域, 2. 数据类型的分类 内部类型 自定义类型 语言根据所面向的机器和应用定义了不同的数据类型,这些类型称为内部类型(语言定义类型 )。 自Pascal 语言开始,语言提供了由用户定义类型的方法。采用这类方法由用户自己定义的数据类型称为用户定义类型(自定义类型)。 2.2 内部类型 一. 内部类型的特点 .反映基本硬件特性 .在语言级, 同一类型数据的操作使用共用的抽象表示(如+、-、*、/) 1. 基本表示的不可见性 基本位串对程序员是不可见的。 25+9 结果34 基本表00001001 结果 从而具有优点: 不同的程序设计风格 可写性 可读性 可修改性。 2.编译时能检查变量使用的正确性 能够进行静态类型检查 如 非法运算;形、参类型匹配 3. 编译时可以确定无二义的操作 超载(多态) :运算符的意义依赖于操作数的类型。“+”可以表示整数或实数加 编译时,拒绝混合运算,或提供类型转换指令 合理地使用超载,可以提高可读性和可用性 4. 精度控制 可以通过数据类型显式定义数据的精度 float double 2.3 用户定义类型 语言除内部类型外,还允许用户借助于语言提供的数据的组合(聚合)机制,自己定义新的数据类型。 许多语言允许程序员规定基本数据对象的聚合(乃至聚合的聚合) 1. 笛卡尔积 n个集合A1,A2,…,An的笛卡儿积: A1×A2×…×An 它是一个集合,其元素是有序的n元式(a1,a2,…,an) 例 一个正多边形用一个整数(正多边形边数)和一个实数(边的长度)来描述,那么任意正多边形都是笛卡儿积 integer×real 的一个元素。 笛卡儿积: Pascal语言的记录 C语言的结构 2. 有限映像 ①定义:从定义域类型DT的值的有限集合,到值域类型RT的值的有限集合的函数(映射)称为有限映像。 array[1..50] of char 整数1至50到字符集的有限映像 ②值域对象通过下标选取 ③下标越界会出错,动态检查 ④SNOBOL4的ARRAY构造符不要求值域集的所有元素是同一类型的 ⑤DT到相应值的特定子集的绑定策略: .编译时绑定 (静态数组 C) .对象建立时绑定 (半动态数组 ALGOL) .对象处理时绑定 (动态数组 APL) ①任意多个数据项组成,数据项称为该序列的成分,且类型相同 ②串是序列 ③顺序文件的思想也是来自序列的概念,只能顺序读写 若数据类型T包含属于同一类型T的成分--递归类型。 ①允许在类型定义中使用被定义类型的名字 ②指针是建立递归数据对象的重要手段 一个选择对象结构的构造机制,规定在两个不同选择对象之间作出适当的选择。每一选择对象结构称为变体。 PASCAL的变体记录; C的联合。 类型T的元素所有子集的集合,称为幂集, T称为基类型。 若语言缺乏集合类型,只好使用链表或其他低级机制来实现。 语言允许程序员利用数据聚合机制,定义复杂的数据对象。 语言允许程序员利用数据聚合机制,定义以复杂的数据对象作为基本项的聚合。 struct srudent { char name[48]; int age; … }; 匿名记录 var a: record x:integer; y:array[1..10] of char end; 显式命名 type complex=record radius:real; angle:real end; var c1,c2,c3:complex; 用户定义类型显式命名的优点: ①可读性 (选择名字) ②可修改性 (不修改变量说

文档评论(0)

1亿VIP精品文档

相关文档