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、符型布尔型布尔型枚举类型枚举类型子界类型子界类型序数类型序数类型标准类型标准类型自定义类型自定义类型简单类型简单类型构造类型构造类型集合类型集合类型数组类型数组类型记录类型记录类型文件类型文件类型可变类型可变类型数据类型数据类型2.6 集合类型集合类型2.6.1-1 集合类型的定义集合类型的定义 集集合合是是指指具具有有相相同同性性质质且且可可以以相相互互区区分分的的对对象象的的全全体体。例例如如,所所有有的的英英文文字字母母可可以以组组成成一一个个集集合合,全全体体自自然然数数组组成成一一个个集集合合,某某个个学学校校的的全全体体学学生生组组成成一一个个集集合合,等等等等。为为了了表表示示集
3、集合合,Object Pascal 引入了集合类型。引入了集合类型。使用集合类型和集合变量之前必须首先进行类型定义和变量声明。使用集合类型和集合变量之前必须首先进行类型定义和变量声明。1.集合与集合类型集合与集合类型 集合的特点是所包括的各个对象具有某种相同的性质,构成集合的集合的特点是所包括的各个对象具有某种相同的性质,构成集合的各个对象称为集合的元素,各个对象称为集合的元素,集合的元素是某种简单数据类型的值,这种集合的元素是某种简单数据类型的值,这种数据类型称为集合的数据类型称为集合的“基类型基类型”,基类型只能是顺序类型,基类型只能是顺序类型。对于集合有。对于集合有以下几个特点:以下几个
4、特点:(1)集合中的元素是互异的,即相同的元素视为同一个元素,集合)集合中的元素是互异的,即相同的元素视为同一个元素,集合1,1,2,2与集合与集合1,2是相同的;是相同的;(2)集合中的元素是无序的,)集合中的元素是无序的,1,2与与2,1是同一个集合;是同一个集合;2.6.1-1 集合类型的定义集合类型的定义2.集合定义集合定义集合的声明格式如下:集合的声明格式如下:Type =Set of;是用户定义的集合类型名称。是用户定义的集合类型名称。表示集合中各元素的类型,表示集合中各元素的类型,可以是字符型、布尔型、可以是字符型、布尔型、枚举型和子界型等顺序类型,但不能是整型、实型和其枚举型和
5、子界型等顺序类型,但不能是整型、实型和其他的构造类型。他的构造类型。(3)集合中的元素按顺序出现时可以写为子界的形式,如)集合中的元素按顺序出现时可以写为子界的形式,如6,7,8,9,11,13可写为可写为69,11,13;(4)元素与集合的关系是元素与集合的关系是“属于属于”或或“不属于不属于”关系。(关系。(in)(5)集合类型属于构造类型,是由其他的数据类型按照一定的规则构集合类型属于构造类型,是由其他的数据类型按照一定的规则构造而成的。造而成的。Object Pascal规定集合的基类型可能的值不能超过规定集合的基类型可能的值不能超过256个,个,且序号必须在且序号必须在0到到255之
6、间,这同时也表明,之间,这同时也表明,集合中元素的个数最多是集合中元素的个数最多是256个。个。例如,以下定义会显示编译错误:例如,以下定义会显示编译错误:type intset=set of 1.300;/集合元素超过集合元素超过256个个2.6.1-1 集合类型的定义集合类型的定义 若基类型为枚举或子界类型,则必须先定义该类型,若基类型为枚举或子界类型,则必须先定义该类型,再定义集合类型。例如:再定义集合类型。例如:type Colors=(Red,Blue,Yellow,White,Black);color=set of Colors;numbers=set of 1.10;2.6.1-
7、1 集合类型的定义集合类型的定义3.集合变量集合变量定义了一个集合则可以声明集合变量,集合变量声明的格式如下:定义了一个集合则可以声明集合变量,集合变量声明的格式如下:var :;集合变量的取值称为集合值,它是基类型元素的一个集合,取值范围是包括集合变量的取值称为集合值,它是基类型元素的一个集合,取值范围是包括空集合在内的全体子集。集合值的一般表示格式为方括号括起来的元素序列,空集合在内的全体子集。集合值的一般表示格式为方括号括起来的元素序列,元素之间用逗号隔开。元素之间用逗号隔开。,如下定义了一个集合变量:如下定义了一个集合变量:Type Colors=(Red,Yellow,Blue);B
8、asicColor=set of Colors;var Color1:BasicColor;则集合变量则集合变量Color1的取值可以是下列所示的任何集合:的取值可以是下列所示的任何集合:,Red,Yellow,Blue,Red,Yellow,Red,Blue,Yellow,Blue,Red,Yellow,Blue若集合类型的基类型有若集合类型的基类型有n个元素,根据组合可知该类型变量的取值有个元素,根据组合可知该类型变量的取值有2n 个,个,其中包括一个空集合其中包括一个空集合。2.6.1-2 集合类型的运算集合类型的运算1.集合的并、交、差运算集合的并、交、差运算相同类型的集合可以进行并、
9、交、差运算,其值仍是一个该类型的集相同类型的集合可以进行并、交、差运算,其值仍是一个该类型的集合。合。并运算:并运算:集合集合A、B类型相同,则类型相同,则A和和B的并运算记作的并运算记作A+B或或B+A,计,计算结果是由算结果是由A和和B中所有不重复元素组成的集合。中所有不重复元素组成的集合。交运算:交运算:集合集合A、B类型相同,则类型相同,则A和和B的交运算记作的交运算记作AB或或BA,计算结果是由计算结果是由A和和B中所有公共元素组成的集合。中所有公共元素组成的集合。差运算:差运算:集合集合A、B类型相同,则类型相同,则A和和B的差运算记作的差运算记作A-B,计算结果,计算结果是由所有
10、属于集合是由所有属于集合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.集合的关系运算集合的关系
11、运算 集合的关系运算包括类型相同集合之间所进行的相等集合的关系运算包括类型相同集合之间所进行的相等“=”、不等、不等“”、包含、包含“=”、被包含、被包含“=”等运算,以及数据是否属于集合的等运算,以及数据是否属于集合的IN运算。这些运算的结果均为布尔类型值。运算。这些运算的结果均为布尔类型值。集合相等运算:集合相等运算:如果相同类型集合如果相同类型集合A和和B的元素完全相同,则运算的元素完全相同,则运算A=B或或B=A的值为的值为True,否则为,否则为Flase。2,3=3,2的值为的值为True。集合的不等运算:集合的不等运算:如果相同类型集合如果相同类型集合A和和B的元素不完全相同,则
12、运的元素不完全相同,则运算算AB或或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=R
13、ED,GREEN,BLUE的值为的值为True。属于运算:属于运算:如果数据如果数据X与集合与集合A的基类型相同,且被包含在的基类型相同,且被包含在A中,则运算中,则运算X INA(称为(称为X属于属于A)的值为)的值为True,否则为,否则为Flase。RED IN RED,BLUE 的值为的值为True。2.6.1-2 集合类型的运算集合类型的运算3.集合运算符的优先级集合运算符的优先级集合运算符的优先级决定运算时的顺序,运算符的优先顺序如表所示。集合运算符的优先级决定运算时的顺序,运算符的优先顺序如表所示。优优先先顺顺序序运算符运算符1(最高)(最高)*(交运算)(交运算)2+(并运算)
14、、(并运算)、-(差运算)(差运算)3(最低)(最低)=(相等)、(相等)、(不等)、(不等)、=(包含)(包含)=2,3,4,5,7(D)12 in 1.10参考答案:参考答案:1、A 2、A 3、D 4、B 数组的概念数组的概念 数组是一些具有相同类型的元素按一定顺序组成的数组是一些具有相同类型的元素按一定顺序组成的序列。序列。其中每个元素由其对应的位置来指定,这个位置其中每个元素由其对应的位置来指定,这个位置就是数组的索引号(又称就是数组的索引号(又称下标下标),数组元素与索引号是),数组元素与索引号是一一对应的,用户可以通过这个索引号来存取数组的每一一对应的,用户可以通过这个索引号来存
15、取数组的每个元素。数组中的各元素是顺序地安排在内存中一段连个元素。数组中的各元素是顺序地安排在内存中一段连续的存储空间中。按照数组在定义时是否确定了元素个续的存储空间中。按照数组在定义时是否确定了元素个数可以将数组分为数可以将数组分为静态数组和动态数组静态数组和动态数组。2.6.2 数组数组 2.6.2-1 静态数组静态数组 数组是相同类型的元素按一定顺序组成的序列。数组中的每一个元素数组是相同类型的元素按一定顺序组成的序列。数组中的每一个元素都可以通过数组名和惟一一个索引号来存取。在都可以通过数组名和惟一一个索引号来存取。在Object Pascal中可以定中可以定义数组元素个数一定的数组,
16、即静态数组。根据静态数组的维数可以把义数组元素个数一定的数组,即静态数组。根据静态数组的维数可以把数组分为一维静态数组、二维静态数组和多维静态数组。数组分为一维静态数组、二维静态数组和多维静态数组。静态数组在程序初始化时必须分配内存单元,明确其固定的大小和静态数组在程序初始化时必须分配内存单元,明确其固定的大小和元素的数据类型。元素的数据类型。2.6.2-1(1)定义定义1.一维静态数组一维静态数组一维静态数组类型声明格式为:一维静态数组类型声明格式为:Type =arrayof;如定义一个数组类型:如定义一个数组类型:Type MyArray=array1.100of Real;表示定义了一
17、个有表示定义了一个有100个元素的数组类型,元素下标从个元素的数组类型,元素下标从1到到100,每个数组元素都是,每个数组元素都是Real类型,数组类型标识符为类型,数组类型标识符为MyArray。2.6.2-1(1)2.6.2-1(1)静态数组定义静态数组定义 数组类型标识符可以是任何合法的标识符。数组类型标识符可以是任何合法的标识符。Object Pascal 允许允许下标的类型为整数类型、字符类型、布尔类型、下标的类型为整数类型、字符类型、布尔类型、子界类型、枚举类型子界类型、枚举类型等。而等。而元素类型可以为任意的数据类型元素类型可以为任意的数据类型,但在同一数组中,所有元素的数据类型
18、必须相同。但在同一数组中,所有元素的数据类型必须相同。对于用户对于用户定义的数据类型作为下标类型,在使用之前必须声明。例如定义的数据类型作为下标类型,在使用之前必须声明。例如可以进行如下定义:可以进行如下定义:Type Color=(red,green,blue);Number=0.100;MyArray=ArrayColor of Integer;ColorArray=ArrayNumber of Color;以上就定义了一个以以上就定义了一个以MyArray为标识的数为标识的数组类型,其元素下标分别为组类型,其元素下标分别为 red、green和和blue,每个数组元素都是,每个数组元素都
19、是Integer类型。类型。2.6.2-1(1)2.6.2-1(1)静态数组定义静态数组定义 经过数组类型声明之后才可以定义数组变量。就像定义整型经过数组类型声明之后才可以定义数组变量。就像定义整型或实型变量一样,通过变量说明语句定义变量,例如:或实型变量一样,通过变量说明语句定义变量,例如:var A1,A2:MyArray;/A1red;A1green;A1blue 上面定义了两个数组变量上面定义了两个数组变量A1和和A2,它们的数据类,它们的数据类型是型是MyArray;也可以把数组类型的定义和数组变量;也可以把数组类型的定义和数组变量的定义组合起来,以便简化代码,例如:的定义组合起来,
20、以便简化代码,例如:var A1,A2:Array1.100 of real;数组元素的访问数组元素的访问:要访问数组中的元素,可以用数组名加方括号,方括号内是要访问数组中的元素,可以用数组名加方括号,方括号内是元素的下标值,如元素的下标值,如A13、A220等。方括号内的下标值必须等。方括号内的下标值必须符合数组类型的定义,其类型必须与下标类型一致,其值在符合数组类型的定义,其类型必须与下标类型一致,其值在下标取值范围。另外,下标可以是表达式。下标取值范围。另外,下标可以是表达式。Eg:x=4;y=16;A2x+y2.6.2-1(1)2.6.2-1(1)静态数组定义静态数组定义3.二维及多维
21、静态数组二维及多维静态数组 二维数组是指一个一维数组中的元素类型本身又是一个一维数组,声明二维数组是指一个一维数组中的元素类型本身又是一个一维数组,声明二维数组的一般形式为:二维数组的一般形式为:Type =Array,of;例如:例如:Type RealArray=Array1.20,1.100of Real;以把二维数组看做是一个矩阵,其中下标以把二维数组看做是一个矩阵,其中下标1是行,下标是行,下标2是列,这样要是列,这样要访问二维数组的元素可以写成访问二维数组的元素可以写成array12,3,即访问第,即访问第2行第行第3列的元素。列的元素。对对于多维数组可以使用循环语句给数组赋值,例
22、如:于多维数组可以使用循环语句给数组赋值,例如:var Col,Row:Integer;for Col:=1 to 20 do for Row:=1 to 100 do RealArrayCol,Row:=0;2.6.2-1(1)2.6.2-1(1)静态数组定义静态数组定义 多维静态数组的一般格式为:多维静态数组的一般格式为:Type=Array,,of 一般情况,用户的数组不超过三维数组,用到三维以一般情况,用户的数组不超过三维数组,用到三维以上的很少,但上的很少,但Object Pascal允许定义任意维数的数组。允许定义任意维数的数组。静态数组通过下标类型、维数明确了数组的大小。动态静态
23、数组通过下标类型、维数明确了数组的大小。动态数组使用时没有说明数组的大小,只是在程序设计中为数组使用时没有说明数组的大小,只是在程序设计中为程序动态地开辟存储空间。程序动态地开辟存储空间。2.6.2-1(1)2.6.2-1(1)静态数组使用静态数组使用随机产生随机产生5个小于个小于10的整数的整数,放入一维数组放入一维数组A中中,求出该组数求出该组数据的累加和及平均值据的累加和及平均值,并输出并输出.运行结果如图示运行结果如图示:var Form1:TForm1;a:array1.5 of integer;/定义全局变量定义全局变量procedure TForm1.Button1Click(S
24、ender:TObject);var i:integer;begin label1.Caption:=;randomize;for i:=1 to 5 do begin ai:=trunc(random(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:
25、=累加和为:累加和为:+inttostr(sum)+,平均平均值为值为:+floattostr(avg);end;动态数组动态数组 静静态态数数组组在在程程序序初初始始化化时时必必须须明明确确其其固固定定的的大大小小和和类类型型。然然而而在在有有些些时候,希望在数组使用的时候再分配内存,这种数组称为动态数组。时候,希望在数组使用的时候再分配内存,这种数组称为动态数组。动态数组是指在定义数组时不说明数组元素个数而是在程序运行时确定。动态数组是指在定义数组时不说明数组元素个数而是在程序运行时确定。1.一维动态数组一维动态数组一维动态数组类型声明格式为:一维动态数组类型声明格式为:Type =arr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Delphi 教学 02 面向 对象 Pascal 第二 部分
限制150内