Delphi程序设计及实验指导(第二版)第2章面向对象的Pascal_第1页
Delphi程序设计及实验指导(第二版)第2章面向对象的Pascal_第2页
Delphi程序设计及实验指导(第二版)第2章面向对象的Pascal_第3页
Delphi程序设计及实验指导(第二版)第2章面向对象的Pascal_第4页
Delphi程序设计及实验指导(第二版)第2章面向对象的Pascal_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第2章 面向对象的Pascal导读2.1 数据类型2.2 常量与变量2.3 表达式与运算符2.4 语句2.5 函数和过程小结习题导读Delphi.NET的编程语言是在Pascal的基础上发展起来的,它继承了Pascal语言语法结构严谨和编译代码高效优化等优点。本章将主要介绍Pascal的数据类型、常量、变量、运算符、表达式、语句、函数和过程等。学习目标:掌握Pascal语言中的数据类型掌握常量、变量的概念、定义和使用掌握运算符和表达式的使用熟悉并掌握Pascal语言中语句的格式和使用方法掌握Pascal语言中函数和过程的使用2.1 2.1 数据类型数据类型Object Pascal是一种“强制

2、类型”的语言,一个变量在使用前必须先定义其数据类型,这样就决定了变量的存储格式、取值范围和所能参与的运算。Object Pascal语言具有丰富的数据类型,可以分为简单数据类型字符串类型结构类型可变类型等2.1 2.1 数据类型数据类型简单数据类型简单数据类型简单数据类型包括有序类型和实型两种。1有序类型有序类型 有序类型包括整型、字符型、布尔型、枚举型和子界型。 有序类型是一种线性数据结构,每个值都有惟一的前驱(除第一个)和惟一的后继(除最后一个)。2.1 2.1 数据类型数据类型 (1)整型 在32位的操作系统下,整型的表示范围及存储格式见表2-1。 (2)字符型 字符型是Object P

3、ascal中一种相当重要的数据类型。字符型的类型标识符是Char。字符型的数据只能是单个字符,不能是一串字符。例如ABC,x=? 等都不是字符型的数据,而是字符串。2.1 2.1 数据类型数据类型(3)布尔型 通常用到的布尔类型标识符为Boolean,一个Boolean类型的变量占一个字节,它只有两种取值:true和false。布尔类型以非零值作为true,在一个本该出现Boolean值的地方如果是一个非零值,编译器会自动把它变为true。布尔类型主要应用于条件语句和判断语句中。例如: 定义变量i,ch,t分别为整型、字符型、布尔型。 var i: Integer; ch: Char; t:

4、Boolean;2.1 2.1 数据类型数据类型(4)枚举类型 枚举类型用一些标识符来表示一系列有序数,即由一些标识符组成的一个线性表。定义枚举类型的语法如下: type typeName=(val1,.,valn) 其中typeName和val1.valn都是有效的标识符。在括号内的标识符列表里将所有的标识符一一列出来。2.1 2.1 数据类型数据类型(5)子界类型 子界类型指的是某个有序类型(称为基类)的一个子集。定义子界类型的语法如下: type typeName=Low.High; 其中Low和High是具有相同有序类型的常量表达式,Low必须小于High。typeName定义了一个包

5、含从Low到High之间所有值的一个子界类型。例如: type month=(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec); day=1.31; 定义了一个枚举类型month,可能的值为Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov、Dec;定义了一个子界类型day,可能的值为1、2、312.1 2.1 数据类型数据类型类型取值范围存储格式Integer-2 147 483 6482 147 483 647有符号32位整数Cardinal04 294 967 295无符号32位整数Shortint-12

6、8127有符号8位整数Smallint-32 76832 767有符号16位整数Longint-2 147 483 6482 147 483 647有符号32位整数Int64-263263-l有符号64位整数Byte0255无符号8位整数Word065 535无符号16位整数Longword04 294 967 295无符号32位整数2.1 2.1 数据类型数据类型2实型实型类型范围有效位所占位数Real2.9*10-241.7*103811126Real482.9*10-391.7*103811126Single1.5*10-453.4*1038784Double5.0*10-3241.7*

