Delphi教学第02章面向对象的Pascal(第二部分).ppt
《Delphi教学第02章面向对象的Pascal(第二部分).ppt》由会员分享,可在线阅读,更多相关《Delphi教学第02章面向对象的Pascal(第二部分).ppt(52页珍藏版)》请在三一办公上搜索。
1、Delphi 7 程序设计,福州大学至诚学院,第二章 面向对象的Pascal,Delphi的编程语言即Object Pascal是在Pascal的基础上发展起来的,它继承了Pascal语言语法结构严谨和编译代码高效优化等优点。2.1 基本概念2.2 简单数据类型2.3 常量、变量2.4 运算符和表达式2.5 语句2.6 构造(结构)数据类型2.7 函数和过程,2.6 集合类型,2.6.1-1 集合类型的定义,集合是指具有相同性质且可以相互区分的对象的全体。例如,所有的英文字母可以组成一个集合,全体自然数组成一个集合,某个学校的全体学生组成一个集合,等等。为了表示集合,Object Pascal
2、 引入了集合类型。,使用集合类型和集合变量之前必须首先进行类型定义和变量声明。1.集合与集合类型 集合的特点是所包括的各个对象具有某种相同的性质,构成集合的各个对象称为集合的元素,集合的元素是某种简单数据类型的值,这种数据类型称为集合的“基类型”,基类型只能是顺序类型。对于集合有以下几个特点:(1)集合中的元素是互异的,即相同的元素视为同一个元素,集合1,1,2,2与集合1,2是相同的;(2)集合中的元素是无序的,1,2与2,1是同一个集合;,2.6.1-1 集合类型的定义,2.集合定义集合的声明格式如下:Type=Set of;是用户定义的集合类型名称。表示集合中各元素的类型,可以是字符型、
3、布尔型、枚举型和子界型等顺序类型,但不能是整型、实型和其他的构造类型。,(3)集合中的元素按顺序出现时可以写为子界的形式,如6,7,8,9,11,13可写为69,11,13;(4)元素与集合的关系是“属于”或“不属于”关系。(in)(5)集合类型属于构造类型,是由其他的数据类型按照一定的规则构造而成的。Object Pascal规定集合的基类型可能的值不能超过256个,且序号必须在0到255之间,这同时也表明,集合中元素的个数最多是256个。例如,以下定义会显示编译错误:type intset=set of 1.300;/集合元素超过256个,2.6.1-1 集合类型的定义,若基类型为枚举或子
4、界类型,则必须先定义该类型,再定义集合类型。例如:type Colors=(Red,Blue,Yellow,White,Black);color=set of Colors;numbers=set of 1.10;,2.6.1-1 集合类型的定义,3.集合变量定义了一个集合则可以声明集合变量,集合变量声明的格式如下:var:;集合变量的取值称为集合值,它是基类型元素的一个集合,取值范围是包括空集合在内的全体子集。集合值的一般表示格式为方括号括起来的元素序列,元素之间用逗号隔开。,如下定义了一个集合变量:Type Colors=(Red,Yellow,Blue);BasicColor=set o
5、f Colors;var Color1:BasicColor;则集合变量Color1的取值可以是下列所示的任何集合:,Red,Yellow,Blue,Red,Yellow,Red,Blue,Yellow,Blue,Red,Yellow,Blue若集合类型的基类型有n个元素,根据组合可知该类型变量的取值有2n 个,其中包括一个空集合。,2.6.1-2 集合类型的运算,1.集合的并、交、差运算相同类型的集合可以进行并、交、差运算,其值仍是一个该类型的集合。并运算:集合A、B类型相同,则A和B的并运算记作A+B或B+A,计算结果是由A和B中所有不重复元素组成的集合。交运算:集合A、B类型相同,则A和
6、B的交运算记作AB或BA,计算结果是由A和B中所有公共元素组成的集合。差运算:集合A、B类型相同,则A和B的差运算记作A-B,计算结果是由所有属于集合A而不属于集合B的元素组成的集合。利用差运算可以删除集合中的一些元素。例如,A=1,2,3,B=2,3,4,则:A+B=1,2,3,4;A*B=2,3;A-B=1;B-A=4;,集合类型数据的运算包括两大类,一类是集合的并、交、差运算,其运算结果仍为集合类型值;一类是集合的关系运算,其运算结果是布尔类型值。,2.6.1-2 集合类型的运算,2.集合的关系运算 集合的关系运算包括类型相同集合之间所进行的相等“=”、不等“”、包含“=”、被包含“B或
7、BA的值为True,否则为Flase。2,31,3,2的值为True。集合的包含运算:如果集合B中的元素都是集合A中的元素,则运算A=B(称为A包含B)的值为True,否则为Flase。1,3,2=2,3 的值为True。集合的被包含运算:如果集合B中的元素都是集合A中的元素,则运算B=A(称为B被包含在A中)的值为True,否则为Flase。RED,BLUE=RED,GREEN,BLUE的值为True。属于运算:如果数据X与集合A的基类型相同,且被包含在A中,则运算X INA(称为X属于A)的值为True,否则为Flase。RED IN RED,BLUE 的值为True。,2.6.1-2 集
8、合类型的运算,3.集合运算符的优先级集合运算符的优先级决定运算时的顺序,运算符的优先顺序如表所示。,集合运算符的优先级,当一个表达式中含有多个集合运算符时,将按优先级由高到低的顺序求值。,2.6.1-3 集合类型的使用,【例】用集合数据类型求1100之间的所有素数。分析:素数是大于1且除了1 和它本身外,不能被其他任何整数所整除的整数。对于求解1100之间的素数可以从1到100一一判断是否是素数,然后输出素数。也可以采用筛选法,将2100之间的数看成一个集合,从中选出最小数,从中筛选去掉其所有倍数,再找出第二个数将其所有倍数从集合中筛选出去,一直增加到该数为集合中最大数的一半为止,则将集合中所
9、有是其他数的倍数的数全部选出,剩下的即为素数。,启动Delphi 7.0,新建一个工程,在窗体中添加一个标签。添加Form1的FormCreate事件代码如下:procedure TForm1.FormCreate(Sender:TObject);type int100=2.100;all=set of int100;,2.6.1-3 集合类型的使用,Var part:all;i,j:integer;str:string;begin part:=2.100;/集合赋初值 for i:=2 to 50 do/双重循环进行筛选 for j:=i+1 to 100 do if(j mod i=0)t
10、hen part:=part-j;str:=;j:=0;for i:=2 to 100 do/输出经筛选后剩下的素数 if i in part then begin j:=j+1;str:=str+inttostr(i)+,;if j mod 5=0 then str:=str+chr(13);end;label1.Caption:=str;end;,运行结果如图所示。其中运用集合的差运算将不是素数的整数从集合中筛选出去。,列举1100之间的所有素数,练习,1 集合表达式1,2,3+4,5,6,1,2的值为:(A)1,2,3,4,5,6,1,2(B)1,2,3(C)4,5,6,1,2(D)1,
11、2,3,4,52 集合表达式m,n,b*a,b,c+m,n,b的值为:(A)m,n,b(B)b(C)a,b,c(D)a,c3 下列集合表达式中哪一个的值为空集:(A)a.z-a,c,B(B)a.z+a,c,B(C)a.z*a,c,B(D)z*a,c,B4 下列表达式中哪一个的值为True:(A)a in a,b,c,d(B)1.12=1.5,6.12(C)1,2+3,4*3,5=2,3,4,5,7(D)12 in 1.10,参考答案:1、A 2、A 3、D 4、B,数组的概念 数组是一些具有相同类型的元素按一定顺序组成的序列。其中每个元素由其对应的位置来指定,这个位置就是数组的索引号(又称下标
12、),数组元素与索引号是一一对应的,用户可以通过这个索引号来存取数组的每个元素。数组中的各元素是顺序地安排在内存中一段连续的存储空间中。按照数组在定义时是否确定了元素个数可以将数组分为静态数组和动态数组。,2.6.2 数组,2.6.2-1 静态数组,数组是相同类型的元素按一定顺序组成的序列。数组中的每一个元素都可以通过数组名和惟一一个索引号来存取。在Object Pascal中可以定义数组元素个数一定的数组,即静态数组。根据静态数组的维数可以把数组分为一维静态数组、二维静态数组和多维静态数组。,静态数组在程序初始化时必须分配内存单元,明确其固定的大小和元素的数据类型。,2.6.2-1(1)定义,
13、1.一维静态数组一维静态数组类型声明格式为:Type=arrayof;如定义一个数组类型:Type MyArray=array1.100of Real;表示定义了一个有100个元素的数组类型,元素下标从1到100,每个数组元素都是Real类型,数组类型标识符为MyArray。,2.6.2-1(1)静态数组定义,数组类型标识符可以是任何合法的标识符。Object Pascal 允许下标的类型为整数类型、字符类型、布尔类型、子界类型、枚举类型等。而元素类型可以为任意的数据类型,但在同一数组中,所有元素的数据类型必须相同。对于用户定义的数据类型作为下标类型,在使用之前必须声明。例如可以进行如下定义:
14、Type Color=(red,green,blue);Number=0.100;MyArray=ArrayColor of Integer;ColorArray=ArrayNumber of Color;以上就定义了一个以MyArray为标识的数组类型,其元素下标分别为 red、green和blue,每个数组元素都是Integer类型。,2.6.2-1(1)静态数组定义,经过数组类型声明之后才可以定义数组变量。就像定义整型或实型变量一样,通过变量说明语句定义变量,例如:var A1,A2:MyArray;/A1red;A1green;A1blue 上面定义了两个数组变量A1和A2,它们的数据
15、类型是MyArray;也可以把数组类型的定义和数组变量的定义组合起来,以便简化代码,例如:var A1,A2:Array1.100 of real;数组元素的访问:要访问数组中的元素,可以用数组名加方括号,方括号内是元素的下标值,如A13、A220等。方括号内的下标值必须符合数组类型的定义,其类型必须与下标类型一致,其值在下标取值范围。另外,下标可以是表达式。Eg:x=4;y=16;A2x+y,2.6.2-1(1)静态数组定义,3.二维及多维静态数组 二维数组是指一个一维数组中的元素类型本身又是一个一维数组,声明二维数组的一般形式为:Type=Array,of;例如:Type RealArra
16、y=Array1.20,1.100of Real;以把二维数组看做是一个矩阵,其中下标1是行,下标2是列,这样要访问二维数组的元素可以写成array12,3,即访问第2行第3列的元素。对于多维数组可以使用循环语句给数组赋值,例如:var Col,Row:Integer;for Col:=1 to 20 do for Row:=1 to 100 do RealArrayCol,Row:=0;,2.6.2-1(1)静态数组定义,多维静态数组的一般格式为:Type=Array,,of 一般情况,用户的数组不超过三维数组,用到三维以上的很少,但Object Pascal允许定义任意维数的数组。静态数组
17、通过下标类型、维数明确了数组的大小。动态数组使用时没有说明数组的大小,只是在程序设计中为程序动态地开辟存储空间。,2.6.2-1(1)静态数组使用,随机产生5个小于10的整数,放入一维数组A中,求出该组数据的累加和及平均值,并输出.运行结果如图示:,var Form1:TForm1;a:array1.5 of integer;/定义全局变量procedure TForm1.Button1Click(Sender:TObject);var i:integer;begin label1.Caption:=;randomize;for i:=1 to 5 do begin ai:=trunc(ran
18、dom(10);label1.Caption:=label1.Caption+inttostr(ai)+;end;end;,procedure TForm1.Button2Click(Sender:TObject);var i,sum:integer;avg:real;begin sum:=0;for i:=1 to 5 do sum:=sum+ai;avg:=sum/5;label2.Caption:=累加和为:+inttostr(sum)+,平均值为:+floattostr(avg);end;,动态数组,静态数组在程序初始化时必须明确其固定的大小和类型。然而在有些时候,希望在数组使用的时候
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Delphi 教学 02 面向 对象 Pascal 第二 部分
链接地址:https://www.31ppt.com/p-6504498.html