1. 首页
  2. 文档大全

软件规格说明技术-6

上传者:2****5 2022-07-22 00:29:10上传 PPT文件 802.50KB
软件规格说明技术-6_第1页 软件规格说明技术-6_第2页 软件规格说明技术-6_第3页

《软件规格说明技术-6》由会员分享,可在线阅读,更多相关《软件规格说明技术-6(141页珍藏版)》请在文档大全上搜索。

1、2022-6-21 有时,不仅要描述一个数据对象的集合,而且还要描述这些对象之间的某种重要的次序。 只用前面介绍的数学表示还不够。 为了描述这种带有次序的对象的集合,我们 引 入 一 个 新 的 数 据 类 型 , 这 就 是 序 列(sequences)。2022-6-22 还有一些情况,不仅要描述一个数据对象的集合,还要指出每个对象所出现的次数。 用一般的集合来描述这种情况是行不通的。 引入另一种新的数据类型,这就是包(bag)。 序列和包是 Z 的重要数据类型。 本章将介绍序列和包这两种数据类型以及关于它们的操作,并介绍序列和包的应用例子。 2022-6-23 模拟客户在银行的柜台前排队

2、等待服务的问题,对于等待服务的客户队列。 如果只要描述队列中有哪些人,那么用一般的集合就可以了。 设当前队列中有以下四人:Liming, Zhanghong, Wanggang 和 chenjun。则有 custmset=liming, Zhanghong, Wanggang, Chenjun2022-6-24 集合中的元素出现的次序对于判断两个集合是否相等是无关的,所以custmset =liming, Zhanghong, Wanggang, Chenjun =Chenjun, Wanggang, liming, Zhanghong但对于队列有序这一特性,集合是难以描述的。 另外还有一个理

3、由说明仅用一般的集合来描述一个队列或者表之类的结构是不合适的。 假定银行要保留一个表以记录在某一段时间内谁到过银行办理业务,那么,在表中某人的名字可能出现多次。2022-6-25 可试图用集合liming, Zhanghong, Wanggang, Wanggang, Chenjun来表示该表。但我们知道,在集合中,重复出现的元素是冗余的,上面的集合等价于liming, Zhanghong, Wanggang, Chenjun 这样,Wanggang 在这段时间内办理了两笔业务这一重要信息就未表示出来。 在 Z 中,可以用序列来模拟有序数据对象集合。2022-6-26 在一个序列中,元素出现的

4、次序是有意义的,而且每个元素又可以出现多次。 我们不必为此在Z中增加全新的结构,因为可以使用一类特殊的函数来表示这些特性。2022-6-27 一个序列可以用一对尖括号来表示。Liming, Chenjun, Wanggang, ZhanghongChenjun, Wanggang, Wanggang, Zhanghong Chenjun 这个序列模拟了在银行的柜台前等候办理业务的队列。 与集合不同,序列中出现的元素是有次序的。2022-6-28所以有Liming, Chenjun, Wanggang, Zhanghong Wanggang, Liming, Zhanghong, Chenjun

5、 第三个序列是只有一个元素的序列。 第四个序列是一个空序列。 第二个序列模拟的是一个列表,它虽然含有四个元素,但有两个元素是相同的。所以有 Chenjun, Wanggang, Wanggang, Zhanghong Chenjun, Wanggang, Zhanghong2022-6-29 任何一个序列中元素的类型是相同的。 一个序列的重要特征不仅在于它所含有的元素,而且还在于这些元素所在的位置。序列Chenjun, Wanggang, Zhanghong 位置 元素 1 Chenjun 2 Wanggang 3 Zhanghong含有如下关于位置和元素的信息:2022-6-210 另一种表

6、示序列的方法是把它写成一个定义域为1, 2, 3,映射位置到元素的函数:1 Chenjun, 2 Wanggang, 3 Zhanghong 在Z中序列被看成是一个 的初始段 1 . . n到序列的元素的函数。这个函数映射每一个代表位置的数到序列中该位置的元素。 一般,以尖括号的表示法作为函数表示法的简写方式来描述序列。2022-6-211所以 Liming, Chenjun, Wanggang, Zhanghong = 1 Liming, 2 Chenjun, 3 Wanggang, 4 Zhanghong= Chenjun= 1 ChenjunChenjun, Wanggang, Wang

7、gang, Zhanghong = 1 Chenjun, 2 Wanggang, 3 Wanggang, 4 Zhanghong2022-6-212 一个序列的定义域必须是从1开始的。 对于任意两个序列,只有当它们以相同的次序含有相同的元素时,这两个序列才相等。例如 Chenjun, Wanggang, Zhanghong Zhanghong, Wanggang, Chenjun 因为 1 Chenjun, 2 Wanggang, 3 Zhanghong 1 Zhanghong, 2 Wanggang, 3 Chenjun2022-6-213 用特殊的记号 seq X 来表示由集合 X 的元素

8、产生的所有序列的类型。 seq X 是一个类型,用它来声明的对象是一个序列,序列中的元素是集合 X 中的元素。例如queue: seq customer 我们可以有queue =Liming, Chenjun, Wanggang, Zhanghong2022-6-214 因为序列是一个如上描述的函数,就可以给出任意集合 X 的序列的形式定义:seq X = f: X | dom f =1.# f 由定义可知,序列的长度是有限的,序列必须是 到X的有穷函数。 定义中的约束告诉我们,该函数的定义域是的一个连续区间,从1开始直到序列的元素个数。2022-6-215 如果有 queue =Liming

9、, Chenjun, Wanggang, Zhanghong 则有 queue 2 = Chenjun两个简单操作:求序列元素和求序列长度。 一个序列 s 的第 i 个元素是 s i, 当然 i dom s。 序列的长度是序列中元素的个数,其操作符为 #,一个序列 s 的长度为 # s。 对于上面给出的 queue,可有 # queue = 42022-6-216 该定义表明,iseq X 是 X 上的部分入射函数,它们是有穷序列,而且都不含重复元素。 下面一条定律描述了seq 和seq1 的关系:seq1 X = seq X 两个特殊的序列类型:非空序列类型记作 seq1,定义为:seq1

10、X = f:seq X | # f 0 无重复元素的序列类型记作 iseq,定义为: iseq X = seq X ( N X) 2022-6-217 从理论上来说,集合、关系和函数的所有操作都可应用于序列。 但实际上是行不通的。 例 如 , 考 虑 两 个 序 列 L i m i n g 和Chenjun, LimingChenjun作为集合的表示,应有 1 Liming 1 Chenjun = 1 Liming, 1 Chenjun2022-6-218 序列连接(concatenation)是一个常用的序列操作,连接方法为,将第二个序列的元素依次连接在第一个序列的后面。 例如,序列 lis

11、t1 记录了上午9时到10时在银行办理业务的客户, 序列 list2 记录了10时到11时在银行办理业务的客户。要连接这两个序列以得到一个记录上午9时到11时在银行办理业务的客户的列表。 引入一个用于序列连接的操作,记作 。 2022-6-219 给定两个如下的序列:list1 =Chenjun, Wanggang, Wangganglist2 =Liming, Heying, Heying, Zhanghong 对它们使用序列连接操作,得到:List1 list2 =Chenjun, Wanggang, Wanggang, Liming, Heying, Heying, Zhanghong2


文档来源:https://www.renrendoc.com/paper/212724386.html

文档标签:

下载地址