第三带用户定义类型 许多语言允许程序员规定基 本数据对象的聚合,乃至聚合 的聚合
第三节 用户定义类型 许多语言允许程序员规定基 本数据对象的聚合,乃至聚合 的聚合
1.笛卡尔积 N个集合A1,A2,An的笛卡尔积表示为 A1×A2×.×An,它是一个集合,其元素为 al.a an ),ai∈Ai 任意正多边形可表示为 integer * real
1. 笛卡尔积 N个集合A1,A2,…,An的笛卡尔积表示为 A1A2…An,它是一个集合,其元素为 (a1,a2,…,an), aiAi 任意正多边形可表示为 integer *real
2.有限映像 ①定义:从定义域类型DT的值的 有限集合,到值域类型RT的值的 有限集合的函数称为有限映像 var a array 1. 50 of char 表示:整数1至50到字符集的有限映像 ②值域对象通过下标选取
2. 有限映像 ①定义:从定义域类型DT的值的 有限集合,到值域类型RT的值的 有限集合的函数称为有限映像。 var a:array[1..50] of char; 表示:整数1至50到字符集的有限映像 ②值域对象通过下标选取
③下标越界会出错,动态检查 ④下标可用来选取值域的多个元素 ⑤ SNOBOL4的 ARRAY构造符并 不要求值域集的所有元素是同 类型的
③下标越界会出错,动态检查 ④下标可用来选取值域的多个元素 ⑤SNOBOL4的ARRAY构造符并 不要求值域集的所有元素是同一 类型的
⑥D到相应值的特定子集的绑定策略 编译时绑定(静态数组) 对象建立时绑定(执行到分程序时, 动态数组) 对象处理时绑定(对APL,子集范围可变)
⑥DT到相应值的特定子集的绑定策略: .编译时绑定 (静态数组) .对象建立时绑定 (执行到分程序时, 动态数组) .对象处理时绑定(对APL,子集范围可变)
3序列 ①序列由任意多个数据项组成这些数 据项称为该序列的成分且类型相同 ②串是序列 ③顺序文件的思想也是来自序列的概 念只能顺序读写
3. 序列 ①序列由任意多个数据项组成,这些数 据项称为该序列的成分,且类型相同 ②串是序列 ③顺序文件的思想也是来自序列的概 念,只能顺序读写
4.递归 若数据类型T包含属于同一类型T的成 分,那么类型T称为递归类型。 ①允许在类型定义中使用被定义类型的名 字 ②指针是建立递归数据对象的重要手段
4. 递归 若数据类型T包含属于同一类型T的成 分,那么类型T称为递归类型。 ①允许在类型定义中使用被定义类型的名 字 ②指针是建立递归数据对象的重要手段
5判定或 判定或是一个选择对象结构的构造机制, 规定在两个不同选择对象之间作出适当 的选择。每一选择对象结构称为变体。 例如: PASCAL的变体记录; C的联合
5.判定或 判定或是一个选择对象结构的构造机制, 规定在两个不同选择对象之间作出适当 的选择。每一选择对象结构称为变体。 例如:PASCAL的变体记录; C的联合
6.幂集 类型T的元素所有子集的集合,称为 幂集记为 Powerset(T),T称为基类型。 应用:每次的操作对象仅仅是某个集合的 子集
6. 幂集 类型T的元素所有子集的集合,称为 幂集,记为Powerset(T),T称为基类型。 应用:每次的操作对象仅仅是某个集合的 子集
7小结 通过 PASCAL的类型定义和变量说明 给出用户定义类型显式命名的优点: ①可读性(选择名字) ②可修改性(不修改变量说明) ③可分性(重复使用) ④致性检查(参考第8节)
7. 小结 通过PASCAL的类型定义和变量说明, 给出用户定义类型显式命名的优点: ①可读性 (选择名字) ②可修改性 (不修改变量说明) ③可分性 (重复使用) ④一致性检查 (参考第8节)