第02章数据类型讲述.ppt
文本预览下载声明
* 2.8.5 C++语言的抽象数据类型 自学 * 2.8.6 Java抽象数据类型 自学 * 2.9 类型检查 对数据对象的类型和使用的操作是否匹配的一致性检查称为类型检查。 * 静态检查和动态检查 静态检查使程序更正确,更有效。 动态检查使编程方便,但影响了可靠性,且降低了执行效率。 * 语言按数据类型分类 语言可以按数据类型进行分类,可分为: 无类型语言:没有类型定义。 强类型语言:所有类型检查都在编译时完成。 弱类型语言:类型检查全部或部分要在运行时完成。 * 2.10 类型转换 某种类型的值转换为另一种类型的值。 1. 语言应该提供类型转换机制 隐式(自动)转换 显式(强制)转换 * 2.两种转换方式 拓展:转换之后的类型值集合包含转换之前类型值集合(整型→实型) 收缩:若转换之前类型值集合包含转换之后类型值集合(实型→整型) * 在某些语言中,类型转换的要求和规则都是隐式的——FORTRAN 语言; 在某些语言中,类型转换的要求和规则都是显式的—— ADA语言。 在某些语言中,类型转换的要求和规则有隐式、显式的两类—— C语言。 * 3. 隐式转换 隐式转换常发生在下述的情况下。 混合运算:级别低的类型向级别高的类型转换。 将表达式的值赋给变量:表达式的值向变量类型的值转换。 * 实参向函数形参传值:实参的值向形参的值进行转换。 函数返回值:返回的值向函数返回类型的值进行转换。 * 2.11 类型等价 T1和T2是两个类型 T1的任何值都可以赋予T2的变量,反之亦然; T1实参可对应T2形参,反之亦然, 则T1和T2类型等价(相容)。 * 两种类型等价, 1. 名字等价 两个变量的类型名相同。 2. 结构等价 两个变量的类型具有相同的结构。 验证:用用户定义类型的定义来代替用户定义名,重复这一过程,直到没有用户定义类型名为止。 * 2.12 实现模型 在实现模型中,一个数据用描述符和数据对象来表示。 数据对象:存储区及其值 描述符:描述数据对象的属性 * 内部类型 描述符一般由类型描述和一个指针组成。如 整数类型: * 实数类型: * 结构类型 1. 笛卡儿积 Pascal记录的类型说明 type t = record a : real; b : integer end * * 2. 有限映像 Pascal的数组说明 type a = array[0..10] of real * * 3. 序列 可变长串的表示 * 4. 判定或 Pascal的变体记录 type v = record a : integer; case b : boolean of true :( c : integer ); false :( d : integer; e : real ) end * * 5. 幂集 对幂集可以通过访问的存储空间(例如机器字)来有效地实现。 若在某个集合S中出现基类型的第i个元素,那么与 S相关联的字的第i个位置为“1”。 * 两个集合的操作: 联合通过它们相关联的字的“或”操作来实现。 交集通过“与”操作来实现。 * 6. 指针 指针变量的表示类似于内部类型,只是其值为地址。 * 7. 层次结构数据结构对象的表示 类型t的数据对象说明如下: type t = record a : real; b : t1; c : integer end; 其中, t1 = array[0..3] of integer; * * 类似地,二维数组变量的类型说明 type t2 = array[0..2] of t4; 其中 t4 = array[0..5] of integer; * * 第2章 数据类型 数据类型实质上是对存储器中所存储的数据进行的抽象。 数据类型作为数据结构的抽象表示,可以分为三个层次的抽象,即内部类型、用户定义类型和抽象数据类型。 数据类型包含一组值和一组操作。 * 2.1 引言 1. 数据类型的作用 实现了数据抽象 从机器的具体特征中解脱出来 提高了编程效率 * 2. 数据类型的分类 内部类型 语言根据所面向的机器和应用定义了不同的数据类型,这些类型称为内部类型(语言定义类型)。 用户定义类型 语言提供了由用户定义类型的方法。采用这类方法由用户自己定义的数据类型称为用户定义类型(自定义类型) 。 * 2.2 内部类型 1. 内部类
显示全部