集合类型
集合是由多个具有相同类型的元素所组成的,集合中的元素是某种数据类型的值。这些数据类成为集合的基类型。
集合在内部以位的形式存储它的元素,这使得在速度和内存利用上都更有效。集合如果少于32个元素,它就存储在 CPU 的寄存器中,这样的效率就更高了,为了用集合类型得到更高的效率。记住,集合的基本类型的元素数目要小于32。
集合中的元素是无序的,且集合中的元素不能够出现重复,有重复元素只作为一个元素。
一个集合最多可有256个元素,即集合类型的基类型的取值范围为0~255,因此声明的集合类型不能是整型,实型以及其他构造类型。
集合的基类型可以设置为字符型,布尔型,枚举型以及子界型和顺序类型。
Type下声明集合:
1 type 2 集合类型名称 = Set of 基类型;
1 type 2 TCharSet = set of char; //字符型 3 TEnum = (Monday, Tuesday, Wednesday, Thursday, Friday);//枚举型 4 TEnumSet = set of TEnum; //包含了TEnum值得任何组合 5 TSubrangeset = set of 1..10; //子界型 6 TAlphaSet = set of 'A'..'Z';
1 type 2 Language = set of (English,German,France);//枚举 3 char1 = set of char; //字符 4 number1 = set of 1..9; //子界
1 注意,一个集合最多只能有255个元素。另外,只有有序的类型才能跟关键字set of ,因此下面的代码是非法的 2 3 type 4 TIntSet = set of Integer; //非法,太多的元素 5 TStrSet = set of String; //非法,不是有序的类型
过程中使用集合:
1 procedure TForm1.Button5Click(Sender: TObject); 2 var 3 ch : char1; 4 num : number1; 5 begin 6 ch := ['a'..'z']; 7 //exclude(ch,'c');//移除一个集合元素 8 include(ch,'c');//添加一个集合元素 9 //num := [10]; 10 include(num,10); 11 if 10 in num then 12 showmessage('成功'); 13 if 'c' in ch then 14 showmessage('包含'); 15 end;
1 当使用集合的元素的时候,使用方括号。下面代码表明如何使用集合类型的变量并给它赋值 2 1.在type中定义并赋值 3 4 type 5 TcharSet = set of char; 6 var 7 CharSet : TCharSet; 8 begin 9 CharSet :=['A'..'J','a','m']; 10 end; 11 2.在过程var中定义并赋值 12 var 13 SubrangeSet : set of 1..10; //可能是1到10的任意数 14 begin 15 SunrangeSet := [1,2,4..6]; 16 end;
集合的值
1.集合的值放在一对方括号里,中间各元素使用逗号隔开。如:[1,2,5]和['a', 'e', 'i']都是集合
2.在集合中可以没有任何元素,这样的集合称为空集。[]空集
3.在集合中,如果元素的值是连续的,则可用子界型的表示法表示。例如:[1,2,3,4,5,6,10,15] 可以表示成[1..5,10,15]
4.集合的值与方括号内元素出现的次序无关。例如[1,5,8]和[1,8,5]的值相等
5.在集合中同一个元素的重复出现对集合的值没有影响。例如[1,8,5,1,8]与[1,5,8]的值相等
集合的应用实例:
1 type 2 Language = set of (English,German,France);//枚举
1 procedure TForm1.Change(Sender: TObject); 2 begin 3 if checkbox4.Checked then 4 begin 5 L := L + [English]; 6 end 7 else 8 begin 9 L := L - [English]; 10 end; 11 if checkbox5.Checked then 12 begin 13 L := L + [German]; 14 end 15 else 16 begin 17 L := L - [German]; 18 end; 19 if checkbox6.Checked then 20 begin 21 L := L + [France]; 22 end 23 else 24 begin 25 L := L - [France]; 26 end; 27 if English in L then 28 checkbox1.Checked := true 29 else 30 checkbox1.Checked := false; 31 if German in L then 32 checkbox2.Checked := true 33 else 34 checkbox2.Checked := false; 35 if France in L then 36 checkbox3.Checked := true 37 else 38 checkbox3.Checked := false; 39 end; 40 41 procedure TForm1.FormCreate(Sender: TObject); 42 begin 43 checkbox4.OnClick := change; 44 checkbox5.onclick := change; 45 checkbox6.OnClick := change; 46 end;
编程语言无所谓高低级,唯适用罢了。语言结构再天花乱坠,富丽堂皇终不过CPU上的0和1。