《Delphi程序设计基础.ppt》由会员分享,可在线阅读,更多相关《Delphi程序设计基础.ppt(79页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3章章 Object Pascal语言基础语言基础n n3.1 3.1 标识符与保留字标识符与保留字n n3.2 3.2 数据类型数据类型n n3.3 3.3 常量与变量常量与变量n n3.4 3.4 运算符和表达式运算符和表达式n n3.5 3.5 常用内部函数常用内部函数n n3.6 3.6 程序语句程序语句3.1 标识符与保留字、指令字标识符与保留字、指令字n n3.1.1 3.1.1 标识符标识符n nObject PascalObject Pascal语言使用的是语言使用的是ASCIIASCII码字符集,包括字母码字符集,包括字母AZAZ、azaz、数字数字0909和其他的一些标
2、准字符。和其他的一些标准字符。n n下面的单个字符可作为特殊符号:下面的单个字符可作为特殊符号:#$&()*+,?./:;#$&()*+,?./:;n n另外,有些字符对也作为单个的特殊符号,具体有:另外,有些字符对也作为单个的特殊符号,具体有:(*(.*).)./:=(*(.*).)./:=n n其中,左中括号其中,左中括号“”“”等价于等价于“(.”“(.”,右中括号,右中括号“”“”等价于等价于“.)”“.)”,左大括号,左大括号“”等价于等价于“(*”“(*”,右大括号,右大括号“”“”等价于等价于“*)”“*)”。n n在在Object PascalObject Pascal语言中,
3、标识符(语言中,标识符(IdentifiersIdentifiers)用来标志常量、变量、)用来标志常量、变量、类型、属性、对象、过程、函数、程序、单元、库和组件库等。类型、属性、对象、过程、函数、程序、单元、库和组件库等。标识符可以由任意长的一个不带空格的字符串组成,但是只有前标识符可以由任意长的一个不带空格的字符串组成,但是只有前面的面的255255个字符有效。标识符的第一个字符必须是字母或下划线,个字符有效。标识符的第一个字符必须是字母或下划线,其余字符可以是字母、数字或下划线。其余字符可以是字母、数字或下划线。n n一般标识符可以由一个或多个具有适当意义的英文单词组成。一般标识符可以由
4、一个或多个具有适当意义的英文单词组成。n nPascalPascal语言对于字母的大小写不敏感。当然,字符串中的大小写字语言对于字母的大小写不敏感。当然,字符串中的大小写字母是需要分清的。母是需要分清的。3.1.2 保留字和指令字保留字和指令字n n保留字保留字保留字保留字保留字保留字保留字保留字保留字保留字保留字保留字保留字andandarrayarrayasasasmasmbeginbegincasecaseclassclassconstconstconstructorconstructordestructordestructordispinterfacedispinterfacedivd
5、ivdododowntodowntoelseelseendendexceptexceptexportsexportsfilefilefinalizationfinalizationfinallyfinallyforforfunctionfunctiongotogotoif ifimplementationimplementationinininheritedinheritedinitializationinitializationinlineinlineinterfaceinterfaceis islabellabellibrarylibrarymodmodnilnilnotnotobject
6、objectofofororoutoutpackedpackedprocedureprocedureprogramprogrampropertypropertyraiseraiserecordrecordrepeatrepeatresourcestringresourcestringsetsetshlshlshrshrstringstringthenthenthreadvarthreadvartototrytrytypetypeunitunituntiluntilusesusesvarvarwhilewhilewithwithxorxor3.1.2 保留字和指令字保留字和指令字n n指令字指令
7、符指令符指令符指令符指令符指令符指令符指令符指令符指令符指令符指令符absoluteabsoluteabstractabstractassemblerassemblerautomatedautomatedcdeclcdeclcontainscontainsdefaultdefaultdispiddispiddynamicdynamicexportexportexternalexternalfarfarforwardforwardimplementsimplementsindexindexmessagemessagenamenamenearnearnodefaultnodefaultoverlo
8、adoverloadoverrideoverridepackagepackagepascalpascalprivateprivateprotectedprotectedpublicpublicpublishedpublishedreadreadreadonlyreadonlyregisterregisterreintroducereintroducerequiresrequiresresidentresidentsafecallsafecallstdcallstdcallstoredstoredvirtualvirtualwritewritewriteonlywriteonly3.2 数据类型
9、数据类型n n描述客观事物的数、字符以及所有能输入到计算机中并被描述客观事物的数、字符以及所有能输入到计算机中并被计算机程序加工处理的符号的集合称为数据。数据的一个计算机程序加工处理的符号的集合称为数据。数据的一个重要特征就是其所属的数据类型,数据的类型不仅确定了重要特征就是其所属的数据类型,数据的类型不仅确定了该类数据的表示形式和取值范围,而且还确定了数据所能该类数据的表示形式和取值范围,而且还确定了数据所能够参加的各种运算。够参加的各种运算。n n标准数据类型属于标准数据类型属于Object PascalObject Pascal内部约定的数据类型,无内部约定的数据类型,无需定义就可以直接
10、使用。需定义就可以直接使用。类型类型名称名称说明说明整型整型IntegerInteger标标准数据准数据类类型型实实型型RealReal标标准数据准数据类类型型字符型字符型CharacterCharacter标标准数据准数据类类型型字符串型字符串型StringString标标准数据准数据类类型型布布尔尔型型BooleanBoolean标标准数据准数据类类型型3.2 数据类型数据类型n n高级数据类型体现了特殊的数据结构,在使用之前必须由高级数据类型体现了特殊的数据结构,在使用之前必须由用户自己定义。用户自己定义。类型类型名称名称说明说明枚枚举举型型EnumeratedEnumerated高高级
11、级数据数据类类型型子界型子界型SubrangeSubrange高高级级数据数据类类型型集合集合类类型型SetSet高高级级数据数据类类型型数数组类组类型型ArrayArray高高级级数据数据类类型型记录类记录类型型RecordRecord高高级级数据数据类类型型文件文件类类型型FileFile高高级级数据数据类类型型类类类类型型ClassClass高高级级数据数据类类型型类类引用引用类类型型Class ReferenceClass Reference高高级级数据数据类类型型接口接口类类型型InterfaceInterface高高级级数据数据类类型型指指针类针类型型PointerPointer高
12、高级级数据数据类类型型过过程程类类型型ProceduralProcedural高高级级数据数据类类型型可可变类变类型型VariantVariant高高级级数据数据类类型型3.2 数据类型数据类型n n整型、字符型、布尔型、枚举型和子界型整型、字符型、布尔型、枚举型和子界型5 5种被称种被称为顺序类型,其取值是一个有序的集合,每一个为顺序类型,其取值是一个有序的集合,每一个可能的取值都与顺序(整数值)有关,即其取值可能的取值都与顺序(整数值)有关,即其取值与某一整数相对应。(有序数据类型常用函数)与某一整数相对应。(有序数据类型常用函数)n n本章主要介绍本章主要介绍Object PascalO
13、bject Pascal的标准数据类型。的标准数据类型。n n3.2.1 3.2.1 数值型数据数值型数据n n3.2.2 3.2.2 字符数据字符数据n n3.2.3 3.2.3 布尔型数据布尔型数据3.2.1 数值型数据数值型数据n n1.1.整型整型n n整型是存储整数数据的类型,整型是存储整数数据的类型,Object PascalObject Pascal包括包括9 9种形种形式的整型数据。式的整型数据。类型类型名称名称字节数字节数取值范围取值范围短整型短整型ShortintShortint1 1-128-128127127小整型小整型SmallintSmallint2 2-32768
14、-327683276732767长长整型整型LongintLongint4 4-2147483648-2147483648214748364721474836476464位整型位整型Int64Int648 8-2-263632 26363字字节节型型ByteByte1 10 0255255字型字型WordWord2 20 06553565535长长字型字型LongwordLongword4 40 042949672954294967295整型整型IntegerInteger4 4-2147483648-214748364821474836472147483647序数型序数型CardinalCa
15、rdinal4 40 0429496729542949672953.2.1 数值型数据数值型数据n n2.2.实型实型n n实型是存储实数数据的类型,实型是存储实数数据的类型,Object PascalObject Pascal包括包括5 5种形式种形式的实型数据。的实型数据。类型类型名称名称字节数字节数取值范围取值范围单单精度精度实实型型SingleSingle4 41.510-1.510-39393.4103.4103838扩扩展型展型ExtendedExtended10103.610-3.610-495149511.1101.11049324932双精度双精度实实型型DoubleDoub
16、le8 85.010-5.010-3243241.7101.710308308货币货币型型CurrencyCurrency8 8-922337203685477.5808-922337203685477.5808922337203685477.5807922337203685477.5807实实型型RealReal8 85.010-5.010-3243241.7101.7103083083.2.2 字符数据字符数据n n1.1.字符型字符型n n字符型是存储单个字字符型是存储单个字符数据的类型,符数据的类型,Object PascalObject Pascal包括包括3 3种种形式的字符型数据
17、。形式的字符型数据。n n2.2.字符串型字符串型n n字符串型是存储字符字符串型是存储字符串数据的类型,串数据的类型,Object PascalObject Pascal包括包括4 4种种形式的字符串型数据。形式的字符串型数据。(PChar,PAnsiChar,(PChar,PAnsiChar,PWideChar)PWideChar)类型类型名称名称字节数字节数取值范围取值范围AnsiAnsi字符型字符型AnsiCharAnsiChar1 1扩扩展展ANSIANSI字符集字符集宽宽字符型字符型WideCharWideChar2 2UniCodeUniCode字符集字符集字符型字符型CharC
18、har1 1(2 2)扩扩展展ANSIANSI字符集字符集类型类型名称名称最大长度最大长度所需内存空间所需内存空间短字符串型短字符串型ShortStringShortString255255个字符个字符2 2256B256B长长字符串型字符串型AnsiStringAnsiString2 23131个字符个字符4 42GB2GB宽宽字符串型字符串型WideStringWideString2 23030个字符个字符4 42GB2GB字符串型字符串型StringString2 23131个字符个字符4 42GB2GB3.2.3 布尔型数据布尔型数据n n布尔型数据用于进行逻辑运算,布尔型数据用于进行
19、逻辑运算,Object PascalObject Pascal包括包括4 4种形式的布尔型数据。种形式的布尔型数据。n n后后3 3种类型是为了兼容其他语言而设置的,编程种类型是为了兼容其他语言而设置的,编程时应尽量使用时应尽量使用BooleanBoolean类型。类型。n n布尔运算布尔运算 BoolToStr(True)BoolToStr(True)类型类型名称名称字节数字节数取值取值布布尔尔型型BooleanBoolean1 1只能只能为为0 0(FalseFalse)或)或1 1(TrueTrue)字字节节布布尔尔型型ByteBoolByteBool1 10 0(FalseFalse)
20、或非)或非0 0(TrueTrue)宽宽布布尔尔型型WideBoolWideBool2 20 0(FalseFalse)或非)或非0 0(TrueTrue)长长布布尔尔型型LongBoolLongBool4 40 0(FalseFalse)或非)或非0 0(TrueTrue)3.3 常量与变量常量与变量n n常量和变量是学习各种编程语言进行程序设计的基础概念,常量和变量是学习各种编程语言进行程序设计的基础概念,分别代表了在程序运行过程中两种不同状态的量。常量是分别代表了在程序运行过程中两种不同状态的量。常量是指在程序运行过程中其值始终不变的量;与之相反,变量指在程序运行过程中其值始终不变的量;
21、与之相反,变量则是程序运行过程中其值可以改变的量。则是程序运行过程中其值可以改变的量。n n3.3.1 3.3.1 常量常量n n在在PascalPascal中用中用constconst关键字来声明常量,不需要在对常量赋值时声明关键字来声明常量,不需要在对常量赋值时声明常量的类型,编译器能根据常量的值自动判断常量的类型并分配常量的类型,编译器能根据常量的值自动判断常量的类型并分配内存。内存。(可靠修改、容易修改、可读性强可靠修改、容易修改、可读性强)n n3.3.2 3.3.2 变量变量n n当在当在Object PascalObject Pascal中声明一个变量时,变量名在类型的前面,中间
22、中声明一个变量时,变量名在类型的前面,中间用冒号隔开,变量初始化通常要跟变量声明分开。用冒号隔开,变量初始化通常要跟变量声明分开。DelphiDelphi能在能在varvar块中对块中对全局变量全局变量全局变量全局变量赋初值赋初值。(声明方法、命名格式、作用范围声明方法、命名格式、作用范围)3.4 运算符和表达式运算符和表达式n n运算符是在代码中对各种数据类型进行运算的符号。表达式运算符是在代码中对各种数据类型进行运算的符号。表达式由运算对象和运算符两部分组成。由运算对象和运算符两部分组成。n n3.4.1 3.4.1 运算符运算符n nObject PascalObject Pascal语
23、言中的运算符(语言中的运算符(OperatorsOperators)有:)有:、notnot、*、/、divdiv、modmod、andand、shlshl、shrshr、asas、+、-、oror、xorxor、=、=、in in和和is is等。等。n n按照操作数数目的多少来分,运算符分为下面两类:单目运算符按照操作数数目的多少来分,运算符分为下面两类:单目运算符(Unary OperatorUnary Operator)和双目运算符()和双目运算符(Binary OperatorBinary Operator)。上面的)。上面的、notnot和和 为单目运算符,其余的为双目运算符。其中
24、和也可以作为为单目运算符,其余的为双目运算符。其中和也可以作为单目运算符来使用。单目运算符来使用。n n单目运算符一般放在操作对象的前面,只有单目运算符一般放在操作对象的前面,只有 可以放在操作对象的后可以放在操作对象的后面。双目运算符都放在两个操作数之间。面。双目运算符都放在两个操作数之间。n n有些运算符是根据给定的操作数的数据类型做相应处理的。例如,有些运算符是根据给定的操作数的数据类型做相应处理的。例如,运算符运算符notnot对于整型的操作数说,做的是按位取反;对于逻辑类型的对于整型的操作数说,做的是按位取反;对于逻辑类型的操作数来说,它完成的则是逻辑取反。操作数来说,它完成的则是逻
25、辑取反。n n除了运算符除了运算符、is is和和in in外,其余操作符都可以对外,其余操作符都可以对VariantVariant类型的数据进行类型的数据进行操作。操作。3.4.1 运算符运算符n n在复杂的表达式中,各种运算符的优先级分别如在复杂的表达式中,各种运算符的优先级分别如下:下:第一级(最高):第一级(最高):、notnot第二级:第二级:*、/、divdiv、modmod、andand、shlshl、shrshr、asas第三级:第三级:+、-、oror、xorxor第四级(最低):第四级(最低):=、=、in in、is isn n尽管各种运算符的优先级比较明确,但是在具体尽
26、管各种运算符的优先级比较明确,但是在具体编程的时候,并不需要记住所有运算符的优先级编程的时候,并不需要记住所有运算符的优先级顺序。常见的一些优先级顺序比较好记,如乘、顺序。常见的一些优先级顺序比较好记,如乘、除运算符的优先级比加、减运算符的优先级高。除运算符的优先级比加、减运算符的优先级高。在优先级顺序不太明显的地方,可以多加一些小在优先级顺序不太明显的地方,可以多加一些小括号以明确表达式的结合次序。括号以明确表达式的结合次序。3.4.2 表达式表达式n n一个表达式由运算对象和运算符两部分组成。运一个表达式由运算对象和运算符两部分组成。运算符可以分为算术运算符、逻辑运算符、串运算算符可以分为
27、算术运算符、逻辑运算符、串运算符、字符指针运算符、集合运算符、关系运算符符、字符指针运算符、集合运算符、关系运算符以及以及运算符。运算符的优先顺序见表。运算符。运算符的优先顺序见表。运算符运算符优先顺序优先顺序类别类别 1 1域、指域、指针针引用引用 not not2 2取非取非*/div mod shl shr and as*/div mod shl shr and as3 3乘除法与乘除法与类类型型转换转换+-or xor+-or xor4 4加减法加减法=in is=in is5 5比比较较操作操作3.5 常用内部函数常用内部函数n n为了尽可能地减少开发应用程序的难度和工作量,为了尽可
28、能地减少开发应用程序的难度和工作量,DelphiDelphi提供了一个内容十分丰富的程序库提供了一个内容十分丰富的程序库Run-Time Run-Time LibraryLibrary(RTLRTL),其中包括了大量的基本函数、过程、常),其中包括了大量的基本函数、过程、常量和变量定义。量和变量定义。RTLRTL包含的函数、过程、常量等都是在包含的函数、过程、常量等都是在SystemSystem单元中定义的,而单元中定义的,而SystemSystem单元会自动地被其他程序单元会自动地被其他程序单元引用,所以用户编写的应用程序可以随时调用单元引用,所以用户编写的应用程序可以随时调用RTLRTL中
29、中可用的函数,而不用在程序的可用的函数,而不用在程序的usesuses语句中引用该单元。语句中引用该单元。n n3.5.1 3.5.1 数学运算函数数学运算函数(round(round函数,和函数,和randomrandom(range:integerrange:integer)函数)函数n n3.5.2 3.5.2 字符处理函数字符处理函数 pos,length,sizeof,copy,appendstr,concat pos,length,sizeof,copy,appendstr,concatn n3.5.3 3.5.3 时间和日期函数时间和日期函数 Encodedate,Decoded
30、ate,FormatDateTime Encodedate,Decodedate,FormatDateTimen n3.5.4 3.5.4 数据类型转换函数数据类型转换函数 InttoStr,StrtoInt,FloatToStr,DatetoStr InttoStr,StrtoInt,FloatToStr,DatetoStrn n3.5.5 3.5.5 格式输出函数格式输出函数 format(format(数数1 1:%,%,数数2 2:%d,1,88)%d,1,88)格式控制符的形式:格式控制符的形式:%下标:下标:-场宽场宽.精度精度 类型说明符类型说明符 例例1 1:Format(%*
31、.*f,8,2,123.456);Format(%*.*f,8,2,123.456);例例2 2:TVarRec args3=8,2,123.456;Format(%*.*f,args,2);TVarRec args3=8,2,123.456;Format(%*.*f,args,2);3.6 程序语句程序语句n n语句是执行具体操作的指令。语句由语句是执行具体操作的指令。语句由Object PascalObject Pascal的保留字、属性、函数、运算符以及能够生成的保留字、属性、函数、运算符以及能够生成DelphiDelphi编辑器可识别指令的符号组成。建立程序语编辑器可识别指令的符号组成
32、。建立程序语句时必须遵从的构造规则称为语法。编写正确程句时必须遵从的构造规则称为语法。编写正确程序语句的前提,就是学习语言元素的语法,并在序语句的前提,就是学习语言元素的语法,并在程序中使用这些元素正确地处理数据。程序中使用这些元素正确地处理数据。n n 语句的书写规则语句的书写规则n n 赋值语句赋值语句n n 过程语句过程语句n n 注释语句注释语句n n 声明语句声明语句n n GOTO GOTO语句语句3.7 基本程序设计基本程序设计n n3.7.1 3.7.1 顺序结构顺序结构n n顺序结构是程序设计中最简单、最常用的基本结构。顺序结构是程序设计中最简单、最常用的基本结构。在该结构中
33、,各操作块(简称块,对应于程序中的在该结构中,各操作块(简称块,对应于程序中的“程程序段序段”)按照出现的先后顺序依次执行。它是任何程序)按照出现的先后顺序依次执行。它是任何程序的主体基本结构,即使在选择结构或循环结构中,也的主体基本结构,即使在选择结构或循环结构中,也常以顺序结构作为其子结构。常以顺序结构作为其子结构。n n在顺序结构中,通常使用基本控件完成输入及输出操在顺序结构中,通常使用基本控件完成输入及输出操作,使用赋值语句等简单的操作语句组成顺序结构即作,使用赋值语句等简单的操作语句组成顺序结构即可实现顺序结构程序的编写。可实现顺序结构程序的编写。3.7.2 选择结构选择结构n n选
34、择结构是计算机科学用来描述自然界和社会生活中分支选择结构是计算机科学用来描述自然界和社会生活中分支现象的重要手段。其特点是:根据所给定的条件成立(真)现象的重要手段。其特点是:根据所给定的条件成立(真)与否(假),而决定从各实际可能的不同分支中执行某一与否(假),而决定从各实际可能的不同分支中执行某一分支的相应操作,并且任何情况下总有:分支的相应操作,并且任何情况下总有:“无论分支多寡,无论分支多寡,必择其一;纵然分支众多,仅选其一必择其一;纵然分支众多,仅选其一”。n n在在DelphiDelphi中,实现选择结构的是中,实现选择结构的是IFIF语句和语句和CaseCase语句。这两语句。这
35、两种语句又称为条件语句,条件语句的功能就是根据表达式种语句又称为条件语句,条件语句的功能就是根据表达式的值有选择地执行一组语句。的值有选择地执行一组语句。n n IF IF语句语句n n Case Case语句语句IF 语句语句n nIf If 语句又称为条件语句,是最常用的单条件选择结构。语句又称为条件语句,是最常用的单条件选择结构。If If语句的语法格式为:语句的语法格式为:If If Then Then Else Else ;2;可以是关系表达式或布尔表达式。如果可以是关系表达式或布尔表达式。如果 的值为真,则执行的值为真,则执行 1,否则执行,否则执行 2。因为因为IfThenEls
36、eIfThenElse语句是一个完整的语句,因此在语句是一个完整的语句,因此在ElseElse保留字之前没有分号,如果加入分号将产生编保留字之前没有分号,如果加入分号将产生编译错误。译错误。可以是简单语句,也可以是复合语句。可以是简单语句,也可以是复合语句。If If 语句的流程图如图所示。语句的流程图如图所示。n n其中的其中的a1a1或或a2a2可以是空语句。当然,如果可以是空语句。当然,如果a1a1、a2a2操作同时为空语句的话,就失去了选择的意义。为了操作同时为空语句的话,就失去了选择的意义。为了养成良好的程序设计风格和习惯,如果必须设立空分支时,应该把它设在选择条件为假的相应分支养成
37、良好的程序设计风格和习惯,如果必须设立空分支时,应该把它设在选择条件为假的相应分支(即(即a2a2)中。)中。n nIf If 语句分为简单条件语句和复合条件语句两种。语句分为简单条件语句和复合条件语句两种。1.1.简单条件语句简单条件语句:简单条件语句的语句中不包含其他的条件语句。简单条件语句的语句中不包含其他的条件语句。2.2.复合条件语句复合条件语句:如在如在 If If 语句格式中的语句语句格式中的语句1 1或语句或语句2 2本身又是一个本身又是一个 If If 语句,则称为语句,则称为If If 语句的嵌语句的嵌套。嵌套的套。嵌套的If If语句又被称为复合条件语句。语句又被称为复合
38、条件语句。If else if elseIf else if else语句语句如果如果 条件条件 该该(选择选择)条件成立)条件成立吗吗?真真a1a1 条件成立条件成立时时所所执执行的操作,它一般非空行的操作,它一般非空语语句句 假假a2a2 条件不成立条件不成立时时所所执执行的操作,它可行的操作,它可为为空空语语句句 Case 语句语句n n使用使用IF IF 语句可以方便地实现双分支选择结构,但是,对于多分支选择的情况,若仍然语句可以方便地实现双分支选择结构,但是,对于多分支选择的情况,若仍然使用使用IF IF 语句,就必须用多层嵌套,非常繁琐。为此,语句,就必须用多层嵌套,非常繁琐。为此
39、,DelphiDelphi提供了提供了Case Case 语句专门来实现语句专门来实现多分支选择结构。多分支选择结构。Case Case 语句可以根据语句可以根据“选择器表达式选择器表达式”的值,来决定执行相应的语句。的值,来决定执行相应的语句。n n Case Case 语句的语法格式为:语句的语法格式为:Case Case of of :;1;.:;n;Else Else ;End;End;的值必须是顺序类型(如整型、字符型、布尔型、子界型等)。的值必须是顺序类型(如整型、字符型、布尔型、子界型等)。中的值应该是中的值应该是 可能具有的值,各常量之间用逗号分隔。所有常可能具有的值,各常量之
40、间用逗号分隔。所有常量表中的值必须互不相同。量表中的值必须互不相同。可以是简单语句,也可以是复合语句。可以是简单语句,也可以是复合语句。n nCase Case 语句首先计算语句首先计算 的值,然后判断该值是否等于某个常量,若相等则的值,然后判断该值是否等于某个常量,若相等则执行该常量后面的语句,执行完该语句后,转去执行执行该常量后面的语句,执行完该语句后,转去执行EndEnd后面的语句。若与所有情况常后面的语句。若与所有情况常量表中所列的常量都不相等,则执行量表中所列的常量都不相等,则执行ElseElse后面的语句列。后面的语句列。Case 语句语句n n Case Case语句的流程如图所
41、示。语句的流程如图所示。选择选择器表达式器表达式常量表常量表1 1a a1 1 条件条件1 1成立成立时时所所执执行的行的语语句句 常量表常量表2 2a a2 2 条件条件2 2成立成立时时所所执执行的行的语语句句 常量表常量表n na an n 条件条件n n成立成立时时所所执执行的行的语语句句 其他其他a an+1n+1 条件都不成立条件都不成立时时所所执执行的行的语语句句 3.7.3 循环结构循环结构n n在程序设计中,从某处开始有规律地反复执行某一程序块的现象称为在程序设计中,从某处开始有规律地反复执行某一程序块的现象称为“循环循环”,完成这一功能的程序结构称为,完成这一功能的程序结构
42、称为“循环结构循环结构”,而其中重复执行,而其中重复执行的程序块称为的程序块称为“循环体循环体”。n n使用循环可以避免不必要的重复操作,简化程序,节约内存,从而提使用循环可以避免不必要的重复操作,简化程序,节约内存,从而提高效率。高效率。Object PascalObject Pascal提供的循环结构语句有提供的循环结构语句有3 3种,它们分别是:种,它们分别是:WhileWhile语句、语句、RepeatRepeat语句以及语句以及ForFor语句。语句。n n无论何种类型的循环结构,其特点都是:循环体执行与否及其执行次无论何种类型的循环结构,其特点都是:循环体执行与否及其执行次数多少都
43、必须视其循环类型与条件而定,且必须确保循环体的重复执数多少都必须视其循环类型与条件而定,且必须确保循环体的重复执行能在适当的时候得以终止。行能在适当的时候得以终止。n nWhileWhile语句语句n nRepeatRepeat语句语句n n For For语句语句n nFor in Do For in Do 语句语句n n循环的嵌套循环的嵌套n n Break Break过程过程n nContinueContinue过程过程While语句语句n nWhileWhile语句属于前测型循环结构。首先判断条件,根据条件决定是否执行循环,语句属于前测型循环结构。首先判断条件,根据条件决定是否执行循环
44、,执行循环的最少次数为执行循环的最少次数为0 0。其流程图如图所示。其流程图如图所示。n nWhileWhile语句的语法格式为:语句的语法格式为:While While Do Do ;是一个具有是一个具有BooleanBoolean值的条件表达式,为循环的条件。值的条件表达式,为循环的条件。可以是简单语句、复合语句和其他结构语句。可以是简单语句、复合语句和其他结构语句。While While循环的执行过程:首先计算循环的执行过程:首先计算 的值,如果的值,如果 为真(为真(TrueTrue),则执行),则执行DoDo后面的循环体,执行完后,再开始一个新的循环;如果后面的循环体,执行完后,再开
45、始一个新的循环;如果 为假(为假(FalseFalse),),则终止循环,执行则终止循环,执行 后面的语句。后面的语句。可以在可以在 中的任何位置放置中的任何位置放置BreakBreak语句来强制终止语句来强制终止WhileWhile循环循环随时跳出随时跳出WhileWhile循环。循环。BreakBreak语句通常用在语句通常用在If If语句中。语句中。可以在循环体中的任何位置放置可以在循环体中的任何位置放置ContinueContinue语句,在整个循环体没有执行完就重新判语句,在整个循环体没有执行完就重新判断断 ,以决定是否开始新的循环。,以决定是否开始新的循环。ContinueCon
46、tinue语句通常用于语句通常用于If If语句之后。语句之后。While While 条件条件 条件判断条件判断 循循环环体体 条件成立条件成立时时所所执执行的行的语语句句 Repeat语句语句n nRepeatRepeat语句属于后测型循环结构。首先执行循环体,然后判断条件,根据条件决定是否语句属于后测型循环结构。首先执行循环体,然后判断条件,根据条件决定是否继续执行循环,因此执行循环的最少次数为继续执行循环,因此执行循环的最少次数为1 1。其流程图如图所示。其流程图如图所示。n nRepeatRepeat语句的语法格式为:语句的语法格式为:RepeatRepeat Until Until
47、 ;是一个具有是一个具有BooleanBoolean值的条件表达式,为循环的条件。值的条件表达式,为循环的条件。可以是一条语句,也可以是多条语句。多条语句无需用可以是一条语句,也可以是多条语句。多条语句无需用BeginEndBeginEnd括起来,而由保留括起来,而由保留字字RepeatRepeat与与UntilUntil将其括起。将其括起。Repeat Repeat循环的执行过程:首先执行循环的执行过程:首先执行 ,然后计算,然后计算 的值,如果的值,如果 为假为假(FalseFalse),则开始一个新的循环;如果),则开始一个新的循环;如果 为真(为真(TrueTrue),则终止循环,执行
48、),则终止循环,执行 后面后面的语句。的语句。可以在循环体中的任何位置放置可以在循环体中的任何位置放置BreakBreak语句来强制终止语句来强制终止RepeatRepeat循环循环随时跳出随时跳出RepeatRepeat循环。循环。BreakBreak语句通常用于语句通常用于If If语句之后。语句之后。可以在循环体中的任何位置放置可以在循环体中的任何位置放置ContinueContinue语句,在整个循环体没有执行完就重新判断语句,在整个循环体没有执行完就重新判断 ,以决定是否开始新的循环。以决定是否开始新的循环。ContinueContinue语句通常用于语句通常用于If If语句之后。
49、语句之后。循循环环体体 条件成立条件成立时时所重复所重复执执行的行的语语句句 Until Until 条件条件 条件判断条件判断 For语句语句n n在不知道需要执行多少次循环时,应该用在不知道需要执行多少次循环时,应该用WhileWhile或或RepeatRepeat循环。但是,若知道要执行多少次循循环。但是,若知道要执行多少次循环时,则最好使用环时,则最好使用ForFor循环结构。与前两种循环不同,循环结构。与前两种循环不同,ForFor循环使用一个循环变量,每重复一循环使用一个循环变量,每重复一次循环之后,循环变量的值就会自动增加或者减少。次循环之后,循环变量的值就会自动增加或者减少。n
50、 nForFor循环的流程图如图所示。循环的流程图如图所示。n nForFor语句的语法格式为:语句的语法格式为:For For =To|DownTo To|DownTo Do Do ;为必要参数,用作循环计数器,只能是顺序类型。为必要参数,用作循环计数器,只能是顺序类型。和和 表示表示 的初值和终值,可以是表达式,但应与的初值和终值,可以是表达式,但应与 的的类型相同。若为表达式,则在进入循环之前已被计算确定,在循环体中改变初值或终值类型相同。若为表达式,则在进入循环之前已被计算确定,在循环体中改变初值或终值表达式中变量的值,并不影响循环的次数。表达式中变量的值,并不影响循环的次数。To T