7、1030815168Extended3.6*10-49511.1*104932192010Comp-263+l263-l19208Currency-922337203685477.5808922337203685477.5807192082.1 2.1 数据类型数据类型字符串类型字符串类型是用一对单引号括起来的一系列字符。Object Pascal支持以下字符串类型:ShortString、AnsiString、LongString和WideString。注意:习惯上使用的字符串默认为AnsiString类型。SBCS(单字符集)是指平时用的扩展型ANSI码,用一个字节表示一个字符。MBCS(

8、多字符集)多用于亚洲文字,用一个或多个字节来表示一个字符或符号。类型最多字符数字节数字符集ShortString2552256 BANSI向后兼容AnsiString23142 GBSBCS,MBCSLongString23142 GBUnicodeWideString23042 GB等价于AnsiChar2.1 2.1 数据类型数据类型结构类型结构数据类型是一种复合数据类型,由多个数据组成。结构类型包括集合类型、数组类型、记录类型、文件类型等。1集合类型集合类型集合类型是一组相同类型元素的组合。定义集合类型如下: type Name=set of BaseType 其中BaseType是一个

9、有序类,即基类,基类是有序类型,如整型、布尔型、字符型、枚举型和子界型。一个集合类的值域是基类的所有子集(包括空集)。2.1 2.1 数据类型数据类型2数组数组数组是一些具有相同类型元素的有序组合。数组的存储方式有静态和动态两种。(1)静态数组 静态数组的声明格式为: type Name=arrayindexType1,.,indexTypen of BaseType; 下标类型常是子界类型。只有一个下标类型的数组称为一维数组。2.1 2.1 数据类型数据类型(2)动态数组 动态数组没有固定的大小或长度。当赋值或使用某些函数(如SetLength)时,动态数组在内存中重新分配大小。 动态数组的

10、声明格式为:type Name=array of BaseType; 定义动态数组只给出数组的维数和元素类型,而不需声明元素的个数。2.1 2.1 数据类型数据类型3记录类型记录类型 记录类型(有的语言中被称为结构)是一个不同种类元素的集合,每个元素称为字段(field)。在声明时,指定记录的名字和每个字段的类型。声明格式如下:typeRecordTypeName=recordFieldList1:type1;FieldList2:type2; FieldListn:typen;end; 其中RecordtTypeName是一个合法的标识符,每个type指一种数据类型,每个FieldList是

11、一个标识符或是一列由逗号分隔的标识符,最后一个分号可有可无。2.1 2.1 数据类型数据类型4文件类型文件类型 文件类型是由相同类型的元素组成的有序集合。文件类型的声明格式如下:typefileTypeName = file of type 其中type是一种大小固定的数据类型,不可以是动态数组、长字符串、类、对象、可变类型、其他文件类型以及包含这些类型的结构类型。2.1 2.1 数据类型数据类型可变类型有时要对一些数据类型变化的数据进行操作,并且在编译期间不能确定数据的类型,这时就可以使用可变类型的数据。这些数据的数据类型可以在运行期间改变,但是它们比固定类型的数据占用更多的空间,对这种类型

12、的数据的操作也更慢。可变类型可以使用除记录、集合、静态数组、文件等结构类型、指针类型及长整型外的所有类型。可变类型有一个特殊的值Null,表明该变量的值是未知的或是错误的。可变类型变量的声明格式为: var v1:Variant; 2.2 常量与变量2.2.1 标识符标识符标识符用来描述Object Pascal程序中的标记、对象、过程、类型、单元、变量及程序等。标识符的大小写无关(即它不区分大小写),并且遵循以下规则: 可为任意长度,但只有前255个字符有效。 标识符的第1个字符必须是字母或下划线。 跟在第1个字符后面的字符必须是字母、数字或下划线。 标识符中不允许出现空格。 可以通过圆点“

