Delphi程序设计第2章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Delphi程序设计第2章.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Delphi 程序设计
- 资源描述:
-
1、第第2章章 Object Pascal语言基础语言基础在Delphi开发环境中,采用面向对象的Pascal语言(Object Pascal)。该语言源于Pascal语言。其结构清晰,语句灵活,便于移植,广泛应用于多种软件开发工具中。此外,Object Pascal语言支持面向对象技术,是一种功能完善的程序设计语言。2.1 Object Pascal的符号集的符号集符号是Object Pascal语言的基本单位。每一个符号都是由一个或多个字符构成,常见的符号种类有:标识符、运算符、标点符号和数字符号等。2.1.1 标识符标识符1.构成与功能:标识符的主要作用是标识程序中使用到的常量、变量、函数、
2、过程和类型的名称,由英文字母、数字和下划线组成。2.构成标识符原则:标识符全长不超过255个字符。标识符由字母或下划线起始。标识符对大小写不敏感。标识符中不允许出现空格。标识符不得与系统保留字或指令字重名。标识符不得与系统函数重名。2.1.2 关键字与指令字关键字与指令字1.定义:系统定义的具有特殊含义与用途的标识符称为关键字或指令字。2.联系:都是系统定义的标识符。3.区别:关键字又称保留字,用户在程序设计过程中声明标识符时一定不得与关键字重名;指令字用于程序中的特殊位置,只在自身定义的程序段范围内有效,在程序的其他范围内,用户可以声明与指令字同名的标识符。4.建议:声明用户标识符时,即不要
3、与系统关键字重名,也不要与指令字重名。关键字关键字说明关键字关键字说明absolute 定义变量,其起始地址与另一变量相同abstract创建抽象方法as将一个对象转换为另一个对象asm插入汇编语言cdecl定义调用C编写DLL中函数的规则class定义类constructor声明构造函数contains指定包(packet)中间包含文件destructor声明析构函数dynamic声明动态方法except用于异常处理export该函数可以被输出供其他用户调用exports用以输出对象,可输出多项external外部引用far标识制定函数可以远程调用finalization标识单元释放时要调用
4、的方法finally异常处理时最后调用的方法implementation标识单元实现部分inherited调用父类方法initialization单元初始化是调用方法is用于对象判断name定义方法别名near指定函数可以本地调用nodefault不允许存在默认值object声明对象pascal函数调用协议program指出工程为应用程序raise抛出异常register调用函数时在注册表中记录reintroduce重新发布threadvar定义随线程启动变量try标识异常处理开始5.常见关键字表2.1.3 注释注释1.目的:提高程序的可读性和可维护性。2.方法:花括号注释 圆括号与星号注释(
5、*)双斜杠注释/3.注意:不得使用嵌套注释2.2 常量与变量常量与变量用户程序在运行时将处理大量数据,有的数据在程序运行的整个过程都是不变的,称为常量;而有的数据在程序运行过程中,取值会发生变化,称为变量。2.2.1 常量常量由于在程序运行始终,常量值是不发生变化的,因此,常量在声明同时就要赋值。1.常量声明const(常量标识符号)=(常量值);2.声明一个常量:constpi=3.1415926;3.声明多个常量:conste=2.71828;nation=中华人民共和国;/Delphi中用单引号表标识字符串2.2.2 变量变量变量在使用之前,必须先声明,在声明时要指定变量类型,只有声明后
6、变量才能使用。1.声明变量var(变量声明1);(变量声明2);(变量声明n);变量声明包括两个部分:变量名称和变量类型。中间用分冒号开,变量声明结束后用分号标识。var /标识以下为变量声明x,y:Single;/声明两个变量x与y,它们都是实数类型str1:String;/声明一个名称为str1的字符串类型变量2.变量初值:变量声明后,系统即在存储空间中划分出适当的区域来保存该变量的取值。此时,存储空间中的值是随机的。为了提高程序的健壮性,在声明变量后Object Pascal编译器会自动为变量赋初值:整型变量声明后自动赋值为0,实型变量赋值为0.0,指针型变量赋值为null;字符串变量赋
7、值为空。2.3 数据类型数据类型数据类型是数据的重要特征,用以决定数据的形式、取值范围和相应操作。Object Pascal中数据类型可以分为简单数据类型,用户构造数据类型和指针数据类型3种。2.3.1 简单数据类型简单数据类型简单数据类型包括标准类型与用户自定义类型两种。标准类型由系统定义,包括实型、整型、字符型和布尔型;用户定义类型包括枚举型和子界型。所有的标准类型都是有序的,而除了实型以外,其他标准数据类型都是顺序的,即不但有顺序,还有顺序编号。1.实数(浮点数)类型名称字长取值范围单精度Single32位1.510-453.4103848位实数Real4848位2.910-391.71
8、038双精度Double64位5.010-3241.71030864位浮点Comp64位-263+1263-1拓展浮点数Extend80位3.610-49511.1104932货币类型Currency64位-922337203685477.5808 922337203685477.5807Object Pascal的实型数据1)实数特点:实型数据字长越长,数据精度越高。2)特殊实数:Currency:专为财务货币处理设计,该类型规定数据必须有4位小数,当Currency与其他数据类型共同运算时,Currency类型。Comp:针对Inter公司的64位CPU架构进行了优化。3)实数与整数转换:
9、TRUNC:舍弃取整,即将浮点数小数部分舍弃,得到整数;ROUND:舍入取整,即根据四舍五入原则对浮点数取整。TRUNC(1.2)=1ROUND(1.2)=1TRUNC(1.8)=1ROUND(1.8)=2TRUNC(-8.9)=-8 ROUND(-8.9)=-92.整数类型名称字长取值范围短整型ShortInt8位有符号-127128字节型Byte8位无符号0255小整型SmallInt16位有符号-3276832767字型Word16位无符号065535整型Integer/LongInt 32位有符号-21474836482147483647序数型Cardinal/LongWord32位无
10、符号0429496729564位整数Int6464位有符号-263263Object Pascal的整型数据1)整数运算:整除运算:DIV表示整除运算,相当于整数除法中的求商操作;取余运算:MOD表示取余运算,相当于整数除法中的求余数操作。7 MOD 3=27 DIV 3=16 MOD 3=26 DIV 3=02)常用函数PRED函数:表示取某个整数的前导数。SUCC函数:表示取某个整数的后继数。PRED(10)=9SUCC(10)=11PRED(-10)=-11SUCC(-10)=-9 3.字符与字符串1)字符:用以存放单个符号。类型名称字节取值范围ANSI字符AnsiChar1字节扩展AN
11、SI字符字符Char1(2)字节扩展ANSI字符宽字符WideChar2字节UniCode字符Object Pascal的字符型数据Char与AnsiChar是等价类型,而WideChar字符提供了对汉字等宽字节编码的支持(2)特殊符号表示:空格表示:或者使用系统定义了常量BLANK。定界符表示:单引号是字符定界符,其形式为:。第一和第四个单引号是表示定界符,第二与第三两个连续单引号在一起,表示符号转义,第二个单引号是转义符,表示后面的单引号不再是定位符而是普通字符了。(3)常见函数:ORD函数:求取字符在ANSI表中序号;CHR函数:求该整数序号对应的字符。例如:ORD(a)=97 ORD(
12、9)=57CHR(112)=p CHR(PRED(ORD(6)=52)字符串:(1)定义:由两个单引号定位的一串字符。类型名称字节最大长度短字符串ShortString2256255个ANSI字符长字符串AnsiString42GB231个ANSI字符宽字符串WideString42GB230个UniCode字符字符串声明的语法格式如下:Var str1:String;Object Pascal的字符型数据(2)字符串长度:一个字符串中包含字符的个数称字符串的长度。变长字符串:长度动态变化的字符串。Var str1:String;定长字符串:最大长度确定的字符串,超出最大长度的字符自动删除。V
13、ar str2:Stringn;4.布尔型1)定义:布尔型数据用于进行判断,故只有两个取值:TRUE与FALSE。2)分类:类型名称字节取值范围布尔型Boolean1字节TRUE(1);FALSE(0)2字节布尔型WordBool2字节TRUE(非0数);FALSE(0)4字节布尔型LongBool4字节TRUE(非0数);FALSE(0)一般仅使用第一种布尔类型Boolean。Object Pascal中的布尔型数据3)相关运算(1)函数运算ORD(FALSE)=0SUCC(TRUE)=FALSEPRED(TRUE)=FALSEPRED(FALSE)=TRUE(2)关系运算布尔类型数据与其他
14、数据类型进行关系运算时,运算结果为布尔值。35=FALSE35=TRUEAB=FALSETRUE0=TRUEFALSE TRUE=TRUE5.枚举类型枚举类型实际上是将用户定义的有限的具有描述意义的值与序号一一对应起来,这些值称枚举值。1)定义TYPE =(,);Var :;2)原则枚举值只能是标识符。一个枚举值只能属于一个枚举类型,且只出现一次。定义枚举类型时,该类型所有可能的取值必须全部列出3)用例用户可以定义关于色彩的枚举类型如下TYPE Color=(Red,Green,Blue);Var UsrColor,MyColor:Color;4)赋值赋值必须是该类型的枚举值或是同类型的枚举变
15、量值,以下为合法赋值:UsrColor:=Red;MyColor:=UsrColor;下面赋值是非法的:UsrColor:=Orange;MyColor:=1;5)相关运算枚举类型可以进行ORD、PRED、SUCC以及关系运算。ORD(Green)=1PRED(Blue)=Green在枚举值列表中,第一个枚举值没有前驱,最后一个枚举值没有后继。枚举类型可以进行关系运算,在运算时,根据枚举值序号大小进行比较得到结果。例如:Red Green=FALSEGreenBlue=TRUE6.子界类型用于指定变量的取值范围,便于检查不合法的输入数据。1)定义TYPE =常量1.常量2;Var :;2)要求
16、常量1与常量2的类型必须一致,它们的类型也称为子界的基类型。子界的上界(常量2对应序号)必须大于子界的下界(常量1对应序号)。3)实例TYPEAGE=0.150;character=a.z;Varpeopleage:AGE;inputchar:character;2.3.3 用户构造数据类型用户构造数据类型常见的用户构造数据类型有数组、集合和记录。1.数组数组是相同类型的数据按一定顺序排列构成的序列。1)数组特点 数组元素存放在内存中的连续区域 用户利用数组中位置的编号来操作该数组元素值2)静态数组数组元素的个数是固定的,在程序初始化时,用户必须分配数组存储单元数目,该数字在分配后不可改变。(
17、1)定义TYPE =ARRAY下标下限.下标上限 OF;Var :;(2)实例TYPEIntArr=ARRAY0.9 OF Integer;VarArrX:IntArr;(3)多维数组当数组下标对多于一对则称多维数组。TYPE=ARRAY下限1.上限1,下限2.上限2,下限n,上限n OF;Var:;例:TYPE RealArr=ARRAY1.5,0.4,3.6 OF Single;Var ArrY:RealArr;ArrY是一个三维实数数组,第一维长度为5,第二维长度为5,第三维长度为4,因此,整个数组大小为554=100,即数组共由100个Single类型数据构成。3)动态数组动态数组类型
18、在声明时不需要指定数组大小。(1)定义TYPEMYARR1=ARRAY OF Integer;MYARR2=ARRAY OF ARRAY OF Single;VarArr1:MYARR1;Arr2:MYARR2;(2)说明MYARR1是一个一维动态数组类型,MYARR2是一个二维动态数组,如果用户想定义更多维数的动态数组,只需在定义时使用多次ARRAY OF关键字。(3)使用在使用之前,必须先使用SetLength方法来确定数组大小。(4)SetLength函数SetLength(Arr1,5);/指定数组Arr1有5个元素SetLength(Arr2,4,5);/制定数组Arr2有20个元素
19、,第一维大小为4,第二维大小为52.集合类型1)集合特点 所有元素必须是具有相同特征的有序数据。有序数的类型就是集合的基类型。每个集合最多可以拥有255个元素。2)定义TYPE=set of;Var:;集合中的元素是有序的,一般情况下,基类型为子界型或枚举型。例如:TYPECharSet=set of Char;IntSet=set of 0.100;ColorSet=set of Color;VarCharS:CharSet;IntS:IntSet;ColorS:ColorSet;3)集合赋值集合在使用前要先赋值,集合值用中括号定界,对于连续取值可以采用子界形式:CharS:=0.9,a,A
20、;/集合中有12个元素值IntS:=2,4,6,8,10;/集合中有5个元素值ColorS:=;/空集合4)集合运算(1)集合可以进行并(+)、交(*)、差(-)运算,其操作数与运算结果都必须是集合类型数据。(2)集合可以进行关系运算,运算的结果是布尔类型。(3)in运算,判断某个元素值是否在集合中。Set1,Set2:IntSet;Set1:=1,3,5,6,7,8;Set2:=2,4,6,7,9;Set1+Set2=1,2,3,4,5,6,7,8,9;Set1Set2=1,3,5,8;Set1*Set2=6,7;Set1=Set2的值为FALSE;Set1Set2的值为TRUE;1,3,5
21、=Set1的值为FALSE;7 in Set1的值为TRUE;12 in Set2 的值为FALSE3.记录类型将一组数据类型关联起来共同来描述某个对象的特征。1)定义=RECORD :;:;:;END;2)实例将学生个人信息包括:学号、姓名、年龄、性别和家庭住址,这可以通过定义记录类型来描述。STUDENT=RECORDSNO:String;SNAME:String;SAGE:Integer;SSEX:Boolean;SADDRESS:Sring;END;3)赋值VarSInf:STUDENT;SInf.SNO:=123456789;SInf.SNAME:=Tom;SInf.SAGE:=19
22、;SInf.SSEX:=TRUE;SInf.SADDRESS:=19th,Well Street.;2.3.3 指针类型指针类型指针类型的变量称指针变量。这是一种特殊的变量,变量的取值是其他数据存放的地址。有了指针变量,用户可以直接操作变量地址并可以修改该地址存放的数值。1.指针定义TYPE =;基类型可以是任何基本数据类型,也可以是集合、数组和记录等用户定义数据类型,是指针标识,表示这是一个指向基类型的指针。TYPE PointOfInteger=Integer;PointOfChar=Char;PointOfStud=STUDENT;Var pInt:PointOfInteger;/定义一
23、个指向整型的指针变量 pChar:PointOfChar;/定义一个指向字符的指针变量 pStuInf:PointOfStud;/定义一个指向STUDENT结构的指针变量2.地址与数据关系pInt19810217H指针变量pInt指向地址0217H,在地址为0217H的存储单元中,存放着整数1981。3.指针操作1)分配地址new过程来为指针分配地址。例如:new(pInt)。此时,系统自动在内存中划分出一个Integer类型的存储单元,并将该单元的地址赋给pInt指针。2)指针赋值pInt:=1981;相当于X:=1981;pInt:=X;3)释放指针Dispose(pInt);4)指针加减
24、运算2171981pInt9850H9854H9858HpInt+1的含义不是pInt数值加整数1,而是表示pInt指向下一个存储单元。Int+1指向地址是9854H+4=9858H,而(pInt+1)的值为17。如果指向的是pInt 1运算,pInt则指向9850H,pInt值为19812.3.4 其它数据类型其它数据类型1.时间日期类型即Double类型,Object Pascal语言规定0对应1899-12-30正午12点整,作为标准日期时间。对于每个Double类型数据,整数部分表示与标准日期时间误差的天数,正数表示标准日期之后的天数,负数表示标准日期之前的天数;小数部分表示时间,即从
25、0点时刻到当前时刻的时间与全天24小时的比值。3.75表示日期为1900-1-2,时间为下午6时;-1.25表示日期为1899-12-29,时间为上午6时;35066表示日期为1996-1-2,时间为上午12时。在程序设计中,一般采用字符串来表示日期,然后用日期转换函数来完成字符与日期时间的转变。2.变体类型1)说明Variant类型支持所有简单数据类型以及日期类型、货币类型甚至是OLE自动化对象。Variant类型变量在程序运行期间可以转换为其他任何类型的变量。2)定义Varv:Variant;v:=1;/Variant为Integerv:=Delphi;/Variant为Stringv:=
展开阅读全文