已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.4.1 代码书写规则在编写自己的Object Pascal程序时,要注意程序的可读性。Pascal语言是英式结构语言,在程序中选择合适的缩排、大小写风格,并在需要时将程序代码分行,使得程序代码能够很容易地被自己和他人读懂。1. 缩排缩排是指在每一级有两个空格。不要在源代码中保留tab字符,因为tab字符会随着不同用户的不同设置和不同的资源管理工具(打印、文档、版本控制等)而代表不同的宽度。2. 不区分大小写Delphi是不区分大小写的语言,就是说,avar、aVar、Avar、AVAR在Delphi中代表的都是同一个变量,Delphi无法区分。基于这个特性,编程时我们就不要试图通过大小写来区分不同的变量。由于这种不敏感,为了使程序清晰易读,我们就要在编程过程中养成良好的命名习惯。过程的名字应该以大写字母开头,名字中的其他单词也应以大写字母开头,以加强可读性。下面是一个格式不合常规的过程名称:procedure thisfunctionwilldosomething; 下面是一个合适的区分大小写的名称:procedure ThisFunctionWillDoSomeThing; 过程的名称应该同它的内容相符,一个引发其他行为的过程应以动词开头,例如:procedure ReadDataFromFile; 一个用于设置输入参数的过程应以单词Set作为前缀,例如:procedure SetFormCaption; 一个用来接收某个值的过程应以单词Get作为前缀,例如:procedure GetFormCaption: string;另外,我们也可以通过在各个单词间加入下划线达到清晰易读的效果。3. 注释给程序及时地加上注释是良好的编程习惯。Delphi有两种注释方式:(1)在大段的程序上加注“”,编辑器会把它们处理成空白。Delphi保留了Borland Pascal编辑器的风格,关键字采用黑体字,被注释的部分会变暗,这使得编程风格良好,程序易读易写。(2)也可以利用符号“/”在一行上加入注释。4. 标识符标识符是Delphi应用程序中一些量的名称,这些量包括var(变量)、const(常量)、type(类型)、procedure(过程)、function(函数)、method(方法)及其他。Object Pascal在应用标识符时,必须首先声明它们。Object Pascal是强类型语言,要求相互赋值的变量类型必须相同,这样,编译器可以确保赋给变量或属性的值是正确的类型,若出现错误,也便于改正。5. 变量变量是程序代码中代表一个内存地址的标识符,而此地址的内存内容在程序代码执行时可以被改变。在使用变量前必须对它进行声明,即对它进行命名,并说明它的类型。在所有变量声明前加上保留字var。变量声明左边是变量的名称,右边则是该变量的类型,中间用“:”隔开。下面声明了几个变量:var name :string; /声明name变量为string类型 length :integer; /声明length变量为integer类型2. 构造类型构造类型是由一个或多个已经实现定义的类型按一定的方法构造而成的新数据类型。Pascal定义了4种基本构造方法,对应4种构造类型:数组型、集合型、记录型、文件型。另外,作为面向对象的编程语言,Delphi还定义了3种特殊的构造类型:类、类原型、接口。关于这3种类型,我们将在后续的章节进行详细介绍。(1)数组型数组是由固定个数的多个元素组成的有序结构,其中所有元素的类型相同。数组型的定义如下:type 标识符array下标类型 of 数据类型;其中下标类型应该是顺序类型。在Delphi中,数组的下标类型部分可以省略,这就是一个长度可变的数组(动态数组)。可以用SetLength语句改变动态数组的长度。一般,只允许通过数组变量名与相应下标访问数组变量中的一个元素。但当两个数组变量的类型相同时,允许以变量名整体地互相赋值。所谓类型相同是指使用同一个类型标识符,或类型标识符不同但有形为TP的类型定义。下面的类型定义了一个整数型的数组变量:varArr : array 1.10 of Double;它表示Arr指向一个含有10个实数型元素的数据序列,代表每一个元素序列的是110之间的数字,称为下标。数组的每一项由数组名称加上中的下标来表示。Arr包含10个变量,Arr1表示第一个变量。您也可以把数组定义成类型:type TArr = array1.10 of integer;则变量声明改为:var Arr :TArr;可以通过给数组赋值等方法来使用数组。下面的语句将0赋给Check数组中的所有元素:for I := 1 to 10 do ArrI := 0;数组也可以是多维的,下面的类型定义了一个10行10列的数组:type TArr2= array1.10,1.10 of integer;var MyArr:TArr2;(2)集合型集合是相同类型对象的聚集。构成集合的每一个对象称为集合的元素。元素的类型称为集合的基类型。集合型的定义如下:type 集合型set of 基类型;可以用5种关系运算符=、=和in来测试集合成员关系。其中运算符in可以测试某个变量是否是集合的成员。如果有这样一个集合定义:Chars := a,b,c,d,e;则表达式(a in Chars)结果为True,而表达式(x in Chars)的结果则为False。集合类型可以进行以下数学运算(设A,B是两个同类型的集合变量):1)赋值A:= ;2)并A+B,结果是A和B中的所有元素组成的集合;3)交A*B,结果是A和B中公共元素组成的集合;4)差A-B,结果是在A中但不在B中的元素组成的集合。(3)记录型数组型、集合型都是由类型相同的元素组成的有序结构,在实际问题中还经常遇到由不同类型的元素组成的结构。记录型是由不同类型的多个固定元素组成的数据。记录型定义如下:type标识符record 域标识符1:类型1; M 域标识符n:类型n;end;record下面的程序段定义了一个记录型数据:type TStudent=record Name : string20; ID:string; Score: Double; Address: string20;end;记录包含可以保存数据的域,每一个域有一个数据类型。上面定义的TStudent类型就含有4个域。可以用以下方式声明记录型的变量:var New Student:TStudent;用如下的方法可以访问记录的单域: New Student.Score := 98;编写如下程序段可以给整个记录赋值:with New Student do begin Name :=; ID := ; Score := 0.0 Address := Beijing; end;(4)文件型上述的数据类型均是在程序运行期间存在且存储于内存中的数据。计算机在处理问题时,有些数据需要长期保留,这就需要把这些数据存储在外存储器中,如磁盘、磁带等。描述与外部存储设备联系的数据称为文件。文件是一个具有符号名字的、由相同类型数据组成的数据序列。Pascal语言中的文件型是重要的数据类型之一。文件型定义如下:type 文件标识符file of 数据类型;其中数据类型可以是除文件型或以文件型为成分的构造类型以外的其他任何类型。可以把类型定义和文件变量声明合在一起,如:varafile :FILE OF integer;3. 指针类型访问一个内存变量通常有两种方法:一种是通过名字访问,另一种是通过地址访问。指针是通过地址访问变量的一种数据类型。由于动态数据结构的变量必须在程序执行过程中动态生成,不能预先声明,所以无法预先给这些变量起好名字,也无法通过名字进行访问,因此只能用指针先得到它的地址,然后间接访问它们。指针类型的定义如下:type 指针类型标识符类型标识符;可以对指针变量赋值。对指针变量赋值实际上是将新的指针变量所指向的动态存储单元的首地址赋给该指针,使该指针指向新的动态存储单元。给指针赋值必须类型相同或赋nil(空值),给指针赋值后,指针原来所指的动态存储单元中还存有数据,只是它已无法被访问。对指针可以应用比较运算符中的“”和“”进行比较。两个指针指向同一个动态变量,则两个指针变量相等,否则即为不等。1.4.3 语句在程序中,表示算法的是一系列语句。Pascal语句分为两类:简单语句和构造语句。简单语句是指不包括其他语句的语句,构造语句由简单语句按照一定的规则构造而成。1. 简单语句(1)赋值语句形式:变量 : 表达式赋值符号为“: =”。不论给属性还是给变量赋值,都是将右边的值赋给左边的属性或变量。当将一个属性值、变量、常量或文本数据赋给属性或变量时,所赋值的类型和接受此值的属性或变量的类型应相同或兼容。一个属性或变量的类型定义了此属性或变量的可能值集合,也定义了程序代码可以执行的运算。(2)复合语句复合语句是用begin和end括起来的一个语句序列,语句与语句之间用分号隔开。begin与end要配对使用。begin与end之间括起来的是一个语句整体。在if语句、case语句、with语句、for语句、while语句中的语句部分,使用了一个以上的语句时,都要使用复合语句,以确定这是一个语句整体。(3)转移语句转移语句用于改变程序的动态执行顺序,控制程序转到指定位置继续执行,该指定位置由标号表明。标号为一个语句的前缀,中间用冒号隔开,作用是标记程序的位置。其格式为:标号:语句标号必须预先在标号说明部分声明。标号声明的一般形式为:label 标号;转移语句的格式为:goto 标号;其中goto为保留字,表示使程序转移到标号处,从标号所标记的语句开始,继续执行。为了使程序结构紧凑,思路清晰,程序设计中不提倡使用转移语句。2. 控制语句(1)选择性语句选择性语句包括if语句和case语句,分别用来构成双分支选择结构语句和多分支选择结构语句。1)if语句if语句有两种格式。格式1:if条件 then 执行一段程序格式2:if 条件 then 执行一段程序else 执行另一段程序其中,“执行一段程序”和“执行另一段程序”部分还可以嵌套if语句。if语句会计算一个表达式,并根据计算结果决定程序流程。if保留字后跟随一个生成布尔值True或False的表达式。一般用“=”,“”,“”等作为关系运算符,比较的结果会产生一个布尔型值。当表达式为True时,执行then后的语句,否则执行else后的语句。if语句也可以不含else部分,表达式为False时自动跳到下一行程序。if语句可以嵌套。当使用复合语句表达时,复合语句前后需加上begin和end。else保留字前不能加“;”,而且,编译器会将else语句视为属于最靠近的if语句。必要时,须使用begin和end保留字来强迫else部分属于某一级的if语句。应尽量避免使用嵌套的if语句,在不得不使用的情况下应该用多个if语句来判断各种可能。不要使用超过5层的if语句嵌套,应使代码编写得更加清晰明了。在if/then/else语句中,最常发生的行为应放在then子句中,而其他可能性较小的行为应放在else子句中。如果在if语句中有多个条件需测试,这些条件应按计算强度由少到多的顺序从左到右排列。这样做能使编译器在编译代码时获得布尔估算逻辑的捷径,从而使代码获得最佳的优化。2)case语句case语句也叫做情况语句,它针对多种情况产生多条分支。case语句适用于被判断的变量或属性是整型、字符型、枚举型或子界型时。在一个case语句中的各个独立的单元应以数字或字母顺序排列。每一个case单元的动作行为应保持简单而不应该超过45行代码。如果所要执行的动作过于复杂,应采用独立的过程或函数。case语句中的else子句只有当需要系统默认行为或处理错误时才使用。case语句格式如下:case 表达式 of 情况标号表1:情况子句1; 情况标号表2:情况子句2; M 情况标号表n:情况子句n;end(2)重复性语句1)repeat语句repeat语句也称为直到语句。repeat语句的使用同while语句一样,并且遵循同样的规则。格式如下:repeat执行一段程序; until 循环结束条件下面的示例程序中,当语句被执行时,会循环输出110的数字。布尔表达式i=10(注意,与其他语言不同的是,“=”是关系运算符,而不能进行赋值操作)直到repeat.until程序段的结尾才会被计算,这意味着repeat语句至少会被执行一次。i := 0;repeat i := i+1; Writeln(i);until i=10;2)while语句while语句也叫做当语句。当需要的条件满足时,即进行循环。格式如下:while 布尔表达式 do语句while保留字后面必须跟一个布尔表达式。如果该表达式的结果为真,循环被执行;否则会退出循环,执行while语句后面的程序。下面程序段的执行效果和上面的repeat程序段相同:i := 0; while i10 do begin i := i+1; writeln(i);end;在一个while循环中,建议不要使用exit语句来跳出循环,应尽量使用循环条件来跳出循环。在一个while循环中所用的初始化代码应在进入while循环前出现,不要用其他不相关的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年点石联考高二上学期化学巩固卷含答案
- 留学历年考试题及答案
- 2025-2026学年湖南长沙一中高二上学期10月考英语试题含答案
- 呼叫中心和CRM方案
- 2025年商丘市梁园区辅警招聘考试题库附答案解析
- 简易版学校学生健康管理制度
- 2025年承德市隆化县(中小学、幼儿园)教师招聘试题及答案
- 2025教师聘任演讲稿(3分钟)
- 2025年二级建造师考证核心考点卷
- 2025年朔州市朔城区保安员招聘考试题库附答案解析
- 2025年小学突发公共卫生事件应急预案学校公共事件应急预案
- 临床成人气管切开患者说话瓣膜临床应用规范共识
- 涉路施工培训课件
- 临床路径培训考试题2025最 新版
- 2025至2030全球及中国汽车用差速器行业发展趋势分析与未来投资战略咨询研究报告
- 闪闪红星绘画课件
- 慢性胃炎护理教学查房
- 学堂在线 英文科技论文写作与学术报告 期末考试答案
- 随钻跟管桩技术规程培训
- 年中考英语复习人教版初中词汇变形
- 起源于围生期的某些情况课件
评论
0/150
提交评论