集合和记录
http://www.mydrs.org 4/30/2002 大榕树
二.集合的运算: 1.集合的表示: 用一组方括号括号一组元素来表示,元素之间用逗号分隔。如: [A,B,C,D]--有四个枚举量的集合 ['A','B','C','D']--有四个字符的集合 [1..20]--包含了1到20中所有整数的集合 [0]--只有一个元素0的单元素集 []--空集 2.集合的运算: (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 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函数不能用于集合类型的变量。 4.例1:建立两个集合,然后对它们进行多种集合运算,并且输出结果。(pset1.pas) 5.例2:运用集合完成筛法找素数。(pset2.pas) 三、练习: 三、练习: 蚴牵?p168_3.pas) (1)数字0,1,2,3,...,9分别和字母a,b,c,...,j互换; (2)字母k,m,p,t,y分别与其后继互换; (3)其它字母和空格保持不变,输入字符串以句号结束; 2.编程读入两个字符串,然后输出如下信息:(p168_4.pas) (1)出现在某一个字符串中至少一次的字母和数字; (2)同时出现在两个字符串中至少一次的字母和数字; (3)出现在一个字符串中而不出现在另一个字符串中的字母和数字; (4)不出现在任何字符串中的字母和数字。
★记录 一.记录的定义: type 类型标识符=record 字段名1:类型1; 字段名2:类型2; ... 字段名n:类型n; end; 如: type studata=record num:string[6]; name:string[8]; sex:boolean; s:array[1..5] of real; end; var student:studata; students:array[1..10] of studata; 二.记录的运用: 1.对记录中和个域的引用,要写出记录名和域名,如:student.num 2.开域语句:with。 with 记录名 do 语句; 或 with 记录名1,记录名2,... do 语句; 注意: (1) 在do后面语句中使用的记录的域时,只要简单地写出域名就可以了, 域名前的记录变量和"."均可省略。 (2) 在关键字with后面,语句可以是一个简单语句,了可以是一个复合语句。 (3) 虽然在with后可以有多个记录变量名,但一般在with后只使用一个记录变量名。
|