《《Delphi程序设计与应用教程》电子教案 第二章Objectpascal语言基础》由会员分享,可在线阅读,更多相关《《Delphi程序设计与应用教程》电子教案 第二章Objectpascal语言基础(96页珍藏版)》请在金锄头文库上搜索。
1、第二章 Object Pascal语言基础,2.1 词法符号 2.2 常量与变量 2.3 简单数据类型 2.4 结构类型 2.5 运算符优先级,2.6 语句与流程控制 2.7 过程与函数 2.8 程序与单元的结构 2.9 标识符的作用域,2.1 词法符号,例2-1:了解Delphi源程序 由程序可见,Delphi源程序是由单词和符号组成的纯文本。,一、 基本符号,Object Pascal语言仅使用以下几类基本符号: 1. 大小写英文字母 A、B、C、Z等26个大写,和a、b、c、z等26个小写字母。 2. 数字符号 0,1,2,3,4,5,6,7,8,9等。 3. 其他符号 有+,-,*,/
2、,=,(,),_,;,:,,,.,#,$,及空格符等。,二、保留字、标识符、标准标识符、指令字,1.保留字 程序如同一篇文章,由字符组成单词,再由单词和符号构成句子语句。其中有一类单词,它们具有特定的语法含义,称为保留字(reserved words)。程序员不得重新定义保留字的语义。常用的保留字如:begin、end、if、and、for、do等。 2.标识符 标识符用作常量、变量、数据类型、过程、函数、单元及程序等的名称。由一个或多个ASCII码字符序列组成,其构词规则如下: (1)标识符由字母、数字或下划线组成;,(2)标识符的第一个字符必须是字母或下划线; (3)标识符的长度不应超过2
3、55个字符,否则只有前255个字符有效; (4)不能将保留字用作标识符; (5)标识符不区分大、小写。 例如:x、x1、max、a15、Button_OK都是合法的标识符,而5x、x-y、ax10.5等都是非法的标识符。,3. 标准标识符 在Object Pascal语言中,有一类标识符是系统预先定义的,它们用于标识系统预先定义的标准函数、标准过程、标准类型、标准常量及标准文件等。 标准常量,如False、Maxint、True等。 标准类型,如Boolean、Char、String、TDateTime等。 标准函数,如Abs、Eof、ShowMessage、Sqrt等。 标准过程,如Disp
4、ose、New、Read、Readln、Reset等。 标准文件,如Input、Output等。 标准标识符是可以重新定义的。(例2-2),注意: (1)当程序中自定义的标识符与其引用的单元中所定义的重名时,如果要访问被引用单元的标识符,则必须指示为外部单元的标识符,不然访问的是本程序定义的标识符。 (2)因System单元是自动引用的,不必也不允许在引用部分列出System单元。,4. 指令字 指令字为编译提供指示意义。 各指令字有它专门的用途,如:absolute指令字用于指示相同类型的另一标识符存放在同一个内存区域。如下面代码: var I: Integer; J: Integer ab
5、solute I; 这里用到了指令字absolute,它声明变量J和已存在的同类型变量I的值驻留在同一段内存单元中,即I与J实为同一变量。,2.2 常量与变量,常量:在程序中,值始终保持不变的量,包括字面常量、符号常量 和类型常量等。 变量:变量是一种可随时更改其值的量 。一个变量在某一个时刻有且仅有一个值。,一、常量,1. 字面常量 (1)整型常量 即整数,如3、10000、-90。在Object Pascal中十六进制形式表示整型常量以字符$开头,如$20相当于十进制的32。 (2)实型常量 即实数,例如,6.6、0.77e+4。后者的表示方法称为指数记数法或科学记数法,0.77e+4表示
6、0.77104。 Pascal语言中的实数表示和日常书写的形式基本相似,但要注意以下几点: 小数点前后一定要有数字。,数中不允许包含空格字符与逗号。例如1,000,000是不合语法的。 没有分式表示。 使用指数记数法时,e前面应有整数或实数,e后面必须是整数。 例如:88.0、-0.8、1e+23、-3.45e-6都是正确的实数表示法,而88.、.66、4.4e5.5、e6则是不正确的。 (3)布尔常量 它是指False和True这两个值,False表示逻辑值“假”,True表示逻辑值“真”。,(4)字符常量 字符常量有两种表示方式: 用单引号对括起来的单个字符,如a、*、2等。 用#引导一个
7、整数,整数表示该字符的ASCII码。例如,#13、#$20、#$30、#65分别表示回车符、空格符、数字符号0、字母A。 因单引号用于定界字符常量,所以用表示单引号字符。 (5)字符串常量 字符串常量是用单引号对括起来的一串字符,例如,Good idea、96.5、#=。,当字符串内有单引号时,要用两个连续单引号表示,例如,Most childrens English Course。 书写字符串需要注意以下几点: 空格字符可以是字符串的组成部分。所以在字符串中的任何空格字符都是其值的一部分; 字符串中的字母有大小写区分,即A1不等于a1。,2. 符号常量 字面常量可以在程序中直接使用,而由标识
8、符表示的符号常量需预先定义。 常量定义的一般形式为: const =表达式; 以保留字const后开始常量声明;“=”号左边为常量标识符;“=”号右边的表达式可以由常量、部分在程序编译时可计算的函数,及先定义的常量标识符等构成,表示符号常量的值。,Object Pascal对常量定义有如下要求: 必须遵循先定义后使用的原则,即只有已定义的常量标识符才能在程序中使用。 不能改变符号常量的值。 可用于常量定义的函数,即在程序编译时可计算的函数,有Abs、Chr、Hi、Length、Lo、Odd、Ord、Pred、Ptr、Round、SizeOf、Succ、Swap、Trunc等。使用常量定义的意义
9、在于减少常量值差错机会与修改程序的工作量,并提高程序的可读性。,二、类型常量,类型常量定义在Pascal程序的声明部分,以保留字const开头。一个类型常量定义部分可包含多个类型常量定义,每个类型常量定义末尾均有分号,其一般形式为: const :=表达式; 例:const Pi: Double = 3.1415926; 类型常量的用法同变量完全一样,可以对类型常量重新赋值。,三、变量,变量说明的一般形式为: var :; 其中,变量标识符列表中可以包含一个或多个变量标识符,若有多个变量标识符时,相邻的两个变量标识符之间应使用逗号“,”隔开;类型标识符用以指定这些变量的数据类型。 变量说明以保
10、留字var开头。一个变量说明部分可包含多个变量的说明,每个变量说明末尾均有分号。,2.3 简单数据类型,在Object Pascal语言中,每个数据都有一个确定的类型,某种数据类型定义了该类型数据的存储方式和允许的一组运算,存储方式的定义相应地便确定了该类型数据的取值范围。 Object Pascal是一个强类型语言,拥有丰富的数据类型,并允许程序员自定义新的数据类型。 常见的分类方法中,数据类型分为简单类型、字符串类型、结构类型、指针类型、过程与函数类型和可变类型等。,一、有序数据类型,有序数据类型定义的是取值有序的数据集。其特点是:数据的分布是离散的;除了第一个元素外,其他任何元素都有一个
11、前驱元素;除了最后一个元素,其他任何元素都有一个后继元素。 Object Pascal提供的有序数据类型有:整型、字符 型、布尔型、枚举型和子界型等五种类型。 常用的有序数据操作函数有:ord、prec、succ、high、low;常用过程有:inc、dec。,1. 整型 (1)存储格式和取值范围 整型仅表示整数的一个子集,通用的整数数据类型包括Integer和Cardinal,其它基本的整型包括Shortint、Smallint、Longint、Int64、Byte、Word和Longword。 (2)运算符 算术运算符:、-、*、div(整除)、mod(取模),若参加算术运算的两个数都是整
12、型数据,则运算结果也是整型。,关系运算符:=、=、5的值为False。 正负号运算符:+、- 与加、减运算不同,此为单目运算。如-a,求运算元的负值。 整型数的逻辑运算符:not、and、or、xor 整数转换为二进制数后逐位进行逻辑运算。其中not是单目运算符。,例: 00000000 01010110 (86)10 and 00000101 00010100 (1300)10 00000000 00010100 (20)10 左、右移位运算符:Shl、Shr Shl运算符的运算格式为A Shl n,表示将整型数A的各位向左移n位,高位溢出,低位补0。Shr运算符的运算格式为A Shr n,
13、表示将整型数A的各位向右移n位,低位溢出,高位补0。 如:00000000 01010110左移2位后,为00000001 01011000,即:表达式86 Shl 2的值为344。 例2-3:交换一个字符序号值的高4位和低4位。,(3)标准函数和标准过程 绝对值函数Abs(x),函数值为|x|。 例如:Abs(-100)的值为100,Abs(99)的值为99。 平方函数Sqr(x),函数值为x2。 例如:Sqr(-4)的值为16,Sqr(3)的值为9。 奇函数Odd(x),函数的结果为布尔型。当x为奇数时,函数值为True;当x为偶数时,函数值为False。 例如:Odd(3)的值为True
14、,Odd(4)的值为False。 字符函数Chr(x),函数返回ASCII码值为x的字符。 例如:Chr(65)的值为A。,取高、低字节函数Hi(x)和Lo(x),分别返回整型数x的高字节和低字节,结果是Byte类型。 例如:Hi($1234)的值为$12,Lo($1234)的值为$34。 交换函数Swap(x),将整型数x的高字节和低字节进行交换,交换后的两个字节重新组成一个整数作为函数返回值。 例如,Swap($1234)的值为$3412。 其他操作函数或过程:ord、prec、succ、high、low、inc、dec 。 例:有序数操作函数,2. 字符型 基本的字符型有AnsiChar
15、和WideChar两种。AnsiChar类型的数据是一个字节(8位)编码的,与扩充的ANSI字符集对应。而WideChar是两个字节(16位)编码的,与Unicode字符集对应,Unicode字符集的前256个字符和ANSI字符集相同。 通用字符类型是Char,和AnsiChar相当。 (1)取值范围 (2)运算符 Object Pascal语言允许用=、=、=六个关系运算符对字符型数据进行运算操作。,用字符序号的大小关系来定义相应字符的大小关系,因此,所有的字符都可以进行比较(即关系运算)。 AB / 结果为True ba / 结果为False 12 / 结果为True (3)标准函数 例:
16、有序数操作函数 (同上例),3. 布尔型 布尔类型的标准类型标识符为Boolean。 (1)取值范围 布尔型变量的取值范围仅有False和True两个值。布尔类型是有序类型。规定: False的序数为0,True的序数为1。 (2)运算符 六种关系运算操作同样适用于布尔型数据,运算结果仍是布尔类型值例如: False=True / 结果为False TrueFalse / 结果为True,逻辑运算符:not(非)、and(与)、or(或)、xor(异或)。 (3)标准函数 例:有序数的操作函数,4. 枚举类型(enumerated) 枚举类型是一个以标识符标识的有序整型常数的集合,这些常数是该类型变量可取的合法值。声明枚举类型的语法如下: type typeName = (val1, ., valn); 其中ty