13、.”运算符将两个或更多标识符组合成一个有效的标识符。例如:FormOpt.Explode恰当地对标识符进行命名(即选择合适的名字)是一个优秀程序的重要组成部分,合适的标识符有助于阅读代码的人“顾名思义”,提高程序可读性。2.2 常量与变量2.2.2 常量常量常量是一个在程序的运行过程中具有不变值的标识符,用Const保留字和等号(=)的形式声明,不需要指定其数据类型,只需给出具体的值,编译器会根据值确定正确的类型。常量的声明格式如下:Const 常量名=表达式; 例如:Const pi=3.14; n=20; s=I am a student.;变量不能在一个常量声明中使用,但算术和逻辑运算符

14、可以,下面的函数也同样可以在常量声明中使用。Abs Low Round Chr Odd SizeOf Hi OrdSucc High Pred Swap Length Ptr Trunc Lo2.2 常量与变量2.2.3 变量变量变量是程序中代表一个内存地址的标识符,而此地址中的内容在程序执行过程中可以改变。在变量使用之前必须先进行声明,变量的声明使用保留字var。同一类型的变量可在同一声明行上指定其类型,之间用逗号隔开。变量声明格式如下: var 变量名表:类型名; 例如: var s:string; i:integer; flag:Boolean; 2.3 表达式与运算符2.3.1 表达式

