集合与记录。
集合。集合是一序列有共同性质或联系的数据组成的一个集体。如日常生活中所说的:
一个班的全体同学;一个书架上所有的书等。而在 pascal语言中,集合一般都是指一系列的数值或字符等数据,如:小于 10的正整数; 26个英语字母等。
集合也象常 /变量一样有自己的名字,即集合名,它是在程序头部象定义变量一样来定义的。
记录型数据类型是 pascal语言中做搜索问题中一定要用到的数据类型,所以,它在 pascal语言中占着非常重要的地位。学过数据库管理软件的人都知道,在数据库文件中,有一个非常重要的概念 —记录,例如:一个人的各门成绩,一个人的各种信息(姓名、性别等等),我们都把它们存放成一条记录而给予一个统一的名称。
一。集合的定义:
type 类型名=set of 基类型。
例如:type
num=set of char;
varn:num;或。var
n: set of char;
以下集合类型的定义是错误的:
typet1=set of integer;
t2=set of -30..-20;
t3=set of real;
二。集合的运算:
1、集合类型的数据可以进行赋值。
例如:var
a:set of 0..255;
begina:=[2,3,5,7];
2.集合的表示:
用一组方括号括号一组元素来表示,元素之间用逗号分隔。如:
[a,b,c,d]--有四个枚举量的集合。
['a','b','c','d']-有四个字符的集合。
[1..20]--包含了1到20中所有整数的集合。
[0]--只有一个元素0的单元素集。
空集 3.集合的运算:
(1)赋值(:=
ll:=[a'..c'];
(2)并(+)
[0..7]+[0..4]的值为[0..7]
(3)交(*)
[0..7]*[0..4]的值为[0..4]
(4)差(-)
[0..7]-[0..4]的值为[5..7]
(5)相等(=)
[0..7]=[0..4]的值为false
(6)不等(<>
[0..7]<>0..4]的值为true
(7)包含于(<=
[0..7]<=0..4]的值为false
(8)包含(>=
[0..7]>=0..4]的值为true
(9)成员存在于 (in):
1 in [0..4]的值为true
练习:1 in [1,2,3] 的值。
1 in [2,3,4] 的值。
1,2]=[1,2] 的值。
1,2]=[1,3] 的值。
1,2,3]>=1,2] 的值。
1,2]>=1,2,3] 的值。
解答。元素与集合之间可以进行“属于”运算,运算符为in,运算结果为布尔值。对于一个元素x和集合a,若x是a的元素,则称“x属于a”,表达式x in a的值为真;若x不是a的元素,则称“x不属于a”,表达式x in a的值为假。
例如:1 in [1,2,3] 的值为真。
1 in [2,3,4] 的值为假。
集合之间可以进行并、差、交三种集合运算:
(集合并)——产生一个包含两个集合元素的集合;
(集合差)——产生一个包含所有属于第一个集合,但不属于第二个集合的元素的集合;
(集合交)——产生一个只包含两个集合的公共元素的集合;例如:
集合之间可以进行“相等”和“包含”两种关系运算,运算结果为布尔值。
若两个集合的所有元素都相同,则这两个集合是相等的。
若集合b的所有元素都是集合a中的元素,则有a>=b,即b<=a。
例如:1,2]=[1,2] 的值为真。
1,2]=[1,3] 的值为假。
1,2,3]>=1,2] 的值为真。
1,2]>=1,2,3] 的值为假。
3.注意:(1)集合运算相当快,在程序中常用集合表达式来描述复杂的测试。如。
a)条件表达式: (ch='t') or (ch='t') or (ch='y') or (ch='y') 可用集合表达式表示为:
ch in ['t','t','y','y']
b)if (ch>=20) and (ch<=50) then ..
可写成:if ch in [20..50] then ..
(2)集合类型是一种使用简便,节省内存面又运算速度快的数据类型。
(3)turbo pascal规定集合的元素个数不超过256个(当实际问题所需的元素个数大于256时, 可采用布尔数组代替集合类型)。所以如下定义是错误的: var i:
set of integer;
(4)集合类型变量不能进行算术运算,了不允许用读/写语句直接输入/输出集合。 所以集合的建立:
a)要通过赋值语句实现;
b)或先初始化一个集合,然后通过并运算向集合中逐步加入各个元素。
(5)集合元素是无序的,所以ord,pred和succ函数不能用于集合类型的变量。
集合是具有共同性质的一组数据构成的整体,集合中的数据叫做集合元素,简称元素。例如,10以内的所有质数构成一个集合,它包括共4个元素,其共同性质是:是质数并且不大于10。
不包括任何元素的集合叫做空集。
集合有以下基本性质:
1、元素唯一性:集合中不存在重复的元素,即每个元素都是唯一的。
2、元素无序性:集合中的元素是没有排列顺序的。
pascal语言的集合类型有以下限制:
1、集合的元素必须是有序类型的数据。
2、集合的元素数目不能超过256个。
实例。例1:从键盘上输入10个数,添加到集合中,然后输出集合的全部元素。
vars:set of 0..255;
i,n:byte;
begins:=[
for i:=1 to 10 do begin
read(n);
s:=s+[n];
end;for i:=0 to 255 do
if i in s then write(i,'
end.例2:编写一个加密程序将一个英文句子加密后输出。加密译码规则为:
a、由键盘输入英文句子和密钥m(20<=m<=50)
b、将其中的英文字符都变为大写,用数字1..26分别代表'a'..z'并加上密钥m后输出。
c、将其中的空格用数字'0'输出。
d、其它符号则变成ascii序号加上100输出。
e、输出数字之间用空格分隔。
varst:string;
m,i:byte;
c:char;
beginwrite('input a sentence: '
readln(st);
repeat
write('input m: '
readln(m);
until m in [20..50];
for i:=1 to length(st) do
if st[i] in ['a'..z','a'..z'] then begin
c:=upcase(st[i]);
write(ord(c)-64+m,'
end else if st[i]='then write(0,'
else write(ord(st[i]+100,'
end.例3:用筛选法求2至100中的所有质数。
分析:筛选法是比较常用的求质数的算法之一,适用于求2到一个给定的上限n之间的全体质数,基本思想是:
1、设立一个2到n之间的全体整数的集合sieve,作为筛选的“原材料”
2、设立一个集合primes,用于存放筛选出来的质数,其初始状态为空。
3、i从集合sieve中最小的质数2开始。
4、先将i添加到primes中,然后将i的所有整倍数(包括i本身)从sieve中删除,此时sieve中剩下的最小元素x一定是与i紧邻的质数。
5、将i更新为x
6、重复执行第步,直到sieve中没有元素为止,此时primes中存放的就是筛选出来的2到n之间的全体质数。
constn=100;
varsieve,primes:set of 2..n;
p,d:byte;
beginsieve:=[2..n];
primes:=[
p:=1;repeat
repeat
p:=p+1;
until p in sieve;
primes:=primes+[p];
d:=p;repeat
sieve:=sieve-[d];
d:=d+p;
until d>n;
until sieve=
for d:=2 to n do
第一课时集合
一 集合。1 集合描述性定义为 某些指定的对象就成为一个集合,简称 集合中的每一个对象叫做这个集合的 2 集合中的元素属性具有 123 3 集合的表示法常用的有和韦恩图法三种。4 元素与集合是属于和的从属关系,若a是集合a的元素,记作5 集合与集合的关系用符号表示 6 子集 若集合a中都是集合b的元...
第一课时集合
知识能否忆起 一 元素与集合。1 集合中元素的三个特性。2 集合中元素与集合的关系 元素与集合之间的关系。有和两种,表示符号为和 3 常见集合的符号表示 4 集合的表示法。二 集合间的基本关系。三 集合的基本运算。小题能否全取 1 2012 大纲全国卷 已知集合a b c d 则。a abb cb ...
第一课时集合
教学目标 1 在具体情境中,使学生感受集合的思想,感知集合圈的产生过程。2 能借助直观图,利用集合的思想方法解决简单的实际问题,同时使学生在解决问题的过程中,进一步体会集合的思想,进而形成策略。3 渗透多种方法解决重叠问题的意识,培养学生善于观察 勤于思考的学习习惯。教学重点 让学生感知集合的思想,...