版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、青岛世隆创新软件科技有限公司- 平台开发部 学习培训文档第2章 Delphi语法基础2.1标识符与保留字2.1.1 标识符标识符是Object Pascal语言中各种成分的名称,这些成分包括变量(Var)、常量(Const)、类型(Type)、过程(Procedure)、函数(Function)、方法(Method)、单元(Unit)等。 标识符可以分为三类:标准标识符、自定义标识符和限定标识符。1标准标识符 § (1)标准常量,如False、True等;§ (2)标准类型,如Boolean、Char等; § (3)标准函数,如Sin、Cos、Abs等;§
2、; (4)标准过程,如Dispose、Get、New、Pack、Put等;§ (5)标准文件,如Input、Output等。 2自定义标识符:自定义标识符可以由任意长的一个不带空格的字符串组成,包括字母AZ 、az 、数字09 和下划线“_”等。定义标识符需要遵循以下规则:§ (1)标识符不区分大小写;§ (2)标识符只能以字母或下划线开头,不能以数字开头;§ (3)标识符可任意长度,但只有前225个字符有效;§ (4)标识符中间不允许有空格; § (5)不允许使用Object Pascal语言的保留字作为标识符。 3限定标识符在De
3、lphi程序中可引用多个单元,而各个单元中全局变量、函数、过程等可能会同名,在引用时需用限定标识符来区分它们:Var Y:real;Y:=System.cos(pi);其中System称为限定符 ,而System.cos称为限定标识符。 2.1.2 保留字保留字由系统规定具有特定意义,不能被重新定义或作他用,定义了65个保留字 。注意:1单词at和on具有特殊含义,不要与它们同名。2保留字和Object Pascal一样不区分大小写。 Object Pascal的保留字andarrayasasmbegincaseclassconstconstructordestructordispinterf
4、acedivdodowntoelseendexceptexportsfilefinalizationfinallyforfunctiongotoifimplementationininheritedinitializationinlineinterfaceislabellibrarymodnilnotobjectoforoutpackedprocedureprogrampropertyraiserecordrepeatresourcestringsetshlshrstringthenthreadvartotrytypeunituntilusesvarwhilewithxor2.1.3 指令符指
5、令字只在特殊的程序位置、或当上下文关联时有意义的程序区段有自己特殊的意义,而在其他场合,用户可对其重新定义,即可将其定义为标识符,Object Pascal不会指示出错,当用户重新定义这些指令字后,在作用域内它们就失去了原来的意义了。Object Pascal中规定的指令符有39个说明:指令符private、protected、public、published和automated在定义对象类型时也作为保留字,而在其他场合则作为指令符。2.1.4 注释注释可增加程序的可读性和可维护性.1、组合符号“”与“”的成对使用表示它们之间的内容为注释部分,不支持注释的嵌套2、符号“/ ”的单个使用表示所在
6、行的该符号之后的内容为注释3、在注释符“”或“( *”后紧接着是一个美元符号“$”时,表示该句是一个编译器指令,它与普通的注释不同,通常用来对编译过程进行设置。2.2 数据类型§ 1标准数据类型属于Object Pascal内部约定的数据类型,无需定义就可以直接使用。§ 2高级数据类型体现了特殊的数据结构,在使用之前必须由用户自己定义。§ 3数据类型中整型、字符型、布尔型、枚举型和子界型被称为顺序类型,其取值是一个有序集合,每一个可能取值都与顺序有关。2.2.1 数值型数据数值型数据可分为整数类型和实数类型。1.整数类型整数类型是存储整数数据的类型 ,分为基本整形
7、和一般整形。基本整形:短整型 、小整型 、长整型 、64位整型 、字节型 、字型 、长字型 一般整形:整型 、序数型 注意:尽量使用一般整型Integer和Cardinal,可以最大限度发挥CPU和操作系统的性能。 2.实数类型实数类型是存储实数数据的类型 ,分为基本实型和一般实型。基本实型:单精度实型 、扩展型 、双精度实型 、货币型 一般实型:实型 注意:Real 类型与Double 类型完全等价。Currency类型至少有4位有效的小数位。2.2.2 字符型数据Object Pascal中的字符型数据可以分为字符型和字符串型2类7种。1.字符类型Object Pascal包括3种形式的字
8、符型数据 类型 名称 字节数 取值范围 Ansi字符型 AnsiChar 扩展ANSI字符集 宽字符型 WideChar UniCode字符集 字符型 Char ()扩展ANSI字符集 说明:(1)前2种为基本字符类型后一种为一般类型。(2)Char与AnsiChar完全等价,但Char常用。(3)常用的特殊字符: #9 跳格(Tab键) #10 换行 #13 回车(Enter键)2.字符串类型字符串类型是存储字符串数据的类型 ,Object Pascal包括了4种形式的字符串型数据类型 名称 最大长度 所需内存空间 短字符串型 ShortString 255个字符 2256B 长字符串型 A
9、nsiString 231个字符 42GB 宽字符串型 WideString 230个字符 42GB 字符串型 String 231个字符 42GB 说明: ()AnsiString类型的定义是动态分配的,内容由AnsiChar类型的字符组成,长度仅受可用内存空间的限制,以空字符Nul作为结尾。()String字符串类型,既可以是ShortString类型也可以是AnsiString类型,默认定义是AnsiString类型。2.2.3 布尔型数据布尔型数据用于关系运算和条件语句的逻辑运算,包括4种形式的布尔型数据。 类型 名称 字节数 取值 布尔型 Boolean 只能为0(False)或1(
10、True) 字节布尔型 ByteBool 0(False)或非0(True) 宽布尔型 WordBool 0(False)或非0(True) 长布尔型 LongBool 0(False)或非0(True) 说明: (1)后3种类型是为了兼容其他语言而设置的,编程时应尽量使用Boolean类型。(2)Boolean取值为False和True两个符号常量。2.2.4 类型映射及类型转换 注意:在最近版本的Delphi Pascal 编译器中,Round 函数是以 CPU 的 FPU (浮点部件) 处理器为基础的。这种处理器采用了所谓的 "银行家舍入法",即对中间值 (如 5.5
11、、6.5) 实施Round函数时,处理器根据小数点前数字的奇、偶性来确定舍入与否,如 5.5 Round 结果为 6,而 6.5 Round 结果也为6, 因为 6 是偶数。2.3 常量与变量2.3.1 常量常量即在程序的执行过程中其值不能改变的量。 常量有两种,一种是常量值本身,也称为直接常量;另一种是要用声明定义的标识符表示的常量,也称为声明常量。声明常量又可以分为符号常量和类型常量。1.直接常量直接常量是指在程序中直接引用的常数,如整型常数、实型常数、字符型常数、字符串型常数和布尔型常数。2.声明常量(1)符号常量在程序中,某一个常数反复多次出现,可以定义一个标识符来代表该常数,这个标识
12、符就是符号常量,其值在定义后不会改变。也称纯常量。定义符号常量使用常量说明语句,其语法格式为: Const <常量名1>=<常量值1>; <常量名n>=<常量值n>; 示例: const Thousand = 1000; Pi = 3.14; AuthorName = 'Marco Cantù'其中Const是保留字,表示常量定义段开始 。注意:保留字Const可单独一行也可与常量一行。不能在程序中给常量另行赋值,否则将导致语法错误。Delphi由常量值判断常量名属于哪种类型。(2)类型常量类型常量用于保存数组、记录、过
13、程以及指针等类型的值,不能出现在常量表达式中。在默认的编译器状态下,类型常量的值可改变,但当在程序中加入编译命令$j-时,则类型常量的值在运行期就无法改变。 声明类型常量的语法规则为: Const <类型常量名>:<类型>=<常量值>;示例: const Thousand: Integer = 1000;其中类型是除文件型和可变型的所有类型,常量值可以是和类型相应的常量表达式。2.3.2 变量1.变量的声明变量在单元、函数或过程的声明部分进行声明,声明的位置决定了变量的作用域。声明包括两部分:变量名和它所属的类型,变量声明的语法格式为:Var <变量名
14、1>:<类型名1>;<变量名n>:<类型名n>;示例: var Value: Integer; IsCorrect: Boolean; A, B: Char;当多个变量具有相同数据类型时,格式如下: Var <变量名1>,<变量名2>,<变量名n>:<类型名>;其中,Var是保留字,表示变量声明段的开始;同类型的<变量名>可超过一个,<变量名>间用“,”分隔;<类型名>可以是基本数据类型或是由用户定义的高级数据类型; 2.变量的使用一旦声明了一个变量应及时对它进行初始化
15、,最简单方法就是给变量赋值,在表达式中使用变量。 2.4 运算符与表达式按照操作数数目的多少来分,运算符分为下面两类:单目运算符和双目运算符。单目运算符一般放在操作对象的前面,双目运算符都放在两个操作数之间。表达式是表示某个求值规则的运算公式,由运算符和配对的圆括号将常量、变量、函数、对象等操作数以合理的形式组合而成。 2.4.1 算术运算符与算术表达式1.算术运算符算术运算符对浮点数和整数进行加、减、乘、除和取模运算,取正“+”和取负“-”是单目运算符,其他均为双目运算符。§ 说明:(1)+、-、*运算中,参加运算的数可以是整型和实型,结果自动向精度高的类型转化。(2)参加除法运算
16、“/”,结果都是实型的商。(3)参加整数除法“Div”和求余运算“Mod”的数必须是整型,结果也是整型数,符号与被除数的符号相同,小数部分被舍去。(4)在表达式a/b、a Div b和a Mod b中,如果b的值为0,将会触发一个错误。 2.算术运算符的优先级 同级运算自左至右,如果含有括号,则先计算括号内表达式的值。3.算术表达式 将数学式改写为算术表达式,考虑三个问题:一是语法,二是优先级,三是类型。 § 说明:(1)数学式中省略的运算符和表示函数参数的括号必须添加上去 (2)必须注意优先级的处理 ,恰当利用标准函数 ,注意数据类型。 2.4.2 逻辑运算符与布尔表达式逻辑运算符
17、可分为布尔运算符、位运算符和关系运算符。1.布尔运算符只能对两个布尔型操作数进行运算,结果仍为布尔型,True或False。其中,NOT是求“非”,为一元运算符 ; AND是求“与”,OR是求“或”,XOR是求“异或”,均为二元运算符 。 2.位运算符运算符 举例 操作数类型 结果类型 功能说明 NOT NOT x integer integer 即按二进制形式将每位求反 AND a AND b integer integer 将两者相对应的位进行AND运算OR a OR b integer integer 将两者相对应的位进行OR运算XOR a XOR b integer integer 将
18、两者相对应的位进行取XOR运算,两者不同时结果为1 SHL a SHL b integer integer 将a的二进制值向左移动b位,左移一位相当于乘2 SHR a SHR b integer integer 将a的二进制向右移动b位,右移一位相当于除2 注意:右移操作时原值的低位丢失,高位补0;左移操作时原值的高位丢失,低位补0。 3.关系运算符及优先级关系符 操作 操作数类型 结果类型 = 等于 简单类型,字符串或可变类型,类,类引用,指针,集合类型 Boolean <> 不等于 简单类型,字符串或可变类型,类,类引用,指针,集合类型Boolean < 小于 简单类型,
19、字符串或可变类型 Boolean > 大于 简单类型,字符串或可变类型 Boolean <= 小于等于 简单类型,字符串或可变类型 Boolean >= 大于等于 简单类型,字符串或可变类型 Boolean 4.布尔表达式布尔表达式由布尔运算符和布尔类型的操作数所组成,包括关系运算表达式和运算结果为布尔类型的函数,如Odd(x)、FileExists(x)、等。但位运算符的结果是整数类型,不能直接作为布尔操作数。2.4.3 字符串运算符 连接运算符“+”主要用于连接两个或更多的字符串。最简单的字符串表达式是字符常量、字符串常量、字符变量、字符串变量或字符函数的引用。字符串表达
20、式格式为:§ <字符串表达式>+<字符串>|<字符>当两个字符串用连接运算符连接起来后,第二个字符串直接添加到第一个字符串的尾部,结果是包含两个源字符串全部内容的新字符串。如果要把多个字符串连接起来,每两个字符串之间都要用“+”号分隔。 2.4.4 运算符的优先级优先顺序 运算符 分类描述 1(取地址),NOT,- 一元运算符 2*,/,DIV,MOD,AND,SHL,SHR 乘除及类型强制转换运算符 3+,OR,XOR 加减运算符 4=,< >,<,>,< =,> =,in,is 关系、集合成员及类型比较运算符
21、 2.5常用系统函数与过程2.5.1 数值运算函数 Delphi的数值运算函数包含了常用的数学函数(如三角函数、对数函数等)和适合计算机数据处理的其他函数(如求数组中的最大值、求三角形的斜边长等)。2.5.2 字符处理函数 对字符的处理主要包括:大小写转换、比较先后顺序、合并、查找、截取、插入、求长度以及类型转换等。2.5.3 日期时间函数 调用日期时间函数可对日期和时间进行处理 为了显示怎样使用日期时间类型及其相关例程,例:procedure TFormTimeNow.FormCreate(Sender: TObject); begin StartTime := Now; ListBox1.
22、Items.Add (TimeToStr (StartTime); ListBox1.Items.Add (DateToStr (StartTime); ListBox1.Items.Add ('Press button for elapsed time');end; 讲解: 第一句中调用了Now 函数,这个函数返回当前的日期和时间,它的值保存在StartTime 变量中,StartTime 变量是全程变量,其声明如下: var FormTimeNow: TFormTimeNow; StartTime: TDateTime;只添加了第二个声明,第一个是由Delphi自动添加的。
23、默认情况下的代码如下: var Form1: TForm1;窗体名改变后,这个声明被自动更新。2.5.4 顺序类型函数 1.顺序类型 顺序类型指整型、字符型、布尔型、枚举型、子界型5种数据类型,如下所述:(1)整数的的序数是其自身;(2)字符的序数是其ASCII 码;(3)布尔型数据:False序数为0,True为1;(4)枚举型第一个数据序数为0,其余类推;(5)子界型第一个数据序数为1,其余类推。 除第一个序数,每一个都有一个前趋值;除最后一个序数,每一个都有一个后继值。2.顺序函数 顺序函数 引用形式 函数功能描述 序数函数 Ord(x); 返回数据x的序数 前趋函数 Pred(x);
24、返回数据x的前趋值。如果将Pred函数用于第一个数据,就可能产生一个编译时的错误 后继函数 Succ(x); 返回数据x的后继值。如果将Succ函数用于最后一个数据,就可能产生一个编译时的错误 首序数函数 Low(x); 返回顺序型数据x取值集合中的第一个值(序数最小)。它还可以返回数组的第一个元素 末序数函数 High(x); 返回顺序型数据x取值集合中的最末一个值(序数最大),它还可以返回数组的最末一个元素 Dec将例程中的参数值递减1或一个特定值,其中特定值可在第二个可选参数中定义Odd如果参数为奇数返回真Inc将例程中的参数值增加1或一个特定值2.6语句2.6.1 语句的基本概念按执行
25、时间可分为:声明语句和可执行语句。声明语句包括单元说明语句、类型说明语句、变量说明语句、过程说明语句、函数说明语句和程序区段标识语句等。 可执行语句包括赋值语句、运行控制语句和结构控制语句等。 按语句的描述形式,可分为简单语句、结构语句和复合语句等。 简单语句只含有一个语句定义符或特殊标志;结构语句往往含有多于一个的语句动词;复合语句则是由begin和end括起来的若干个简单语句、结构语句和复合语句,允许复合语句多层嵌套,或为空,也就是在begin和end之间没有其他语句。 2.6.2 常见声明语句1.标号声明语句标号声明语句即用一个整型数来表示程序的某个执行语句,一行标号声明语句可以同时声明
26、几个标号,其用法如下所示:label Aa,Ab; var I:integer; begin /语句 if(I=0) then goto Aa; /语句 Aa:begin /语句 end;end;2.类型声明语句在Object Pascal中,所有的变量必须是某种特定的数据类型,类型决定了它所能包含的数值和可进行的操作,用类型声明语句可以定义新的数据类型。例如: Type TmyDim:Array1.10,1.5 of Double;3.过程声明语句 过程可以被看成一段小程序,用来实现某种特定的目标,在完整的程序中它被当作一个语句来执行。在建立过程之前应先声明。procedure NumStr
27、ing(N:Integr;Var S:string);4.函数声明语句函数与过程相似,主要区别在于函数必须有返回值,函数的声明参见下面的语句,其中,最后的Real表示函数的返回数据类型。 Function Power(X:Real;Y:Integer):Real;2.6.3 赋值语句和程序的顺序结构1.赋值语句赋值语句的语法格式为:<变量名>:=<表达式>;例: begin A := B; C := A * 2; end;2.类型兼容类型兼容是指数据类型不完全相同的量之间能进行的运算和赋值操作。 3.利用赋值语句给对象属性赋值由于属性总是归属于对象才有实际意义,所以引用
28、属性时用符号“.”来连接表示其隶属关系。如组件Editl的字体的颜色属性表示为:Editl.Font.Color。 4.顺序结构顺序结构是最简单、最常用的结构。在该结构中,各操作块按照出现的先后顺序依次执行,不产生程序流程的其他转移。它是任何程序的主体结构,即使在选择结构或循环结构中,也常以顺序结构作为其子结构。通常由若干个赋值语句或其他简单语句构成 。2.6.4 条件语句和程序的选择结构实现选择结构的是IF语句和Case语句,这两种语句又称条件语句,条件语句的功能就是根据表达式的值有选择地执行一组语句。1.if语句通过条件的布尔表达式值选择执行路径。if <条件> then &l
29、t;语句1>else <语句2>;if语句分为简单条件语句和复合条件语句。简单条件语句的<语句>中不包含其他的条件语句 。如果在If语句格式中的<语句>或<语句>本身又是一个If语句,则称为If语句的嵌套,嵌套的If语句又被称为复合条件语句。例如: procedure TForm1.Button1Click(Sender: TObject); begin / simple if statement if CheckBox1.Checked then ShowMessage ('CheckBox1 is checked') e
30、nd; 2.Case语句Case语句用来实现多分支选择结构。Case语句描述了多路择一的功能,它根据“选择器表达式”的值决定执行相应的语句。Case语句的语法格式为: case <选择器表达式> of <情况常量表>:<语句>;<情况常量表n>:<语句n>;else <其他语句列>; end;说明:<选择器表达式>的值必须是顺序类型 。示例: case Number of 1: Text := 'One' 2: Text := 'Two' 3: Text := 'Thre
31、e' end; case MyChar of '+' : Text := 'Plus sign' '-' : Text := 'Minus sign' '*', '/': Text := 'Multiplication or division' '0'.'9': Text := 'Number' 'a'.'z': Text := 'Lowercase character' '
32、;A'.'Z': Text := 'Uppercase character' else Text := 'Unknown character'end;2.6.5 循环语句和程序的循环结构从某处开始有规律地反复执行某一程序块的现象称为“循环”,完成这一功能的程序结构为“循环结构,”而其中重复执行的程序块称为“循环体”。循环结构语句有3种,它们分别是:While 语句、Repeat语句以及For语句。 1.While语句While语句属于前测型循环结构。首先判断条件,根据条件决定是否执行循环,执行循环的最少次数为0。其语法格式为:while
33、<条件> do <循环体>;说明:可在(循环体)中任何位置Break语句来终止While 循环,Break 语句通常位于IF语句后。可在循环体中任何位置放置Continue语句,以便在整个循环体没有执行完就重新判断(条件),以决定是否开始新的循环。Continue语句通常位于IF 语句之后。2.Repeat语句Repeat语句属于后测型循环结构,首先执行循环体,然后判断条件,根据条件决定是否继续执行循环,执行循环的最少次数为1。repeat § <循环体> until <条件>;示例: while (I <= 100) and (J <= 100) do begin / use I and J to compute something. I := I + 1; J := J + 1; end; repeat / use I and J to compute something. I := I + 1; J := J + 1; until (I > 100) or (J > 100);注意:两种循环另一个关键的不同点是,repeat-until 循环的条件是反向的条件,只要不满足这个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海水淡化处理中的海水锰浓度测量考核试卷
- 游乐园的植物主题园区规划考核试卷
- 森林经营与环境保护的协调与平衡考核试卷
- 知识产权在人工智能时代的创新与发展考核试卷
- DB11∕T 3025-2020 五米以下小型船舶检验技术规范
- 敬业课件教学课件
- 灯谜英语课件教学课件
- 工厂培训员工培训方案
- 淮阴工学院《建筑力学2》2021-2022学年第一学期期末试卷
- 淮阴工学院《荷载与结构设计方法》2023-2024学年第一学期期末试卷
- 新型冠状病毒肺炎诊疗方案第八版
- 教学整本书阅读课《安徒生童话》(教案)部编版语文三年级上册
- 2024年河南资本集团招聘笔试参考题库附带答案详解
- 公立幼儿园食堂财务的管理制度4篇
- 临城兴业矿产资源有限公司闫家庄铁矿矿山地质环境保护与土地复垦方案
- (2024版)大学本科新增专业《智能视觉工程》解读
- 学生心理健康一生一策档案模板
- 燃气行业应合力加强反恐防范
- 大学烹饪职业生涯
- 医疗影像技术部门KPI设计
- 到国有企业挂职锻炼的总结
评论
0/150
提交评论