15、表达式表达式是编程语言中最常用的部分。所谓表达式就是变量、常量、字符串、运算符及函数按照一定规则的组合。例如: Peoples Republic Of +China Gross/12 Max(x,y)-Min(x,y)2.3 表达式与运算符2.3.2 运算符运算符Object Pascal的运算符包括算术运算符、逻辑运算符、关系运算符和集合运算符等。有些运算符与所操作的对象有关,它们的意义随着所使用操作对象数据类型的不同而不同。1赋值运算符(赋值运算符(:=) 赋值运算符“:=”是先计算赋值运算符右边表达式的值,再将结果赋给左边的变量。注意:“:=”不同于“=”,前者用于赋值,后者用于测试运算

16、符两边的表达式的值是否相等。这一点与其他编程语言(如Visual Basic、C、C+等)不同,希望读者切记。2.3 表达式与运算符2算术运算符算术运算符 算术运算符对实型和整型数据进行加、减、乘、除和取模等运算在进行“+”、“-”、“*”运算中,只要有一个操作数为Real类型,则结果为Real类型,只有两个操作数均为Integer类型,结果才为Integer类型。运算符作用操作数类型结果类型+表示正值Integer或RealInteger或Real算术加Integer或RealInteger或Real运算符作用操作数类型结果类型表示负值Integer或RealInteger或Real算术减I

17、nteger或RealInteger或Real*算术的乘运算Integer或RealInteger或Real/浮点数的除运算Integer或RealRealDiv整型数的除运算(取商)IntegerIntegerMod模运算(整型数相除的余数)IntegerInteger2.3 表达式与运算符3关系运算符关系运算符 关系运算符是对两个类型相容且可以进行比较的数据做比较,结果为布尔类型运算符作用结果类型=等于Boolean不等于Boolean大于Boolean=大于或等于BooleanIn属于Boolean2.3 表达式与运算符4逻辑运算符逻辑运算符 逻辑运算符对逻辑类型的操作数进行运算,结果为

18、布尔型 注意:not是一个一元运算符,and、or和xor是二元运算符。优先级由高到低为:notandor/xor。例如:表达式not(45) and ( a56)的值为true。运算符作用操作数类型结果类型not逻辑非BooleanBooleanand逻辑与BooleanBooleanor逻辑或BooleanBooleanxor逻辑异或BooleanBoolean2.3 表达式与运算符5集合运算符集合运算符 集合运算符主要对两个集合进行操作,用来判断两个集合之间的关系运算符作用操作数类型结果类型+集合的并集集合类型集合类型-集合的差集集合类型集合类型*集合的交集集合类型集合类型=A=A=B,

19、B是否是A的子集集合类型Boolean=两个集合是否相等集合类型Boolean两个集合是否不相等集合类型Booleanins in A,s是否属于集合A有序类型,集合类型Boolean2.3 表达式与运算符6运算符的优先级运算符的优先级 通常在一个表达式中会有多种运算符,在求表达式的值时,必须考虑运算符的计算顺序,即运算符的优先级。运算符优先级not1(最高)*,/,div ,mod,and2+, ,or,xor3关系运算符4(最低)2.4 语句语句是程序设计的基础,主要由关键字和操作指令组成,再来完成一定的功能,语句分为可执行语句和非执行语句。2.4 语句.4.1 注释注释注释是添加在程序中

20、用来说明代码功能的语句,它是非执行语句,对程序的执行部分不会产生任何影响,只起解释说明的作用,有助于提高程序的可读性。 在Object Pascal中,有3种注释标记: 花括号“”注释:任何位于花括号“”中的内容均为注释。 双斜杠“/”注释:双斜杠“/”之后直到本行结束的内容为注释部分。 圆括号及星号对“(*)”注释:圆括号及星号对(*)中的内容为注释。2.4 语句例如以下都是注释语句: The first kind Of comment. /The secondkind Of comment. (*The third kind Of comment.*)注意:不能将一个作为结束标志的注释符号

21、放进一个注释中,因为这样编译器将把此符号视为该注释的结束之处。2.4 语句2.4.2 简单语句和复合语句简单语句和复合语句简单语句是Object Pascal中最简单也最常用的语句,简单语句用分号分隔。赋值语句、函数、过程调用语句等都是简单语句,例如下面的语句都是简单语句: r:=m+n; /两个值相加并进行赋值 ShowMessage(Im a student.); 复合语句是多个简单语句的组合,复合语句以begin开始,以end结束。例如: begin i:=1; j:=i+1; s:=abc; end;2.4 语句注意:end之前的最后一行语句后面也可以不加分号,如下所示: begin

22、i:=1; j:=i+1; s:=abc end;2.4 语句2.4.3 条件语句条件语句条件语句是Object Pascal语言提供的选择结构语句,主要有如下两种: 1if语句语句 if语句的表示形式如下所示: if then else 2.4 语句if语句包含保留字if、then和else,表达式是逻辑表达式,执行语句可以是简单语句也可以是复合语句,如果执行语句是if语句,则称为if语句的嵌套。if语句的执行过程:先计算if后面的表达式的值,如果值为true,则执行 then后面的语句;否则,如果else保留字存在,则执行else后面的语句;不存在,则继续执行if语句后面的下一条语句2.4

23、 语句【例2-1】求两个数中的最大值。if ab then max:=a /在变量a之后不能加“;”else max:=b;2.4 语句【例2-2】符号函数。 -1 (x0)用if语句的嵌套实现,如下所示:if x0 then y:=1 else y:=0;2.4 语句2case语句语句 case语句的表示形式如下所示: case of : : else end;同一变量有多于一个以上的选择时,使用if语句的嵌套很容易造成混乱。在Delphi中,利用case语句可以避免这种混乱。2.4 语句case语句包含case保留字、一个有序值表达式(即case表达式)、一组选择值、执行语句。实数和字符串

24、的值不能作为case的表达式使用。选择值不能重复出现,两个圆点(.)用于表示选择值所包括的范围(如1,2,3,4表示为1.4)。执行语句可以是简单语句也可以是复合语句。case语句的执行过程:先计算case表达式的值,再寻找与该值相符的选择值,若找到则执行该值冒号后的执行语句;如果是一个空语句,则不执行任何操作,否则执行后跳出case语句,执行end后的语句。如果case表达式的值与列出的选择值均不相符,则执行else后的执行语句n+1,如果else语句不存在,则执行end后的语句。2.4 语句【例2-3】case语句。 var score : 0.100; grade : string; c

25、ase score of 90.100:grade=A; 80.89:grade=B; 70.79:grade=C; 60.69: grade=D; else grade:= E; end;【例2-4】编写一个程序,输入一个年份,判断是否是闰年。闰年的条件是满足下面条件之一: (1)能被4整除,但不能被100整除的年份; (2)能被100整除,也能被400整除的年份。2.4 语句2.4.4 循环控制语句循环控制语句循环语句用来重复执行一条或多条语句,直到满足某个条件时为止。循环控制语句共有for、while和repeat三种。下面分别介绍这3种循环控制语句及与其相关的break和 contin

26、ue语句 1for语句语句 for语句的一般形式为:for 循环变量:= to/downto do ; for语句对于起始值到终止值范围内的每一个值都执行一次do后面的循环体,循环体可以是简单语句,也可以是复合语句。2.4 语句注意: to 用于递增计数,downto用于递减计数。 用于for循环控制的变量必须是一个有序类型,且与起始值、终止值的数据类型相同。 在循环体中,不允许修改循环变量的值。【例2-5】求1100所有整数的累加和。 var s,i: Integer; s:=0; for i:=l to 100 do s:=s+i;2.4 语句2while语句语句 while语句的一般形式

27、为: while do while后面的为逻辑表达式,先计算表达式的结果,如果表达式为true,while语句将重复执行循环体。如果表达式结果为false,则跳出循环,执行while之后的语句2.4 语句【例2-6】求1100所有整数的累加和。程序代码如下: var s,i: Integer; i:=1; s:=0; while i=100 do begin s:=s+i; i:=i+1; end;2.4 语句3repeat语句语句repeat语句的一般形式为: repeat until 当使用repeat语句时,先执行循环体,再判断表达式,只要until后面的表达式为true,则将再次执行循

28、环体。因此,repeat语句下面的循环体至少执行一次。2.4 语句【例2-7】求1100所有整数的累加和。程序代码如下: var s,i: Integer; i:=1; s:=0; repeat s:=s+i; i:=i+1; until i100;注意:for语句和repeat语句至少执行一次循环体,而while语句有可能一次也不执行。2.4 语句4break语句语句 break语句的功能是强行退出循环,它只能用在循环体内。 【例2-8】利用break语句退出一个while循环。 程序代码如下:var s: String;beginwhile true do /条件恒为真 begin Rea

29、dLn(s); /读入一字符串 if s= then break; /不输入任何字符,则退出循环 WriteLn(s); /输出字符串 end;end;2.4 语句5continue语句语句 continue语句也用在循环体中,其作用是强行结束本次循环,转入循环开始处,开始执行下一次循环操作。 【例2-9】使用continue语句,求1100所有奇数之和。 程序代码如下:var i,s: Integer; s=0;begin for i:=1 to 100 do begin if i mod 2=0 then continue; /如果为空,跳过剩余语句,转向下一个循环 s:=s+i; end

30、;end;2.5 2.5 函数和过程函数和过程函数和过程是实现一定功能的语句块,是程序中的特定功能单元。可以在程序的其他地方被调用,也可以进行递归调用。函数和过程的区别在于函数有返回值,而过程没有返回值。2.5 2.5 函数和过程函数和过程2.5.1 函数和过程的声明函数和过程的声明函数和过程在使用前必须进行声明。1函数的声明函数的声明在程序的type区中进行函数的声明,具体形式如下: function ():;函数的定义是在程序的implementation部分,具体形式如下: function ():; var begin := /也可以用Result系统保留字代替 end;2.5 2.5

31、 函数和过程函数和过程begin与end之间是在函数调用时实现特定功能的一系列语句。函数值的返回有两种方式: 将返回值直接赋给函数名。 将返回值赋给Result。2.5 2.5 函数和过程函数和过程【例2-10】求两个数中的最大数。程序代码如下: function Max(a,b: integer):integer; /两个形参为整型值a、b,函数返回值为整型 var m: Integer; begin if ab then m:= a else m:= b; Max:= m; /或result := m; end;2.5 2.5 函数和过程函数和过程2过程的声明过程的声明过程的声明与函数类似

32、,所不同的是使用的保留字不同,而且少了一个返回值类型; 过程的声明是在程序的type区中进行的,具体形式如下: procedure ();过程的定义是在程序的implementation部分,具体形式如下: procedure (); begin end;2.5 2.5 函数和过程函数和过程【例2-11】在一行上显示num个星号*。 procedure ShowStar(num:Integer); var i: Integer; s:String; begin s:= ; for i:=1 to num do s:= s+*; ShowMessage(s); end;通过过程调用ShowSta

33、r(10),可显示10个*。2.5 2.5 函数和过程函数和过程2.5.2 重载函数和过程重载函数和过程所谓重载,是指在同一个作用范围内给不同的函数或过程取同一个名称。重载可以方便编程,重载函数和过程必须用指令字overload来进行说明。在重载的情况下,决定使用哪个函数或过程的依据是形参和实参的一致性,即参数个数、参数类型以及它们之间的顺序的一致性。不存在一个函数调用同时满足两个重载函数的情况。另外,函数的返回值类型不同不可以作为重载函数的依据。2.5 2.5 函数和过程函数和过程下面的两个函数就是重载函数: function Max(a:Integer;b:Integer):Integer

34、;overload; /求两个整数的最大值 function Max(a:Real;b:Real):Real;overload; /求两个实数的最大值下面两条语句就调用了不同的函数: Max(3.7,4.6); /调用的是第二个重载函数 Max(3,4); /调用的是第一个重载函数如果又定义了一个重载函数如下: function Max (a,b:Real;c:Real=0.0):Real;overload; /求三个实数的最大值尽管参数的个数与上面的两个不同,但第三个参数设置了一个默认值,当函数调用语句为Max(1.1,2.2);时,编译系统就不知道应该使用哪个重载函数了,因为第二个重载函数

35、和第三个重载函数都可以满足要求,所以会出现一个编译错误。2.5 2.5 函数和过程函数和过程2.5.3 参数参数1形参与实参形参与实参 函数或过程在声明和定义时参数列表中的参数称为形式参数,简称形参;而调用函数或过程时参数列表中的参数称为实际参数,简称实参。 函数或过程的声明和定义时参数列表中的多个参数之间用分号隔开,同一类型的参数可以放在一起,以逗号隔开。在函数或过程调用时参数列表中多个参数之间用逗号隔开。 一般来说,形参列表和实参列表要求完全匹配。所谓完全匹配是指参数的个数相同,而按顺序排列的参数的数据类型也完全一致。对于普通的函数,如果编译器发现实参的数据类型与形参的数据类型不匹配,会将

36、实参的数据类型进行一次或多次的“类型转换”,例如将Integer类型转换为Double类型。2.5 2.5 函数和过程函数和过程可以为过程和函数的参数指定默认值。指定默认值的方法是在参数定义后紧跟一个等号“=”,再跟一个常量。指定默认值的参数要放在参数列表的后面部分,没有指定默认值的参数放在参数列表的前面部分。在函数调用时,如果给设置了默认值的参数指定一个新值,则在函数体中,各语句便使用新值;如果没有指定新值,则使用默认值。同样,如果存在多个设置了默认值的参数,只有前面的参数指定了新值,后面的参数才可以指定新值。例如:若有函数声明function Max (a,b:Real;c:Real=0.

37、0):Real;此声明中有3个形参,其中参数c指定默认值为0.0。可用m:=Max(-2.3, 1.4)来调用函数Max,其中-2.3、1.4是实参,而参数c使用默认参数值。在Object Pascal中,最常用的参数有数值参数、变量参数和常量参数3种。2.5 2.5 函数和过程函数和过程2数值参数、变量参数和常量参数数值参数、变量参数和常量参数 (1)数值参数 在调用函数或过程时,数值参数在运行过程中只改变其形参的值,不改变其实参的值,即形参不会影响原来实参的值。试看下面的过程:procedure Calculate(n:Integer);begin n:=n*10;end;调用过程Calc

38、ulate:number:=10;Calculate(number);number进入Calculate过程后,会把number实参的值传给形参n,在此过程中n增加十倍,number值并未改变,即n,number的值分别为100,10。实参的值并不发生变化。2.5 2.5 函数和过程函数和过程 (2)变量参数 如果用户想改变传递的参数值,就需要使用变量参数,即在被调用程序的参数表中的形参前加上保留字var。例如: procedure Calculate(var n:Integer); begin n:=n*10; end;调用过程Calculate:number:=10;Calculate(n

39、umber);number进入Calculate过程后,会把number实参的值传给形参n,在过程中n增大十倍的同时number也增大十倍,即n,number的值都为100。当一个变量参数被传递时,任何对形参所做的改变都会影响实参。2.5 2.5 函数和过程函数和过程 (3)常量参数 如果当过程或函数执行时要求不改变形参的值,最保险的办法是使用常量参数。在参数表的参数名称前加上保留字const可以使一个形参成为常量参数。使用常量参数代替数值参数可以保护用户的参数,使用户在不想改变参数值时不会意外地将新的值赋给这个参数。 例如:function Add(const x,y:Integer):In

40、teger;begin x:=x+y; /非法操作,不允许改变x的值end;2.5 2.5 函数和过程函数和过程2.5.4 作用域作用域在Object Pascal中,根据变量的作用域,可将变量分为全局变量和局部变量。全局变量是在单元文件的type区声明的变量,局部变量是在函数和过程的定义部分声明的变量。这里所谓的全局和局部涉及到一个概念,即作用域。所谓变量的作用域,是指变量的有效范围。全局变量在整个程序中都有效,其作用域为整个程序;局部变量只在声明它的函数和过程中有效,其作用域只限于该函数或过程本身。在程序中如果全局变量和局部变量同名,那么在函数和过程中局部变量起作用,在其他地方全局变量起作

41、用。2.5 2.5 函数和过程函数和过程例如: type var Form1: TForm1; /全局变量Form1 implementation $R *.dfm procedure TForm1.FormCreate(Sender: TObject); var m,n:Integer; /局部变量m,n Form1:TForm1; (*局部变量Form1,与上面的全局变量同名,在过程TForm1.FormCreate中局部变量起作用。*)2.5 2.5 函数和过程函数和过程2.5.5 函数和过程的调用函数和过程的调用在调用函数或过程时,要求实参与对应的形参要有一致的数据类型和次序。但是函数

42、的调用与过程的调用有明显不同:函数仅是希望得到函数返回的值;过程一般只进行操作,没有返回结果。函数能用在赋值、比较、算术表达式中,函数也可看作是由传递给它的参数决定的变量。而过程不能用在赋值、比较、算术运算表达式中。2.5 2.5 函数和过程函数和过程1函数和过程的调用函数和过程的调用 (1)函数的调用函数调用的一般形式为:()函数的调用往往是将返回值赋给某个变量或参与运算。例如调用例2-10的Max函数,将其返回值赋给变量x的语句为:x:=Max(3,6); (2)过程调用 过程调用的一般形式为: (); 其中的实参可以是常量、变量或表达式,但实参的个数和类型与形参完全匹配,即个数相同、类型一致。例如:调用例2-11的过程Sh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论