




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章 Object Pascal 语言,授课内容: Object Pascal语言基础 数据类型 运算符 Object Pascal的语句 过程和函数 Delphi的面向对象程序设计 异常,Delphi7程序设计教程,课前导读,Pascal语言最早由瑞士Dr.Niklaus Wirth教授1971年发表,并分别于1972和1973年两度进行修改。将该语言取名Pascal是为了纪念Blaise Pascal(布勒斯 帕斯卡,16231662,法国天才数学家、物理学家、哲学家)。Pascal语言是一种语法严谨、条理清晰的结构化程序设计语言。具有可读性强、编写容易、编译速度快等特点。一直以来,Pa
2、scal语言都是作为计算机专业的教学语言;用于培养程序员良好的结构化程序设计思想。 Object Pascal语言是在传统的Pascal语言的基础上发展扩充的,它不仅具有Pascal语言的所有特点,而且还具有便于应用程序开发的面向对象特征。Delphi使用Object Pascal语言作为编程语言。,2.1Object Pascal语言基础,Delphi的编程风格 标识符 变量 常量 程序模块 作用范围,Delphi的编程风格,良好的编程风格能增强程序的可读性。因此在编写程序时应适当地添加注释,同时选择合适的缩排和分行,这样会使程序代码显得清晰而有层次,容易读懂。,注释,在程序代码中,注释起解
3、释和说明作用,能增加程序的可读性,他对编程者、其他程序员以及程序维护人员都很重要。注释对程序的执行不会产生任何影响。在Object Pascal语言中,可以使用以下3种形式进行注释。 使用成对大括号“”和“”之间的内容为注释部分,注释文字可以包括多行。例如: 注释内容 使用成对带星号的小括号“(*”和“*)”之间的内容为注释部分,也可以包括多行。例如: (* 注释内容 *) 使用双斜杠“/”表示。其中“/”所在行的该符合之后的内容均为注释内容,不可跨行。例如: /注释内容,缩排和分行,使用缩排和分行,可以把程序代码书写得错落有致、清晰易读,是一种良好的编程风格,建议在同一复合语句内右缩书写,在
4、不同复合语句间空一行。,标识符,Object Pascal语言是由多种语法单元构成的,包括常量、变量、过程、函数、类型名、属性、对象、单元、程序等。标识符就是这些语法单元的名字。定义标识符一般采用一个或多个具有适当意义的英文单词,但需要注意以下5点: 标识符由字母、数字或下划线组成,不能包含空格。 必须以字母或下划线开始。 不能使用Object Pascal的保留字作为标识符。 标识符不区分大小写。例如sno,Sno,SNO被看成同一个标识符。 标识符可以是任意长度,但只有前面255个字符有效,变量,变量是在程序运行过程中,其值可以发生改变的标识符。它表示内存的地址,用户可以通过变量名读写内存
5、地址中的内容。在使用变量之前必须进行变量申明,即对变量进行命名,并说明它的数据类型。变量声明的基本语法如下: Var 变量名称清单:数据类型; Var i,j:integer ; 在函数和过程中声明的变量,称之为局部变量;而其他变量就称为全局变量。,常量,常量是在程序运行过程中其值不可改变的标识符。常量以保留字const开始。常量的数据类型就是常量说明中它所代表的值的类型。常量是只读的,如果用户试图在程序中改变常量的值,Delphi7.0将产生一个编译错误。 Const pi=3.1415926;,程序模块,一个应用程序就是由若干个程序模块构成的。程序模块提供了应用程序的结构,决定了变量、属性
6、值的范围及程序执行的过程等。一个程序模块有两个部分组成:声明部分和执行部分。声明部分是可选择的,包括变量声明、常量声明、类型声明、标号声明、程序声明、过程及函数声明等;执行部分叙述了可执行的操作。如果有声明部分,则必须放置在执行部分之前。 在Delphi中,最常见的程序模块是事件处理中的程序模块。此外,一个程序模块还可以是一个程序单元模块,或是一个过程程序模块。并且,一个程序模块中可以包含其他的程序模块。,一个完全的PASCAL程序结构,PROGRAM 程序名(程序参数表) LABEL 标号说明; CONST 常量说明; TYPE 类型声明; VAR 变量说明; FUNCTION 函数说明;
7、PROCEDURE 过程说明; BEGIN 语句; 语句 END.,作用范围,每一个常量、变量、方法、类型等标识符,都有自己的有效范围。只有在其有效范围内,才能对该标识符进行操作;超出了范围之外,它就不能使用了。这个范围是由标识符定义的位置所决定的。 若要访问一个不在当前范围内的声明,应在该声明之前加上其所属的程序模块的名称和一个“.”,并且把这个声明所属的模块名称加入到当前模块的uses子句中去。例如,要在Unit1中调用Procedure C,那么就需要在Unit1的uses子句中加入Unit2,再通过“Unit2.Procedure C”语句来完成。,程序模块包含关系示意图,Projec
8、t 1,Procedure A,Procedure B,Unit1,Procedure C,Procedure D,Procedure E,Unit2,2. 2 数据类型,基本数据类型 整数(Integer)类型 实数(Real)类型 字符(Character)类型 Ord( )函数:返回一个字符的序号; Chr( )函数:把一个整型数转换为相应序号的字符; UpCase( )函数:把字符小写转换为大写。 布尔(Boolean)类型 字符串(String)类型 可用字符串连接符“”将两个字符串组成一个新的字符串。 指针(Pointer)类型 声明指针类型的变量分为两个步骤(1)先声明指针类型;
9、(2)再声明指针变量;,变体(Variant)数据类型 变体类型是一种比较特殊的数据类型,因为变体类型和其他数据类型结合使用会产生类型的自动转换。它与一些基本数据类型如integer、real、string等是赋值相容的。 自定义数据类型 枚举(Enumerated)类型 子界(Subrange)类型 数组(Array)类型 集合(Set)类型 记录(Record)类型,有序数据类型分为整数类型、字符类型、布尔类型、枚举类型和子界类型。,类型相容和强制转换,2. 3 运算符,算术运算符 + - * / DIV MOD 逻辑运算符 NOT AND OR XOR SHL SHR 关系运算符 = =
10、 IN 布尔运算符 NOT AND OR XOR 字符串运算符 + 集合运算符 +(并)、(差)及*(交) 地址运算符 运算符的优先级,运算符的优先级,优先级有3个基本原则: 在两个不同优先级的运算中,先进行较高优先级的运算。 在两个同优先级的运算中,依从左至右的顺序进行运算。 括号中的表达式优先计算,计算之后视为一个单独的运算对象。 一元运算符、乘与逻辑运算符、加法运算符、关系和比较运算符,2.4 Object Pascal的语句,赋值语句 goto语句 过程语句 复合语句 条件语句 循环语句,赋值语句,赋值语句是任何一种语言中最基本、最常用的语句。任何变量在使用之前都应该赋值,如果没有赋值
11、,则全局变量的值为0,局部变量的值可以为任何数。赋值语句的语法格式为: 变量标识符:=表达式; 使用赋值语句时,需注意以下3点: 赋值号左边的变量必须是已经用变量声明语句声明过的。 赋值号是由冒号和等号组合而成的(:=),而不是等号()。 赋值号两边的数据类型必须兼容。,goto 语句,goto语句的作用是将程序的执行流程转移到指定标号代表的语句处。其语法格式为: goto 标号; 使用goto语句时,需注意以下3点: goto语句的转向对象,即标号所指向的语句与goto语句本身要在同一程序块内(例如同一过程、函数段内)。也就是说,不能用goto语句转入或转出一个过程(函数)。 从结构语句外部
12、跳转到结构语句内容(例如,从for循环外部用goto语句转入for循环之中),虽然不产生编译错误,但会产生不确定的结果。 Goto语句虽然增加了程序执行的灵活性,但是由于goto语句的任意性,破坏了程序的良好结构,不符合现代程序设计思想(结构化程序设计思想)。因此,原则上,编程时应尽量少用goto语句。,过程语句,过程语句实现对过程标识符(或函数标识符)所规定的过程(或函数)的调用。其语法格式为: 过程标识符(实际参数表); 函数标识符(实际参数表); 一个过程语句可以是一个过程调用或函数调用。如果被调用的过程或函数的说明中带有形式参数表(简称形参表),则在调用该过程或函数时,必须在过程或函数
13、标识符后加上实际参数表(简称实参表),并且,实参表中参数的个数、类型和顺序必须与形参表一致。,复合语句,复合语句是由保留字Begin和End以及其间的多个语句组成。其语法格式为: Begin 语句1; 语句2; 语句n; End; 说明: Begin和End之间的各语句结尾有一个分号,并且End结尾也有一个分号,注意不要漏写了。 复合语句虽然包含多个语句,语法上却与一个简单语句功能相同,即复合语句可以出现在语法上要求单个语句的任何地方。,条件语句,所谓条件语句就是根据一些判断条件,决定要执行的任务。Object Pascal的条件语句有两种基本形式:if语句和case语句。,if 语句,if语
14、句可分为3种不同的形式: 简化的if语句。其语法格式为: if 表达式 then 语句 标准的if语句。其语法格式为: if 表达式 then 语句1 else 语句2 嵌套的if语句。其语法格式为: if 表达式1 then 语句1 else if 表达式2 then 语句2 else if 表达式 n-1 then 语句n-1 else 语句n;,case 语句,语法格式为: case 表达式 of 常数1:语句1; 常数2:语句2; 常数n:语句n else 语句n+1 end;,Case语句8点说明,表达式必须是序数类型,不能是实型值或字符串。 常数1,常数2,常数n称作case常数。
15、case常数的类型必须与表达式的类型一致。 case语句的执行过程是:当表达式的值与某一case常数相同时,就去执行该常数后面的语句。 case常数冒号右边的语句可以是函数、过程调用、条件语句、复合语句等,这为程序员提供了极大的灵活性。 case常数可以是一个常数区间,在下界与上界之间用两个连续的圆点分开。 应注意各case常数不能互相覆盖。 在case语句中也可包含else部分。 多个case常数可以共用一条公共语句,各case常数间用逗号分开。,循环语句,当需要多次执行某一个(或某一组)语句或一个程序段时,Object Pascal提供了3种可供选择的循环语句: repeat语句 whil
16、e语句 for语句,Repeat语句,Repeat语句的语法格式为: repeat 语句1; 语句2; 语句n; until 表达式,While语句,While语句的语法格式为: while 表达式 do 语句1; 语句2; 语句n;,For 语句,For 语句的语法格式为: 1)For 循环变量:=初值 to 终值 do 语句; 2)For 循环变量:=初值 downto 终值 do 语句;,For语句说明7点,循环变量用来控制循环次数。在程序的开头,需要声明该变量,其类型一般为整型。 初值及终值可以是常数或表达式。在执行for语句的过程中,初值及终值的表达式都只计算一次。 For语句的执行
17、过程是:开始时,令循环变量等于初值,如果在初值后面的保留字是to,而且循环变量的值小于或等于终值,则执行do后语句一次,同时,循环变量的值加1。如果循环变量的值仍小于终值,就再执行一次循环体,直到循环变量的值大于终值时为止。 For语句中的to也可以用downto取代。此时,首先是循环变量的初值与终值比较。如果初值大于或等于终值,则执行循环体一次,同时,循环变量的值减1。如果循环变量的值仍大于或等于终值,就再执行一次循环体,直到循环变量的值小于终值时为止。 For语句可以嵌套使用,即一个for语句的循环体中又包含一个for语句,这样可以构成多重循环语句。 使用for语句时,应注意不要在循环体内
18、改变循环变量的值,以免造成不确定性。 当for循环结束后,一般不应直接使用循环变量的值。,2.6过程和函数,过程和函数都是能够完成某个或某些特定功能的程序段,它们在语法功能上相当于一个简单语句,即凡是语法要求简单语句的地方,都可以使用过程或函数。所不同的是,过程与函数都是独立的程序模块。过程与函数是Object Pascal语言的核心部分,它们让程序员把应用程序分成很多小的模块,再分别编写并测试独立的模块,最后组合成具有完整功能的应用程序。,过程的声明与调用,所有的过程在使用前都必须先声明。根据有无参数,过程可分为无参过程和有参过程。 过程是以保留字procedure开头的,接下来是这个过程的
19、名称和过程体部分。过程体部分是位于begin和end之间的语句序列。 应当注意,声明过程时,在过程名的结尾处有一个分号(;)。 对于自定义的过程,则必须在Delphi单元文件的实现(implementation)部分定义该过程。,无参数过程,无参数过程声明的一般语法格式为: procedure 标识符; begin 过程体 end; 声明了过程之后,只有当程序中调用了该过程,才能激活该程序块。过程调用是由过程语句来完成的,对于无参过程来说,过程语句就是该过程的标识符。即调用形式为: 过程名;,有参过程,带有参数的过程叫做有参过程。有参过程的声明格式是: procedure 标识符(形参表);
20、过程中变量的定义 begin 过程体 end; 注意 (1)形参表包括一个或多个形式参数,各形式参数都必须有类型说明。 (2)如果有多个形式参数,则同类形式参数之间用逗号相隔,不同类形式参数之间用分号相隔。 调用格式为: 过程名(实际参数);,函数的声明与调用,与过程相似,函数也是一个能够完成某种特定功能的程序块。函数的声明与过程非常相似,只是使用的保留字不同,并且多了一个“返回值”的类型。函数的声明格式如下: function 标识符(形参表):返回值类型; 函数中变量的定义 begin 函数体 end;,要注意以下5点: 标识符用于给函数命名。 关于形参表的规定与过程相同。 函数可以没有形
21、参表,即定义无参函数。但在大多数情况下,函数都是有参数的。 函数中变量的定义用于定义函数中的局部变量,即在此处定义的变量只在这个函数中有效。 函数都具有返回值,定义函数时,必须指定该函数返回值的数据类型。每一个Object Pascal语言的函数都有一个隐含的本地变量称为Result,它包含了函数的返回值。也可以在函数体内把值赋给函数名来返回一个值,这是Pascal的标准用法。,参数的传递,过程和函数声明时形参表中的参数称为形式参数,过程和函数调用时实参表中的参数称为实际参数。如果形参表和实参表能完全匹配是指它们中参数的个数一样,而且顺序排列的数据类型也完全一致。 值参数 即将参数以值的形式传递,这是Delphi默认的方式。以值的方式传递参数值传递的是参数的一个副本,在过程和函数体中是对参数的副本进行处理。 变量参数 如果希望被调用的过程(或函数)能够改变传递的参数值,就要使用变量参数。 常量参数 如果在调用一个过程(或函数)时,希望传递参数值的形参值保持不变,可以使用常量参数。在被调用的过程(或函数)的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 交通运输行业感染防控应急流程
- 清洁机器人法规与行业规范-全面剖析
- 猫人参栽培技术优化-全面剖析
- 快速消费品生产订单安排流程
- Android跨平台开发实践-全面剖析
- 校外辅导机构教学管理及职责细化
- 协商解除劳动合同培训
- 二零二五版业务员提成协议书范例
- 工程机械设备出租运输合同范例
- 二零二五版婚介合同正式合同范例
- 厂房装饰装修施工方案
- 物业管理之工程管理
- 生态农业发展与绿色金融的融合路径
- 附着龈重建在口腔种植修复中的应用探索
- 《欧式田园风》课件
- 2024年德州市人民医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 订单与合同管理制度
- 【MOOC期末】《英美文学里的生态》(北京林业大学)期末中国大学慕课MOOC答案
- 外科患者疼痛护理与管理
- 《家校社协同育人“教联体”工作方案》专题培训
- 《异常子宫出血诊断与治疗指南(2022版)》解读
评论
0/150
提交评论