第四章 数据类型
第四章 数 据 类 型
·任何程序,不管以何种语言写成,均可以视为刻划了一个操 作集合。并将以一定顺序作用到一定数据上。 语言的基本不同在于:允许的数据类型、允许的操作类型、 以及控制操作顺序的机制。 下面章节将围绕这些方面展开
•任何程序,不管以何种语言写成,均可以视为刻划了一个操 作集合。并将以一定顺序作用到一定数据上。 •语言的基本不同在于:允许的数据类型、允许的操作类型、 以及控制操作顺序的机制。 •下面章节将围绕这些方面展开
41类型和对象的性质 数据对象、变量和常量 计算机的数据存储在结构上是简单的,通常是由位串构成的 字节 而语言虚拟机的数据存储则有更复杂的组织,如:数组、栈、 数、字符串、以及其它存在于程序执行中不同点的数据。 我们称虚拟机上一个或多个数据片断运行时的组合为数据对 象 在程序运行中,存在许多不同类型的不同数据对象。这些对 象及其相互关系在运行时动态变化 有些数据对象是程序员定义的,如变量、常量、数组、文件 等。程序员通过声明和语句显式地创建和操作它们
4.1 类型和对象的性质 数据对象、变量和常量 •计算机的数据存储在结构上是简单的,通常是由位串构成的 字节。 •而语言虚拟机的数据存储则有更复杂的组织,如:数组、栈、 数、字符串、以及其它存在于程序执行中不同点的数据。 •我们称虚拟机上一个或多个数据片断运行时的组合为数据对 象。 •在程序运行中,存在许多不同类型的不同数据对象。这些对 象及其相互关系在运行时动态变化。 •有些数据对象是程序员定义的,如变量、常量、数组、文件 等。程序员通过声明和语句显式地创建和操作它们
有些数据对象是系统定义的,不可为程序员直接访问。如: 运行时存储栈、子程序激活记录、文件缓冲、自由空间列 表等。这些数据对象在运行需要时自动产生,不需要时删 除 数据对象表示了数据值的一个容器,是值被存放和检索的 地方,而数据值是在存储器中以一种特定的位模式表示。 数据对象和数据值在大多数语言中均是明确区分的,如图 41所示 A 10001 A:0000 (a) Data object: A location (b) Data value: A bit pattern (c)Bound variable: Data object in computer memory with the used by the translator whenever bound to data value 17 name A the number 17 is used in a program
•有些数据对象是系统定义的,不可为程序员直接访问。如: 运行时存储栈、子程序激活记录、文件缓冲、自由空间列 表等。这些数据对象在运行需要时自动产生,不需要时删 除。 •数据对象表示了数据值的一个容器,是值被存放和检索的 地方,而数据值是在存储器中以一种特定的位模式表示。 •数据对象和数据值在大多数语言中均是明确区分的,如图 4.1所示
每个数据对象有生命期,在生命期内可用来存放数据值。 ·数据对象可分为简单数据对象和数据结构—其他数据对 象的聚集 数据对象在其生命期中涉及各种绑定,虽然其属性不变, 但绑定可动态改变 重要的属性和绑定有: 1、类型 通常在程序翻译时,关联数据对象和它可能的取值集合 2、位置 通常不由程序员规定,而是系统存储管理负责。 3、值 由赋值操作完成绑定。 名 通常在声明时完成绑定,但可被子程序调用和返回修改 5、部件 通常用指针值相连,可通过指针的修改而变动
•每个数据对象有生命期,在生命期内可用来存放数据值。 •数据对象可分为简单数据对象和数据结构——其他数据对 象的聚集。 •数据对象在其生命期中涉及各种绑定,虽然其属性不变, 但绑定可动态改变。 •重要的属性和绑定有: 1、类型 通常在程序翻译时,关联数据对象和它可能的取值集合。 2、位置 通常不由程序员规定,而是系统存储管理负责。 3、值 由赋值操作完成绑定。 4、名 通常在声明时完成绑定,但可被子程序调用和返回修改 5、部件 通常用指针值相连,可通过指针的修改而变动
变量和常量 程序员通过变量显式地定义和命名数据对象。 个简单的变量是有名字的简单数据对象,通过赋值修 改变量值 常量是具有名字的数据对象,其值在其生命期内永久不 变。一个文字(或文字常量)是一个常量,其名是其值 的书写表示,如21表示值为21的整数常量 程序员定义的常量——其名字由程序员指定。 常量的绑定由编译器完成 如C语言中,# define max20 语句MAX=4是非法的
•变量和常量 程序员通过变量显式地定义和命名数据对象。 一个简单的变量是有名字的简单数据对象,通过赋值修 改变量值。 常量是具有名字的数据对象,其值在其生命期内永久不 变。一个文字(或文字常量)是一个常量,其名是其值 的书写表示,如21表示值为21的整数常量。 程序员定义的常量——其名字由程序员指定。 常量的绑定由编译器完成。 如C语言中,#define MAX 20 语句MAX=4是非法的
永久性 Persistence 现今大多数程序仍是采用批处理模式,即 、将程序装入内存 2、适当的外部数据被准备给程序所用 3、将相关输入数据读入程序中变量,变量被操作, 然后结果数据被写回外部数据格式。 4、程序终止。 程序中变量的生命期由程序的执行时间所确定。然而, 数据的生命期经常超出程序的单次执行,这种数据称 为永久的,在程序的多次执行间存在。 具有永久特性的语言对书写基于事务的系统更为高效。 文件系统可以解决永久性问题
•永久性Persistence 现今大多数程序仍是采用批处理模式,即 1、将程序装入内存 2、适当的外部数据被准备给程序所用。 3、将相关输入数据读入程序中变量,变量被操作, 然后结果数据被写回外部数据格式。 4、程序终止。 程序中变量的生命期由程序的执行时间所确定。然而, 数据的生命期经常超出程序的单次执行,这种数据称 为永久的,在程序的多次执行间存在。 具有永久特性的语言对书写基于事务的系统更为高效。 文件系统可以解决永久性问题
数据类型 个数据类型是一类数据对象加上创建及操作它们的一组 操作。 每个语言有一个基本数据类型集合,是语言固有的 有的语言还提供了设施允许程序员定义新数据类型。 有的新语言还允许类型本身被语言操作(高阶能力)。 数据类型的规约包括 1、区分该类型的数据对象的属性 2、该类型数据对象可具有的值 3、定义该类型数据对象可能处理的操作
数据类型 •一个数据类型是一类数据对象加上创建及操作它们的一组 操作。 •每个语言有一个基本数据类型集合,是语言固有的。 有的语言还提供了设施允许程序员定义新数据类型。 有的新语言还允许类型本身被语言操作(高阶能力)。 •数据类型的规约包括: 1、区分该类型的数据对象的属性 2、该类型数据对象可具有的值 3、定义该类型数据对象可能处理的操作
例如:数组数据类型的规约 属性:维数、每维的下标范围、元素的数据类型等。 值:形成数值元素有效值的数的集合 操作:选择个体数组元素、创建数组、改变数组形状, 访问下标上下界、完成数组间的算术操作等。 数据类型的实现包括: 存储表示:用于在计算机存储器中表示数据对象 2、数据类型操作被以特殊的算法或过程表示的方式, 这些算法和过程操纵数据对象的存储表示。 数据类型的规约大致可对应虚拟机中该类型定义部分的规 约。而数据类型的实现定义了那些虚拟机部分基于更基本 的低层结构的仿真,低层结构可以直接是硬件,也可以是 有操作系统或微代码定义的软、硬件组合
•例如:数组数据类型的规约 属性:维数、每维的下标范围、元素的数据类型等。 值:形成数值元素有效值的数的集合。 操作:选择个体数组元素、创建数组、改变数组形状, 访问下标上下界、完成数组间的算术操作等。 •数据类型的实现包括: 1、存储表示:用于在计算机存储器中表示数据对象。 2、数据类型操作被以特殊的算法或过程表示的方式, 这些算法和过程操纵数据对象的存储表示。 •数据类型的规约大致可对应虚拟机中该类型定义部分的规 约。而数据类型的实现定义了那些虚拟机部分基于更基本 的低层结构的仿真,低层结构可以直接是硬件,也可以是 有操作系统或微代码定义的软、硬件组合
从语法表示来看,规约和实现大部分独立于特定的语法形 式 属性:表示为声明或类型定义 值:表示为文字或定义的常量 操作:可由特殊的符号、固有过程或函数、或隐含地通 过其他语言元素的特殊组合来调用。 特定的语法表示并没什么不同,但程序语法中提供的信息 被用于确定各种属性的绑定时间,从而允许翻译器建立高 效的存储表示或完成类型检查
•从语法表示来看,规约和实现大部分独立于特定的语法形 式。 属性:表示为声明或类型定义 值:表示为文字或定义的常量 操作:可由特殊的符号、固有过程或函数、或隐含地通 过其他语言元素的特殊组合来调用。 •特定的语法表示并没什么不同,但程序语法中提供的信息 被用于确定各种属性的绑定时间,从而允许翻译器建立高 效的存储表示或完成类型检查