永发信息网

寻找pascal编程高手

答案:2  悬赏:40  手机版
解决时间 2021-04-16 05:08
  • 提问者网友:人傍凄凉立暮秋
  • 2021-04-15 13:40

var buf: set of 0..15;
i, k: integer;

具体指的是什么呢

最佳答案
  • 五星知识达人网友:一把行者刀
  • 2021-04-15 14:43

声明变量


var buf: set of 0..15;//定义集合类型 0到15之间
i, k: integer;//定义i,k

全部回答
  • 1楼网友:傲气稳了全场
  • 2021-04-15 14:49

9.1 集合

把具有某些共同特征的元素构成的一个整体,称为集合。具体在计算机程序设计中,一个集合就是由同一种有序类型的一组数据元素所组成的,这一种有序类型称为该集合的基类型。比如,把整数1,3,5放在一起就组成了一个整数集合,这个集合的基类型就是整型。其中的1,3,5都称为该集合的元素。集合类型是一种使用简便,节省内存面又运算速度快的数据类型。

一、集合类型 的定义

和其它构造类型相似,一般要先说明集合类型,再去定义某个变量为这种集合类型。说明集合类型的方法如下:

type 集合类型名 = set of 基类型;

如:type num = set of 1..10;

upperletter = set of ‘A’..‘Z’;

接下来,就可以定义变量了,如:

var n:num;u:upperletter;

这样,就定义了两个集合型变量,其中n是一个整型集合,不过它只能存放1到10;而u是一个字符型集合,它只能存放26个大写英文字母。也可以把集合类型的说明和集合变量的定义合在一起,如:

var n:set of 1..10;

二、集合的表示

把元素放在一对中括号中,每个元素之间用逗号隔开。

[A,B,C,D]--有四个枚举量的集合 ['A','B','C','D']--有四个字符的集合 [1..20]--包含了1到20中所有整数的集合 [0]--只有一个元素0的单元素集 []--空集

注意:

1、在一个集合中可以没有任何元素,这样的集合称为空集合,用[ ]表示。 集合中最多可以有256个元素。

2、集合的值与方括号内元素出现的次序无关,称为集合元素的无序性。如[1,2,3,4]和[1,2,4,3]是两个相等的集合; 所以ord,pred和succ函数不能用于集合类型的变量。

3、同一元素的重复出现对集合的值没有影响。如[1,2,3,1,1,2]和[1,2,3]也是两个相等的集合;

4、集合中的元素值如果是连续的,则可以用子界类型来表示。如[1,2,3,4,5,8,9,10,15,21,22,23,24],可以表示成[1..5,8..10,15,21..24];

5、集合的基类型可以是任何顺序类型,包括整型、字符型、枚举型、子界型,但不能为实型或其它构造类型;

6、每个元素均可用基类型所允许的表达式来表示。如[1+10,4*2,3..6]。

7、当一个集合变量允许包含有n个元素时,不考虑有重复元素的情况,所构成的集合共有2n种可能。

假设有如下定义:

type numset = set of 1..3;

var n:numset;

则集合n的值有几种可能呢?根据组合数学不难发现共有8种可能,分别为:[ ],[ 1 ],[ 2 ],[ 3 ],[1,2 ],[1,3],[2,3],[1,2,3]。

8、Free Pascal规定集合的元素个数不超过256个(当实际问题所需的元素个数大于256时,可采用布尔数组代替集合类型)。所以如下定义是错误的: var i: set of integer;

三、集合的运算

1、集合的关系运算:集合可以进行相等或不相等、包含或被包含的关系运算,还能测试一个元素是否在集合中。所用的运算符分别是:=、<>、>=、<=、in

注意:集合in运算相当快,在程序中常用集合表达式来描述复杂的测试。 (1)条件表达式: (ch='T') or (ch='t') or (ch='Y') or (ch='y') 可用集合表达式表示为:       ch in ['T','t','Y','y'] (2)if (ch>=20) and (ch<=50) then ...;可写成:if ch in [20..50] then ...;

2、集合的并、交、差运算:可以对集合进行并、交、差三种运算,每种运算都只能有一个运算符、两个运算对象,所得结果仍为集合。三种运算符分别用"+"、"*"、"-"表示 。假设有两个基类型相同的集合A、B,如A=[1,3,4,5],B=[4,5,6,7],则A和B可以进行三种集合运算:

运算符

名 称

表示形式

定 义

运算结果

+

并集

A+B

取两个集合中不重复的所有元素

[1,3,4,5,6,7]

*

交集

A*B

取两个集合中的相同元素

[4,5]

-

差集

A-B

取在集合A中但又不在集合B中的所有元素

[1,3]

注意:

在程序设计中要把一个元素x填加到集合a中,则用并运算,方法为:a:=a+[x];{注意:一定要把x加上中括号,作为集合才好进行并运算,赋值号两边才相容}。同理,要把一个元素从一个集合中删除,就用差运算,而且一般要先判断该元素是否在集合中,方法为:

if x in a then a:=a-[x];

交运算可以取出两个集合的相同元素,假设a,b,c为同一基类型的集合,方法为:c:=a*b;

3、赋值运算:只能通过赋值语句给集合变量赋值,不能通过读语句赋值,也不能通过write(或writeln)语句直接输出集合变量的值。

输入时,只能借助于赋值语句,如n:=[1,3,5];u:=[‘A’,‘B’,‘C’,‘D’];

输出时,要借助于in运算,假设集合a =[1,3,5,7,9,11,13,15,17,19],x为integer,要求输出20之内的奇数,程序段如下:

for x:= 1 to 20 do

if x in a then write(x:3);

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