Delphi程序设计基础.ppt
《Delphi程序设计基础.ppt》由会员分享,可在线阅读,更多相关《Delphi程序设计基础.ppt(79页珍藏版)》请在三一办公上搜索。
1、第3章 Object Pascal语言基础,3.1 标识符与保留字3.2 数据类型3.3 常量与变量3.4 运算符和表达式3.5 常用内部函数3.6 程序语句,3.1 标识符与保留字、指令字,3.1.1 标识符Object Pascal语言使用的是ASCII码字符集,包括字母AZ、az、数字09和其他的一些标准字符。下面的单个字符可作为特殊符号:#$另外,有些字符对也作为单个的特殊符号,具体有:(*(.*).)./:=其中,左中括号“”等价于“(.”,右中括号“”等价于“.)”,左大括号“”等价于“(*”,右大括号“”等价于“*)”。在Object Pascal语言中,标识符(Identifi
2、ers)用来标志常量、变量、类型、属性、对象、过程、函数、程序、单元、库和组件库等。标识符可以由任意长的一个不带空格的字符串组成,但是只有前面的255个字符有效。标识符的第一个字符必须是字母或下划线,其余字符可以是字母、数字或下划线。一般标识符可以由一个或多个具有适当意义的英文单词组成。Pascal语言对于字母的大小写不敏感。当然,字符串中的大小写字母是需要分清的。,3.1.2 保留字和指令字,保留字,3.1.2 保留字和指令字,指令字,3.2 数据类型,描述客观事物的数、字符以及所有能输入到计算机中并被计算机程序加工处理的符号的集合称为数据。数据的一个重要特征就是其所属的数据类型,数据的类型
3、不仅确定了该类数据的表示形式和取值范围,而且还确定了数据所能够参加的各种运算。标准数据类型属于Object Pascal内部约定的数据类型,无需定义就可以直接使用。,3.2 数据类型,高级数据类型体现了特殊的数据结构,在使用之前必须由用户自己定义。,3.2 数据类型,整型、字符型、布尔型、枚举型和子界型5种被称为顺序类型,其取值是一个有序的集合,每一个可能的取值都与顺序(整数值)有关,即其取值与某一整数相对应。(有序数据类型常用函数)本章主要介绍Object Pascal的标准数据类型。3.2.1 数值型数据3.2.2 字符数据3.2.3 布尔型数据,3.2.1 数值型数据,1.整型整型是存储
4、整数数据的类型,Object Pascal包括9种形式的整型数据。,3.2.1 数值型数据,2.实型实型是存储实数数据的类型,Object Pascal包括5种形式的实型数据。,3.2.2 字符数据,1.字符型字符型是存储单个字符数据的类型,Object Pascal包括3种形式的字符型数据。2.字符串型字符串型是存储字符串数据的类型,Object Pascal包括4种形式的字符串型数据。(PChar,PAnsiChar,PWideChar),3.2.3 布尔型数据,布尔型数据用于进行逻辑运算,Object Pascal包括4种形式的布尔型数据。后3种类型是为了兼容其他语言而设置的,编程时应尽
5、量使用Boolean类型。布尔运算 BoolToStr(True),3.3 常量与变量,常量和变量是学习各种编程语言进行程序设计的基础概念,分别代表了在程序运行过程中两种不同状态的量。常量是指在程序运行过程中其值始终不变的量;与之相反,变量则是程序运行过程中其值可以改变的量。3.3.1 常量在Pascal中用const关键字来声明常量,不需要在对常量赋值时声明常量的类型,编译器能根据常量的值自动判断常量的类型并分配内存。(可靠修改、容易修改、可读性强)3.3.2 变量当在Object Pascal中声明一个变量时,变量名在类型的前面,中间用冒号隔开,变量初始化通常要跟变量声明分开。Delphi
6、能在var块中对全局变量赋初值。(声明方法、命名格式、作用范围),3.4 运算符和表达式,运算符是在代码中对各种数据类型进行运算的符号。表达式由运算对象和运算符两部分组成。3.4.1 运算符Object Pascal语言中的运算符(Operators)有:、not、*、/、div、mod、and、shl、shr、as、+、-、or、xor、=、=、in和is等。按照操作数数目的多少来分,运算符分为下面两类:单目运算符(Unary Operator)和双目运算符(Binary Operator)。上面的、not和为单目运算符,其余的为双目运算符。其中和也可以作为单目运算符来使用。单目运算符一般放
7、在操作对象的前面,只有可以放在操作对象的后面。双目运算符都放在两个操作数之间。有些运算符是根据给定的操作数的数据类型做相应处理的。例如,运算符not对于整型的操作数说,做的是按位取反;对于逻辑类型的操作数来说,它完成的则是逻辑取反。除了运算符、is和in外,其余操作符都可以对Variant类型的数据进行操作。,3.4.1 运算符,在复杂的表达式中,各种运算符的优先级分别如下:第一级(最高):、not第二级:*、/、div、mod、and、shl、shr、as第三级:+、-、or、xor第四级(最低):=、=、in、is尽管各种运算符的优先级比较明确,但是在具体编程的时候,并不需要记住所有运算符
8、的优先级顺序。常见的一些优先级顺序比较好记,如乘、除运算符的优先级比加、减运算符的优先级高。在优先级顺序不太明显的地方,可以多加一些小括号以明确表达式的结合次序。,3.4.2 表达式,一个表达式由运算对象和运算符两部分组成。运算符可以分为算术运算符、逻辑运算符、串运算符、字符指针运算符、集合运算符、关系运算符以及运算符。运算符的优先顺序见表。,3.5 常用内部函数,为了尽可能地减少开发应用程序的难度和工作量,Delphi提供了一个内容十分丰富的程序库Run-Time Library(RTL),其中包括了大量的基本函数、过程、常量和变量定义。RTL包含的函数、过程、常量等都是在System单元中
9、定义的,而System单元会自动地被其他程序单元引用,所以用户编写的应用程序可以随时调用RTL中可用的函数,而不用在程序的uses语句中引用该单元。3.5.1 数学运算函数(round函数,和random(range:integer)函数3.5.2 字符处理函数 pos,length,sizeof,copy,appendstr,concat3.5.3 时间和日期函数 Encodedate,Decodedate,FormatDateTime3.5.4 数据类型转换函数 InttoStr,StrtoInt,FloatToStr,DatetoStr3.5.5 格式输出函数 format(数1:%,数
10、2:%d,1,88)格式控制符的形式:%下标:-场宽.精度类型说明符 例1:Format(%*.*f,8,2,123.456);例2:TVarRec args3=8,2,123.456;Format(%*.*f,args,2);,3.6 程序语句,语句是执行具体操作的指令。语句由Object Pascal的保留字、属性、函数、运算符以及能够生成Delphi编辑器可识别指令的符号组成。建立程序语句时必须遵从的构造规则称为语法。编写正确程序语句的前提,就是学习语言元素的语法,并在程序中使用这些元素正确地处理数据。语句的书写规则 赋值语句 过程语句 注释语句 声明语句 GOTO语句,3.7 基本程序
11、设计,3.7.1 顺序结构顺序结构是程序设计中最简单、最常用的基本结构。在该结构中,各操作块(简称块,对应于程序中的“程序段”)按照出现的先后顺序依次执行。它是任何程序的主体基本结构,即使在选择结构或循环结构中,也常以顺序结构作为其子结构。在顺序结构中,通常使用基本控件完成输入及输出操作,使用赋值语句等简单的操作语句组成顺序结构即可实现顺序结构程序的编写。,3.7.2 选择结构,选择结构是计算机科学用来描述自然界和社会生活中分支现象的重要手段。其特点是:根据所给定的条件成立(真)与否(假),而决定从各实际可能的不同分支中执行某一分支的相应操作,并且任何情况下总有:“无论分支多寡,必择其一;纵然
12、分支众多,仅选其一”。在Delphi中,实现选择结构的是IF语句和Case语句。这两种语句又称为条件语句,条件语句的功能就是根据表达式的值有选择地执行一组语句。IF语句 Case语句,IF 语句,If 语句又称为条件语句,是最常用的单条件选择结构。If语句的语法格式为:If Then Else;可以是关系表达式或布尔表达式。如果的值为真,则执行,否则执行。因为IfThenElse语句是一个完整的语句,因此在Else保留字之前没有分号,如果加入分号将产生编译错误。可以是简单语句,也可以是复合语句。If 语句的流程图如图所示。其中的a1或a2可以是空语句。当然,如果a1、a2操作同时为空语句的话,
13、就失去了选择的意义。为了养成良好的程序设计风格和习惯,如果必须设立空分支时,应该把它设在选择条件为假的相应分支(即a2)中。If 语句分为简单条件语句和复合条件语句两种。1.简单条件语句:简单条件语句的语句中不包含其他的条件语句。2.复合条件语句:如在 If 语句格式中的语句1或语句2本身又是一个 If 语句,则称为If 语句的嵌套。嵌套的If语句又被称为复合条件语句。If else if else语句,Case 语句,使用IF 语句可以方便地实现双分支选择结构,但是,对于多分支选择的情况,若仍然使用IF 语句,就必须用多层嵌套,非常繁琐。为此,Delphi提供了Case 语句专门来实现多分支
14、选择结构。Case 语句可以根据“选择器表达式”的值,来决定执行相应的语句。Case 语句的语法格式为:Case of:;.:;Else;End;的值必须是顺序类型(如整型、字符型、布尔型、子界型等)。中的值应该是可能具有的值,各常量之间用逗号分隔。所有常量表中的值必须互不相同。可以是简单语句,也可以是复合语句。Case 语句首先计算的值,然后判断该值是否等于某个常量,若相等则执行该常量后面的语句,执行完该语句后,转去执行End后面的语句。若与所有情况常量表中所列的常量都不相等,则执行Else后面的语句列。,Case 语句,Case语句的流程如图所示。,3.7.3 循环结构,在程序设计中,从某
15、处开始有规律地反复执行某一程序块的现象称为“循环”,完成这一功能的程序结构称为“循环结构”,而其中重复执行的程序块称为“循环体”。使用循环可以避免不必要的重复操作,简化程序,节约内存,从而提高效率。Object Pascal提供的循环结构语句有3种,它们分别是:While语句、Repeat语句以及For语句。无论何种类型的循环结构,其特点都是:循环体执行与否及其执行次数多少都必须视其循环类型与条件而定,且必须确保循环体的重复执行能在适当的时候得以终止。While语句Repeat语句 For语句For in Do 语句循环的嵌套 Break过程Continue过程,While语句,While语句
16、属于前测型循环结构。首先判断条件,根据条件决定是否执行循环,执行循环的最少次数为0。其流程图如图所示。While语句的语法格式为:While Do;是一个具有Boolean值的条件表达式,为循环的条件。可以是简单语句、复合语句和其他结构语句。While循环的执行过程:首先计算的值,如果为真(True),则执行Do后面的循环体,执行完后,再开始一个新的循环;如果为假(False),则终止循环,执行后面的语句。可以在中的任何位置放置Break语句来强制终止While循环随时跳出While循环。Break语句通常用在If语句中。可以在循环体中的任何位置放置Continue语句,在整个循环体没有执行完
17、就重新判断,以决定是否开始新的循环。Continue语句通常用于If语句之后。,Repeat语句,Repeat语句属于后测型循环结构。首先执行循环体,然后判断条件,根据条件决定是否继续执行循环,因此执行循环的最少次数为1。其流程图如图所示。Repeat语句的语法格式为:Repeat Until;是一个具有Boolean值的条件表达式,为循环的条件。可以是一条语句,也可以是多条语句。多条语句无需用BeginEnd括起来,而由保留字Repeat与Until将其括起。Repeat循环的执行过程:首先执行,然后计算的值,如果为假(False),则开始一个新的循环;如果为真(True),则终止循环,执行
18、后面的语句。可以在循环体中的任何位置放置Break语句来强制终止Repeat循环随时跳出Repeat循环。Break语句通常用于If语句之后。可以在循环体中的任何位置放置Continue语句,在整个循环体没有执行完就重新判断,以决定是否开始新的循环。Continue语句通常用于If语句之后。,For语句,在不知道需要执行多少次循环时,应该用While或Repeat循环。但是,若知道要执行多少次循环时,则最好使用For循环结构。与前两种循环不同,For循环使用一个循环变量,每重复一次循环之后,循环变量的值就会自动增加或者减少。For循环的流程图如图所示。For语句的语法格式为:For=To|Do
19、wnTo Do;为必要参数,用作循环计数器,只能是顺序类型。和表示的初值和终值,可以是表达式,但应与的类型相同。若为表达式,则在进入循环之前已被计算确定,在循环体中改变初值或终值表达式中变量的值,并不影响循环的次数。To表示计数器递增,DownTo表示计数器递减。可以是简单语句、复合语句和其他结构语句。For循环的执行过程:首先判断循环变量的值是否“超过”终值(对于递增循环为大于,对于递减循环为小于),若已超过则跳出循环执行后面的语句;若未超过则执行Do后面的,然后循环变量自动“增量”(递增或递减)并开始一个新的循环。可以在中的任何位置放置Break语句来强制终止For循环随时跳出For循环。
20、Break语句通常用于If语句之后。可以在循环体中的任何位置放置Continue语句,在整个循环体没有执行完就重新开始新的循环。Continue语句通常用于If语句之后。在循环体内,不允许以任何语句修改循环变量,退出for循环后,循环变量的值就自动变得不确定的,不能再使用,For in do语句,为win32开发提供的新语法结构,它可以使用在数组、字符串和集合3种类型中,以及Collection类中。例子:page77,循环的嵌套 在前面循环语句的循环体中仅包含了简单语句,这种类型的循环结构称为单重循环。如果在循环体中又包含了另一个循环结构,则称为多重循环。这种情况又称为循环的嵌套。前面介绍的
21、三种类型的循环可以互相嵌套。在循环体中嵌套的循环称为内循环(相对的),外部的循环称为外循环。多重循环嵌套的层数几乎可以是任意的,根据循环结构嵌套的层数可以分为二重循环、三重循环等。Break过程 在while、for或repeat循环中调用Break,使得程序的执行流程立即跳到循环的结尾,在循环中当某种条件满足时需要立即跳出循环,这时调用Break。Pascal中的Break类似于C语言中的break和Visual Basic中的Exit语句。Continue过程 如果想跳过循环中部分代码重新开始下一次循环,就调用Continue过程。,3.8 过程与函数,过程与函数是程序设计语言中的重要概念
22、,也是实现结构化程序设计思想的重要手段。结构化程序设计思想的要点之一就是对一个复杂的问题采用“分而治之”的策略模块化。把一个较大的程序划分为若干个模块,每个模块只完成一个或若干个功能,每个功能可以用一个程序段来实现,这个程序段称为“子程序”。Delphi的子程序分为过程(Procedure)和函数(Function)两种形式。过程与函数是实现一定功能的语句块,可以在程序的其他地方被调用,也可以进行递归调用。过程与函数的区别在于:过程没有返回值,而函数有返回值。过程函数参数子程序的嵌套与递归变量的作用域,过程,过程的定义包括过程原型、过程体的定义。过程定义的语法格式如下:Procedure();
23、directives;begin;end;其中为一个有效的标识符。需要指明参数的个数及其数据类型。directives是一些关于函数的指令字,可以一次设置多个,使用分号隔开。局部声明部分用来声明该过程中所使用的类型、常量、变量,这些类型、常量、变量的作用范围只限于该过程内部,与过程体外的同名对象无关。在局部声明部分还可以包含另一个过程或函数声明(称为内嵌的过程或函数)。在begin与end之间是在函数调用时实现特定功能的一系列语句。,函数,函数的定义与过程非常类似,只是使用的保留字不同,而且多了一个返回值类型。函数的定义的语法格式如下:function():;directives;begin;
24、end;可以将函数要返回的数值赋值给Result。如果函数体中存在着一些由于判断而产生的分支语句时,要在每一个分支中设置返回值。通常要根据函数的返回值来确定下一步的操作。也能在函数体内把一个值赋给函数名来返回一个值,这是Pascal的标准语法,是从Borland Pascal的老版本继承下来的。如果选择这种方法,一定要注意它和程序代码中把函数放在赋值运算符的左边是不同的!如果在函数体内把它放在赋值运算符的左边表示你要返回函数值,如果程序中把它放在左边表示要对它进行递归调用。,内联函数,内联函数就是在程序编译时,编译器将程序中出现的内联函数的调用表达式用函数体来代替,从而使这个函数的汇编代码嵌入
25、到调用过程中以大幅度地提高效率。使用inline保留字就可以将一个函数指定为内联函数。例:function myFun(a,b:integer):Integer;inline begin end;注意要点:1.在内联函数内部不允许使用循环语句和开关语句,否则视为普通函数;2.内联函数不能是递归函数;3.内联函数的代码应尽量少,一般不大于5行。,参数,一般将函数定义时参数列表中的参数称为形参,将函数调用时参数列表中的参数称为实参。在函数原型中,多个参数之间用分号隔开,同一类型的参数可以放在一起,以逗号隔开。在函数调用的时候,在函数原型中,多个参数之间用逗号隔开。一般来说,形参列表和实参列表完全匹
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Delphi 程序设计 基础
链接地址:https://www.31ppt.com/p-5427242.html