Delphi程序设计及实验指导电子.pptx

上传人:莉*** 文档编号:87405630 上传时间:2023-04-16 格式:PPTX 页数:49 大小:206.53KB
返回 下载 相关 举报
Delphi程序设计及实验指导电子.pptx_第1页
第1页 / 共49页
Delphi程序设计及实验指导电子.pptx_第2页
第2页 / 共49页
点击查看更多>>
资源描述

《Delphi程序设计及实验指导电子.pptx》由会员分享,可在线阅读,更多相关《Delphi程序设计及实验指导电子.pptx(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第二章 面向对象的PascalDelphi的编程语言即Object Pascal是在Pascal的基础上发展起来的,它继承了Pascal语言语法结构严 谨 和 编 译 代 码 高 效 优 化 等 优 点。本 章 将 介 绍Object Pascal的数据类型、常量、变量、运算符、语句、函数和过程等。第1页/共49页2.1 数据类型2.1.1 简单数据类型简单类型包括有序类型和实型两种。1有序类型有序类型包括整型、字符型、布尔型、枚举型和子界型。有序类型是一种线性的数据结构,每个值都有唯一的前驱(除第一个)和唯一的后继(除最后一个)。(1)整型整型的表示范围及存储格式见表2-1。第2页/共49页

2、类型类型取值范围取值范围存储格式存储格式IntegerInteger-21474836482147483647-21474836482147483647有符号有符号3232位整数位整数CardinalCardinal0429496729504294967295无符号无符号3232位整数位整数ShortintShortint-128127-128127有符号有符号8 8位整数位整数SmallintSmallint-3276832767-3276832767有符号有符号1616位整数位整数LongintLongint-21474836482147483647-2147483648214748364

3、7有符号有符号3232位整数位整数Int64Int64-2-26363226363-l-l有符号有符号6464位整数位整数ByteByte02550255无符号无符号8 8位整数位整数WordWord065535065535无符号无符号1616位整数位整数LongwordLongword0429496729504294967295无符号无符号3232位整数位整数表2-1 整型的取值范围和存储格式2.1 数据类型第3页/共49页2.1 数据类型(2)字符型字符型的类型标识符是Char。字符型的数据只能是单个字符,不能是一串字符。例如ABC,x=?等都不是字符型的数据,而是字符串。(3)布尔型通常

4、用到的布尔类型是Boolean,一个Boolean类型的变量占一个字节,它只有两种取值:true和false。定义变量i,ch,t分别为整型、字符型、布尔型。var i:Interge;ch:Char;t:Boolean;第4页/共49页2.1 数据类型(4)枚举类型枚举类型是用一些标识符来表示一系列有序数,即由一些标识符组成的一个线性表。定义枚举类型的语法是:typetypeName=(val1,.,valn)(5)子界类型子界类型指的是某个有序类型(称为基类)的一个子集。定义子界类型的语法是:typetypeName=Low.High;第5页/共49页2.1 数据类型2实型实型表表2-2给

5、出了实型的表示范围和存储格式。给出了实型的表示范围和存储格式。类型类型范围范围有效位有效位所占位数所占位数RealReal2.9*102.9*10-24-241.7*101.7*103083081111-2-28 8Real48Real482.9*102.9*10-39-391.7*101.7*1038381111-2-26 6SingleSingle1.5101.510-45-453.4*103.4*1038387 78 84 4DoubleDouble5.0*105.0*10-324-3241.7*101.7*10308308151516168 8ExtendedExtended3.6*1

6、03.6*10-4951-49511.1*101.1*1049324932191920201010CompComp-2-26363+l2+l26363-l-l191920208 8CurrencyCurrency-922337203685477.5808922337203685477.5807-922337203685477.5808922337203685477.5807191920208 8表2-2 实型的表示范围和存储格式第6页/共49页2.1 数据类型2.1.2 字符串类型字符串类型是用一对单引号括起来的一系列字符。字符串类型的表示范围和存储格式见表 2-3。类型类型最多字符最多字符字

7、节数字节数字符集字符集ShortStringShortString2552552 2256B256BANSIANSI向后兼容向后兼容AnsiStringAnsiString2 231314 42GB2GBSBCSSBCS,MBCSMBCSLongStringLongString2 231314 42GB2GBUnicodeUnicodeWideStringWideString2 230304 42GB2GB等价于等价于AnsiCharAnsiChar表2-3 字符串类型的表示范围和存储格式第7页/共49页2.1 数据类型2.1.3 结构类型结构数据类型是一种复合数据类型,由多个数据组成。结构类

8、型包括集合类型、数组类型、记录类型、文件类型等。1集合类型集合类型是一组相同类型元素的组合。定义集合类型:typeName=set of BaseType2数组数组是一些具有相同类型元素的有序组合。(1)静态数组 静态数组的声明格式为:typeName=arrayindexType1,.,indexTypen of BaseType;第8页/共49页2.1 数据类型(2)动态数组动态数组没有固定的大小或长度。当赋值或使用某些函数(如SetLength)时,动态数组在内存中重新分配。动态数组的声明格式为:type Name=array of BaseType;定义动态数组不需声明元素的个数。例如

9、:typeDynamicarray=array of Real;vara1,a2:Dynamicarry;a1:=a2;/a1和a2指向相同的内存单元。第9页/共49页2.1 数据类型3记录类型记录类型(有的语言中被称为结构)是一个不同种类元素的集合,每个元素称为字段(field)。在声明时,指定记录的名字和每个字段。声明格式为:typeRecordTypeName=recordFieldList 1:type1;FieldList 2:type2;FieldList n:type n;end;第10页/共49页2.1 数据类型4文件类型文件类型是由相同类型的元素组成的有序集合。文件类型的声明

10、格式为:typefileTypeName=file of type例:声明一个文件类型RecordList,以上面已定义的TdateRec为数据类型。typeRecordList=file of TdateRec;var Myrecordlist:RecordList;第11页/共49页2.1 数据类型2.1.4 可变类型有时要对一些数据类型变化的数据进行操作,并且在编译期间不能确定数据的类型,这时就可以使用可变类型的数据。可变类型可以使用除记录、集合、静态数组、文件等结构类型、指针类型及长整型外的所有类型。可变类型有一个特殊的值Null,表示不明的或丢失的数据。可变类型变量的声明格式为:va

11、rv1:Variant;第12页/共49页2.2 常量与变量2.2.1 标识符标识符是描述Object Pascal程序各个部分的名称,这些部分包括标记、对象、过程、类型、单元、变量及程序。标识符的大小写无关(即它不区分大小写),并且遵循以下规则:可为任意长度,但只有前255个字符有效。标识符的第1个字符必须是字母或下划线。跟在第1个字符后面的字符必须是字母、数字或下划线。标识符中不允许出现空格。第13页/共49页 2.2.2 常量常量是一个在程序的运行过程中具有不变值的标识符,常量的声明格式如下:Const 常量名=表达式;变量不能在一个常量声明中使用,但算术和逻辑运算符可以,下面的函数可以

12、在常量声明中使用。Abs Low Round Chr Odd SizeOf Hi OrdSucc High Pred Swap Length Ptr Trunc Lo2.2 常量与变量第14页/共49页2.2 常量与变量2.2.3 变量变量是程序代码中代表一个内存地址的标识符,而此地址中的内容在程序执行过程中可以改变。在变量使用之前必须先声明,变量声明格式如下:var 变量名表:类型名;例:var s:string;i:integer;flag:Boolean;第15页/共49页2.3 表达式与运算符2.3.1 表达式表达式就是变量、常量、字符串、运算符及函数按照一定规则的组合。例:Peopl

13、es Republic Of+ChinaGross/12Max(x,y)-Min(x,y)2.3.2 运算符1赋值运算符(:=)赋值运算符“:=”是先计算赋值运算符右边表达式的值,再将结果赋给左边的变量。第16页/共49页2.3 表达式与运算符2算术运算符 表2-4 算术运算符运算符运算符作用作用操作数类型操作数类型结果类型结果类型+表示正值表示正值IntegerInteger或或RealRealIntegerInteger或或RealReal算术加算术加IntegerInteger或或RealRealIntegerInteger或或RealReal表示负值表示负值IntegerInteger

14、或或RealRealIntegerInteger或或RealReal算术减算术减IntegerInteger或或RealRealIntegerInteger或或RealReal*算术的乘运算算术的乘运算IntegerInteger或或RealRealIntegerInteger或或RealReal/浮点数的除运算浮点数的除运算IntegerInteger或或RealRealRealRealDivDiv整型数的除运算整型数的除运算IntegerIntegerIntegerIntegerModMod模运算模运算IntegerIntegerIntegerInteger第17页/共49页2.3 表达式

15、与运算符3关系运算符关系运算符是对两个类型相容且可以比较大小的数据进行比较,结果为布尔类型,见表2-5。表2-5 关系运算符运算符运算符作用作用结果类型结果类型=等于等于BealoonBealoon不等于不等于BealoonBealoon 大于大于BealoonBealoon=大于或等于大于或等于BealoonBealoonInIn属于属于BealoonBealoon第18页/共49页2.3 表达式与运算符4逻辑运算符逻辑运算符对逻辑类型的操作数进行运算,结果为布尔型,见表2-6。表2-6 逻辑运算符运算符运算符作用作用操作数类型操作数类型结果类型结果类型notnot逻辑非逻辑非Bealoon

16、BealoonBealoonBealoonandand逻辑与逻辑与BealoonBealoonBealoonBealoonoror逻辑或逻辑或BealoonBealoonBealoonBealoonxorxor逻辑异或逻辑异或BealoonBealoonBealoonBealoon第19页/共49页2.3 表达式与运算符5集合运算符 表2-7 集合运算符运算符运算符作用作用操作数类型操作数类型结果类型结果类型+集合的并集集合的并集集合类型集合类型集合类型集合类型-集合的差集集合的差集集合类型集合类型集合类型集合类型*集合的交集集合的交集集合类型集合类型集合类型集合类型=A=BA=A=BA=B,

17、B B是否是是否是A A的子集的子集集合类型集合类型BealoonBealoon=两个集合是否相等两个集合是否相等集合类型集合类型BealoonBealoon两个集合是否不相等两个集合是否不相等集合类型集合类型BealoonBealooninins in As in A,s s是否属于集合是否属于集合A A有序类型,集合类型有序类型,集合类型BealoonBealoon第20页/共49页2.3 表达式与运算符6运算符的优先级运算符运算符优先级优先级notnot1 1(最高)(最高)*,/,div div,modmod,andand2 2+,oror,xorxor3 3关系运算符关系运算符4 4

18、(最低)(最低)表2-8 Object Pascal各运算符的优先级第21页/共49页2.4 语句2.4.1 注释注释是添加在程序中用来说明代码功能的语句,它是非执行语句,对程序的执行部分不会产生任何影响,有助于提高程序的可读性。在Object Pascal中,有三种注释标记:花括号“”注释:位于“”中的内容为注释。双斜杠“/”注释:“/”之后到本行结束的内容为注释。圆括号及星号对“(*)”注释:(*)中的内容为注释。例如以下语句都是注释:The first kind Of comment./The secondkind Of comment.(*The third kind Of comme

19、nt.*)第22页/共49页2.4 语句2.4.2 简单语句和复合语句简单语句是Object Pascal中最简单也最常用的语句,简单语句用分号分隔。赋值语句、函数、过程调用语句等是简单语句,例如下面的语句都是简单语句:r:=m+n;/两个值相加并赋值ShowMessage(Im a student.);复合语句是多个简单语句的组合,复合语句以begin表示开始,以end表示结束。例如:begini:=1;j:=i+1;s:=abc;end;第23页/共49页2.4 语句2.4.3 条件语句条件语句是Object Pascal语言提供的选择结构语句,主要有如下两种:1if语句if语句的表示形式

20、:if then else 第24页/共49页2.4 语句【例2-1】求两个数中的最大值。if ab thenmax:=a /在变量a之后不能加“;”Elsemax:=b;【例2-2】符号函数。-1 (x0)用用if if语句的嵌套实现,如下:语句的嵌套实现,如下:if x0 thenif x0 thenif x0 then y:=1 y:=1else else y:=0;y:=0;第25页/共49页2.4 语句2case语句case语句的表示形式:case of :else end;第26页/共49页2.4 语句【例2-3】编写一个程序,输入一个年份,判断是否是闰年。闰年的条件是满足下面条件

21、之一:(1)能被4整除,但不能被100整除的年份;(2)能被100整除,也能被400整除的年份。对这两个条件都不符合的年份不是闰年。程序功能:输入一个年份,显示其是否为闰年的信息。界面设计:四个组件:两个文本框Label1和Lable2,分别显示提示和结果信息;一个Edit组件Edit1,用来输入要进行判断的年份;一个Button组件Button1,用来查询结果。如图2-1所示。第27页/共49页2.4 语句图2-1 窗体界面程序代码:procedure TForm1.Button1Click(Sender:TObject);var year:Integer;flag:Boolean;第28页

22、/共49页2.4 语句begin year:=StrtoInt(Edit1.text);/将字符串转变为整型 if year mod 4=0 then begin if year mod 100=0 then begin if year mod 400=0 then flag:=true else flag:=false;end else flag:=true;flag:=true;end end else else flag:=false;flag:=false;if flag then if flag then Label2.Caption:=Label2.Caption:=该年份是闰该年

23、份是闰年年 else else Label2.Caption:=Label2.Caption:=该年份不该年份不是闰年是闰年;end;end;第29页/共49页2.4 语句 2.4.4 循环控制语句 循环语句可以使用户重复执行一条或多条语句,直到满足某个条件时为止。1for语句 for语句的一般形式为:for 循环变量:=to/downto do ;【例2-4】求1100所有整数的累加和。var s,i:Integer;s:=0;for i:=l to 100 do s:=s+i;第30页/共49页2.4 语句2while语句while语句的一般形式为:while dowhile后面的为逻辑表

24、达式,先计算表达式的结果,如果表达式为true,while语句将重复执行循环体。如果表达式结果为false,则跳出循环,执行while之后的语句。【例例2-52-5】求求1 1100100所有整数的累所有整数的累加和。加和。varvars,i:Integer;s,i:Integer;i:=1;i:=1;s:=0;s:=0;while i=100 dowhile i=100 dobeginbegins:=s+i;s:=s+i;i:=i+1;i:=i+1;end;end;第31页/共49页2.4 语句3repeat语句repeat语句的一般形式为:repeat until 当使用repeat语句时

25、,先执行循环体,再判断表达式,只要until后面的表达式为true,则将再执行循环体。因此,repeat语句下面的循环体至少执行一次。【例例2-62-6】求求1 1100100所有整数的所有整数的累加和。累加和。varvars,i:Integer;s,i:Integer;i:=1;i:=1;s:=0;s:=0;repeatrepeats:=s+i;s:=s+i;i:=i+1;i:=i+1;until i100until i100;第32页/共49页2.4 语句4break语句 功能是强行退出循环,break语句只能用在循环体内。【例2-7】利用break语句退出一个while循环。vars:S

26、tring;beginwhile true do /条件恒为真 begin ReadLn(s);/读入一字符串 if s=then break;/不输入任何字符,则退出循环 WriteLn(s);/输出字符串 end;end;第33页/共49页2.4 语句5continue语句continue语句也用在循环体中,其作用是强行结束本次循环,转入循环开始处,开始执行下一次循环操作。【例2-8】使用continue语句,求1100所有奇数之和。vari,s:Integer;s=0;beginfor i:=1 to 100 do begin if i mod 2=0 then continue;/如果

27、为空,跳过剩余语句,转到下一个循环 s:=s+i;end;end;第34页/共49页2.5 函数和过程函数和过程是实现一定功能的语句块,是程序中的特定功能单元。可以在程序的其他地方被调用,也可以进行递归调用。函数和过程的区别在于函数有返回值,而过程没有返回值。2.5.1 函数和过程的声明函数和过程在使用前必须进行声明。1函数的声明函数的声明是在程序的type区,具体形式如下:function():;第35页/共49页2.5 函数和过程函数的定义是在程序的implementation部分,具体形式如下:function():;varbegin :=/也可以用Result系统保留字代替end;在b

28、egin与end之间是在函数调用时实现特定功能的一系列语句。函数值的返回有两种方式:将返回值直接赋给函数名。将返回值赋给Result。第36页/共49页2.5 函数和过程【例2-9】求两个数中的最大数。function Max(a,b:integer):integer;/两个形参为整型值a、b,函数返回值为整型varm:Integer;beginif ab thenm:=aelsem:=b;Max:=m;/或result:=m;end;第37页/共49页2.5 函数和过程2过程的声明过程的声明与函数类似,所不同的是使用的保留字不同,而且少了一个返回值类型;过程的声明是在程序的type区,具体形

29、式如下:procedure():;过程的定义是在程序的implementation部分,具体形式如下:procedure();begin end;第38页/共49页2.5 函数和过程【例2-10】显示一行num个星号*。procedure ShowStar(num:Integer);var i:Integer;s:String;begin s:=;for i:=1 to num do s:=s+*;ShowMessage(s);end;第39页/共49页2.5 函数和过程2.5.2 重载函数和过程所谓重载,是指在同一个作用范围内给不同的函数或过程取同一个名称。重载可以方便编程,重载函数必须用指

30、令字overload来进行说明。下面的两个函数就是重载函数:function Max(a:Integer;b:Integer):Integer;overload;/求两个整数的最大值 function Max(a:Real;b:Real):Real;overload;/求两个实数的最大值下面两条语句就调用了不同的函数:Max(3.7,4.6);/调用的是第二个重载函数Max(3,4);/调用的是第一个重载函数第40页/共49页2.5 函数和过程2.5.3 参数1形参与实参函数或过程的声明和定义时参数列表中的参数称为形式参数,简称形参;而函数或过程调用时参数列表中的参数称为实在参数,简称实参。2

31、数值参数、变量参数和常量参数(1)数值参数在调用函数或过程时,数值参数在运行过程中只改变其形参的值,不改变其实参的值,即形参不会影响原来实参的值。(2)变量参数如果用户想改变传递的参数值,就需要使用变量参数,即在被调用程序的参数表中的形参前加上保留字var。第41页/共49页2.5 函数和过程(3)常量参数如果当过程或函数执行时要求不改变形参的值,最保险的办法是使用常量参数。在参数表的参数名称前加上保留字const可以使一个形参成为常量参数。使用常量参数代替数值参数可以保护用户的参数,使用户在不想改变参数值时不会意外地将新的值赋给这个参数。2.5.4 作用域在Object Pascal中,根据

32、变量的作用域,可将变量分为:全局变量和局部变量。所谓变量的作用域,是指变量的有效范围。全局变量在整个程序中都有效,其作用域为整个程序;局部变量只在声明它的函数和过程中有效,其作用域只限于该函数或过程本身。第42页/共49页2.5 函数和过程例:typevarForm1:TForm1;/全局变量Form1implementation$R*.dfmprocedure TForm1.FormCreate(Sender:TObject);var m,n:Integer;/局部变量m,nForm1:Tform1;(*局部变量Form1,与上面的全局变量同名,在过程中局部变量起作用。*)第43页/共49页

33、2.5 函数和过程2.5.5 函数和过程的调用1函数和过程的调用(1)函数的调用函数调用的一般形式为:()函数的调用往往是将返回值赋给某个变量或参与运算。例如调用例2-9,将其返回值赋给变量x的语句为:x:=Max(3,6);(2)过程的调用过程的调用的一般形式为:();其中的实参可以是常量、变量或表达式,但实参的个数和类型与形参完全匹配,即个数相同、类型一致。例如:调用例2-10的过程ShowStar的语句为:ShowStar(20);第44页/共49页2.5 函数和过程2函数和过程的递归调用所谓递归调用,是指函数A调用函数B,而函数B又调用函数A的情况,或是指一个函数调用自身的特殊情况。【

34、例2-11】递归调用program Project1;($SappTypeConsole)varalpha:Integer;procedure Test2(var A:Integer):forword;(*Test2被说明为前置过程*)procedure Testl(Var A:Integer);begina:=a-1;if a0 thenTest2(a);Test2(a);Writeln(a);Writeln(a);end;end;procedure Test2(var a:Integer);procedure Test2(var a:Integer);经经前置说明的前置说明的Test2Te

35、st2的执行部分的执行部分 beginbegin a:=a div 2;a:=a div 2;if a0 then if a0 thenTest1(a);Test1(a);在在Test2Test2中调用已执行的中调用已执行的过程过程Test1Test1endend;beginbegina1pha:=15;/a1pha:=15;/给给a1phaa1pha赋初值赋初值Test1(a1plla);Test1(a1plla);(*(*第一次调用第一次调用Test1Test1,递归开始,递归开始*)end;end;第45页/共49页习题1Object Pascal语言中有哪些常用的数据类型?变量在使用前

36、必须先定义,如何定义各种数据类型的变量?简述Object Pascal中标识符的命名应遵循哪些规则。Object Pascal中提供了哪些类型运算符,在表达式中其优先级从高到低如何排列。4注释语句有哪几种形式?5条件语句有哪几种形式?它们在什么情况下适用。6循环语句有哪几种形式?break语句与continue语句有何异同。7如何声明、定义和调用函数和过程。8什么是重载?如何进行重载函数和过程。9什么是变量的作用域?根据变量的作用域,可将变量分为哪几类。第46页/共49页习题10分析下列程序段的运行结果。a:=False;b:=False;c:=True;d:=20;if a then d:=

37、d-12 else if not b then if c thenif c then begin begin x:=10;x:=10;d:=d+3;d:=d+3;end endelseelse x:=34;x:=34;运行后,运行后,d,xd,x的值分别是的值分别是 、。第47页/共49页习题 s:=0;for i=3 to 14 do s:=s+i;运行后,s的值是 。Function Fun(x:Integer):Integer;begin if x=0 then y=0 else if x0 then y:=x+4y:=x+4 else else y:=x-5;y:=x-5;end;end;则函数调用则函数调用Fun(0)Fun(0)、Fun(4)Fun(4)、Fun(-7)Fun(-7)的值分别是的值分别是 、。1111编程实现:输入两个整数,求这编程实现:输入两个整数,求这两个数之间的所有奇数之和。两个数之间的所有奇数之和。第48页/共49页感谢您的观看!第49页/共49页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