电子科技大学编译原理复习笔记(二):数据类型

目录

前言

重点一览

引言

内部类型

内部类型的特点

内部类型的优越性

用户定义类型

⭐超重点:六种数据类型聚合方式

⭐抽象数据类型(重点、考点)

类型操作

类型检查

类型转换

类型等价

实现模型

本章小结


前言

本复习笔记基于张老师的课堂PPT,供自己期末复习与学弟学妹参考用。


重点一览

第二、第三个要点是更加重点的内容。


引言

  • 数据类型实现了数据抽象,让程序员从机器的具体特征中解放出来,提高了编程效率
  • 语言的某种特定的数据抽象受到语言所面向的机器和所面向的应用领域的影响
  • 数据类型分为内部类型(语言定义的)和自定义类型(用户定义的[从Pascal语言开始])
  • 数据类型=值的集合+操作的集合

内部类型

内部类型的特点

  • 内部类型是基本位串的抽象
  • 反映基本硬件特性
  • 是共用某些操作的数据对象的抽象表示

内部类型的优越性

  • 基本表示的不可见性:基本位串对程序员不可见
  • 编译时能检查变量使用的正确性(静态类型检查)
  • 编译时可以确定无二义性的操作
  • 精度控制,可以通过数据类型显式定义数据的精度

用户定义类型

用户定义类型是内部类型(和其他用户定义类型)的抽象

用户定义类型是基本数据对象的聚合(乃至聚合的聚合)

⭐超重点:六种数据类型聚合方式

笛卡尔积

定义

举例:Pascal语言的记录;C语言的结构 

有限映射

定义:定义域类型到值域类型的两个有限集合之间的函数叫作有限映像(有限映射)

举例:Pascal语言中的数组

特点:在高级语言里体现为数组构造;值域对象通过下标选取;下标越界会出错,需要进行动态检查;静态数组编译时绑定/半动态数组对象建立时绑定/动态数组对象处理时绑定 

序列

定义:序列由任意多个数据项组成,这些数据项叫做该序列的成分,且类型相同

举例:字符串string;顺序文件

递归

定义:数据类型包含属于同一类型的成分,那么此类型就是递归类型

举例:二叉树;链表

判定或 

定义:一个选择对象结构的构造机制,根据不同条件规定在两个不同选择对象之间作出适当的选择,每一选择对象结构称为变体

举例:Pascal语言中的变体记录;C语言中的联合

幂集

定义:数据类型的元素所有子集的集合称为幂集,记为Powerset(T),T称为基类型

举例:集合 


⭐抽象数据类型(重点、考点)

目的:仿照内部类型,隐藏用户自定义类型的内部信息

定义:在定义该类型的程序单元中,建立与表示有关的基本操作;对使用该类型的程序单元来说,该类型的表示是隐蔽的。


类型操作

类型检查

定义对数据对象的类型和使用的操作是否匹配的一致性检查

静态检查(编译检查):使程序更正确更有效

动态检查(运行检查):编程方便,影响了可靠性,降低了执行效率

类型转换

转换机制:隐式转换(自动转换)/显式转换(强制转换)

转换方式:拓展(范围扩大)/收缩(范围缩小)

类型等价

定义:两个类型的任何值都可以赋给对方,任何实参都能对应对方形参,则类型等价(相容)

名字等价:两个变量类型名相同

结构等价:两个变量的类型具有相同的结构(相容性实现的模式匹配过程可能比较复杂)

实现模型

不考察,在十一章有一点关联。


本章小结

猜你喜欢

转载自blog.csdn.net/m0_59180666/article/details/130870876