1、 Marcos Delphi Books Essential Pascal - Web Site Essential Pascal - Local Index PASCAL精要 第一章 Pascal 历史回 顾 Delphi 中使用的面向对象 pascal 编程语言并不是 borland 公司 1995 年发布可视化开发环境 Delphi 时才有的,它只是已有 borland pascal 产品的简单扩展。 Borland 没有发明 pascal,但它推广并扩展了 pascal。这一章对 pascal 语言的历史背景及其发展历程作一简短回顾。沃斯的 pascal Pascal 语言最初由瑞士
2、苏黎士理工学院的尼古拉斯-沃斯(Niklaus Wirth)教授在 1971 年设计, 作为 Algol 语言(1960 年设计 )简化本用于教学目的。设计 Pascal 时,许多编程语言业已存在,但只有 FORTRAN、C、Assembler 、COBOL 等少数语言在广泛应用。Pascal 这种新语言的灵魂是其语言规则, Pascal 语言规则的管理是通过强健的数据类型概念、强制性的数据类型声明与程序结构化控制来实现的,当时设计 Pascal 的初衷是想把这种语言用作程序设计课程的教学工具。Turbo Pascal 1983 年 Borland 公司推出了世界闻名的 Pascal 编译器
3、- Turbo Pascal,实现了詹森和沃斯(Jensen if . thenbeginstatement1;statement2;end;if . thenbeginif . thenstatement1;statement2;end;相似的缩进格式常用于变量或数据类型声名区,也可用于语句的续行:typeLetters = set of Char;varName: string;begin long comment and long statement, going on in thefollowing line and indented two spaces MessageDlg (Th
4、is is a message,mtInformation, mbOk, 0);提出以上代码编写格式只是向你建个议而已,这样代码能更加易读,其实代码格式并不影响编译结果。在本书的例子和代码段中我始终坚持使用上述代码风格,Delphi 中的源代码、手册和帮助例子均采用了相似的格式化风格。突出 Pascal 元素 为了使 Pascal 代码更易读写,Delphi 编辑器中增加了 Pascal 元素的色彩设置功能,也就是编辑器会用不同的颜色表示不同的 Pascal 元素。缺省情况下,关键字以粗体表示,字符串和注释用蓝色表示( 并且常常是斜体)。用不同色彩显示不同的 Pascal 元素对保留字、注释和
5、字符串十分有利,因为着色后你一眼就可以看出拼错的关键字、没有正常结束的字符串及多行注释。使用编辑器环境选项对话框中的色彩(Color)页,很容易就能定制各种 Pascal 元素的色彩(见图 2.1)。如果独自工作,那么你可随意选择喜欢的颜色。如果是与其他程序员合作,那么应该使用大家统一的标准颜色。我感觉在同一台计算机上使用我不习惯的色彩配置确实很难受。图 2.1 编辑环境设置对话框 注意:本书中我选用了一种色彩方案来显示源代码清单,希望能使代码更易读。 使用代码模板 Delphi 3 中增加了用于代码编辑的新功能“代码模板”。由于写 Pascal 语句时,常常会重复键入相同的一组关键字,为此
6、Borland 公司开发了名为“代码模板”的新功能,代码模板中存放了能与代码缩略形式对应的完整代码,你输入缩略代码,然后按 Ctrl+J,完整的代码就出现了。例如,你输入 arrayd,然后按 Ctrl+J,Delphi 编辑器会把你的文本扩展为:array 0. of ;由于同一种代码结构在预定义的代码模板中通常有多种样式,所以模板中的缩略形式一般加有一个后缀字母,以便你选用。此外,你也可以只输入缩略形式的头几个字母,如你输 ar,然后按 Ctrl+J,那么,编辑器中会弹出一个菜单,菜单中列出了代码缩略形式选项,见图 2.2所示。图 2.2 代码模板选项 代码模板可以定制,就是你可以修改已有
7、的模板也可以添加自己常用的代码段。用代码模板输入的代码文本中通常会出现| 字符,它表示输入模板代码后光标应跳到的位置,就是说你应该从这个光标位置开始输入,写完这句代码。编程语句 标识符一经定义 ,你就可以在语句及组成语句的表达式中使用它们。Pascal 提供了许多语句和表达式,首先来看看关键字、表达式和运算符。关键字 关键字是 Object Pascal 的保留标识符,在语言中有着特殊含义。保留字不能用作标识符,指令字也同样不应该用作标识符,即使编译器允许也最好不用。在实际中你不应该把任何关键字用作标识符。表 2.1 是面向对象 Pascal 语言(Delphi 4)中特殊标识符的完整列表,其
8、中包括关键字及保留字。表 2.1:面向对象 Pascal 语言中的关键字及保留字 关键字 作用absolute 指令 (变量)abstract 指令 (方法)and 运算符 (布尔)array 类型as 运算符 (RTTI)asm 语句assembler 向后兼容 (汇编)at 语句 (异常处理)automated 访问类别符 (类)begin 块标记case 语句cdecl 函数调用协定class 类型const 声明或指令(参数)constructor 特殊方法contains 运算符 (集合)default 指令 (属性)destructor 特殊方法dispid dispinterfa
9、ce 界面类别符dispinterface 类型div 运算符do 语句downto 语句 (for)dynamic 指令 (方法)else 语句 (if 或 case)end 块标记except 语句 (异常处理)export 向后兼容 (类)exports 声明external 指令 (函数)far 向后兼容 (类)file 类型finalization 单元结构finally 语句 (异常处理)for 语句forward 函数指令function 声明goto 语句if 语句implementation 单元结构implements 指令 (属性)in 运算符 (集合) - 工程结构in
10、dex 指令 (dipinterface 界面)inherited 语句initialization 单元结构inline 向后兼容 (见 asm)interface 类型is 运算符 (RTTI)label 声明library 程序结构message 指令 (方法)mod 运算符 (数学)name 指令 (函数)near 向后兼容 (类)nil 数值nodefault 指令 (属性)not 运算符 (布尔)object 向后兼容 (类)of 语句 (case)on 语句 (异常处理)or 运算符 (布尔)out 指令 (参数)overload 函数指令override 函数指令package
11、 程序结构 (控件包)packed 指令 (记录)pascal 函数调用协定private 访问类别符 (class)procedure 声明program 程序结构property 声明protected 访问类别符 (类)public 访问类别符 (类)published 访问类别符 (类)raise 语句 (异常处理)read 属性类别符readonly dispatch 界面类别符record 类型register 函数调用协定reintroduce 函数指令repeat 语句requires 程序结构 (控件包)resident 指令 (函数)resourcestring 类型saf
12、ecall 函数调用协定set 类型shl 运算符 (数学)shr 运算符 (数学)stdcall 函数调用协定stored 指令 (属性)string 类型then 语句 (if)threadvar 声明to 语句 (for)try 语句 (异常处理)type 声明unit 单元结构until 语句uses 单元结构var 声明virtual 指令 (方法)while 语句with 语句write 属性类别符writeonly dispatch 界面类别符xor 运算符 (布尔)表达式和运算符 建立表达式没有通用的方法,因为要取决于所用的运算符,Pascal 包括有逻辑运算符、算术运算符、布尔运算符、关系运算符和集合运算符等等。表达式可用于确定赋给一个变量的值、计算函数或过程的参数、或者判断一个条件,表达式也可以包含函数调用。表达式是对一个标识符的值而不是标识符本身进行运算。所有编程语言中的表达式都是常量、变量、数值、运算符和函数值的合法组合。表达式可以传递给过程或函数的值参,但不能传递给过程或函数中的引用参数。运算符及其优先级 如果你以前写过程序,那么你已经知道表达式是什么了。这里我专门讲一下 Pascal 运算符的特殊部分:运算符的优先级。表 2.2 中按优先级分组列出了 Pascal 语言的运算符。