版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Delphi 7 程序设计与实验指导第一章 Delphi概述Delphi被称为是第四代编程语言,它采用基于窗体和面向对象的方法,具有高速的编译器,功能强大的数据库支持,与Windows编程紧密结合,成熟的组件技术等特点。 Delphi是全新的可视化编程环境,为用户提供了一种方便、快捷的Windows应用程序开发工具;除此之外,还允许用户挂接其它的应用程序开发工具。Delphi适应于多种数据库结构,从客户机/服务器模式到多层数据结构模式,而且具有高效率的数据库管理系统和新一代更先进的数据库引擎,同时采用最新的数据分析手段和提供大量的企业组件。本章主要介绍Delphi 7的功能特点以及Delphi
2、 7的安装和集成开发环境(IDE)。1.1 Delphi的发展Delphi是Windows系统下的可视化集成开发工具,提供了强大的可视化组件VCL(Visual Component Library)功能,为快速、高效地开发出Windows系统下的应用程序提供了方便。Delphi从最初的Delphi 1.0、Delphi 2.0发展到了现在的Delphi 7.0。Delphi 7.0是Windows环境下进行交叉平台快速应用开发的软件,无论是企业级用户,还是个人开发者,都能够利用Delphi 7.0轻松、快捷地构建各类应用。1.2 Delphi 7的功能特点1.2.1 Delphi 的主要特点
3、1可视化开发环境 2丰富的可视化组件VCL 3面向对象特性 4高效的编译器 5强大的数据库开发功能 6良好的分布式应用开发支持 1.2.2 Delphi 7的新特性 1集成开发环境方面 2Web技术(仅限于专业版和企业版)方面 3数据库技术方面 4COM方面 5对开发Linux平台应用程序支持方面1.2 Delphi 7的功能特点1.3 Delphi的安装1.3.1 Delphi 7的安装要求Delphi 7有3个版本,分别是标准版(Standard)、专业版(Professional)和企业版(Enterprise),适用于一般用途开发、较高层次开发和进行多层数据库及分布式应用的开发。在安装
4、Delphi 7之前,请先检查一下软硬件配置是否符合以下要求: Pentium 166以上的CPU,推荐Pentium350以上。 32MB以上的内存,推荐64MB以上。 Windows9x、Windows NT/2000或更高版本的操作系统。 Delphi 7的压缩安装需100MB以上的硬盘空间。 VGA或更高分辨率的显示器。1.3 Delphi的安装1.3.2 Delphi 7的安装步骤 (1) 启动Windows 98,将Delphi 7安装盘放入光驱,系统会自动弹出Delphi 7的欢迎界面,如图1-1所示。图1-1 安装欢迎界面1.3 Delphi的安装(2) 单击Next按钮,进入
5、下一步,安装向导提示用户输入序列号以及授权码,如图1-2所示。用户可以在说明书或软件包装上找到所需信息,也可在根目录下的有关文件中找到。图1-2 输入序列号1.3 Delphi的安装(3) 输入正确的序列号后,单击Next按钮,将显示安装所需的软件许可协议,如果用户同意,单击Next按钮进入下一步。(4) 安装向导提示用户选择安装形式,如图1-3所示。图1-3 选择安装类型1.3 Delphi的安装(5) 安装向导询问是否需要VisiBroker/CORBA支持,用户可根据实际情况自由选择。(6) 单击Next按钮以后,安装向导提示系统将安装三种版本的微软Office组件,但只有一种会被注册,
6、作为默认Office组件,用户可根据需要选择,如图1-4所示。 图1-4 选择微软Office组件1.3 Delphi的安装(7) 根据安装机器当中的Office的类型选择对应的选项,然后单击Next按钮,此时将出现安装附加组件窗口,如图1-5所示,一般情况下建议用户选择默认设置。图1-5 安装附件组件1.3 Delphi的安装(8) 单击Next按钮,安装向导提示输入Delphi 7安装路径,默认路径如图1-6所示。单击Change按钮可改变安装目录,在此建议使用默认路径以免引起混乱。图1-6 选择安装路径1.3 Delphi的安装(9) 单击Next按钮,安装向导询问是否将安装数据库保存到
7、本地硬盘,如图1-7所示。图1-7 保存安装数据库1.3 Delphi的安装(10) 单击Next按钮,弹出准备安装窗口,如图1-8所示。如果用户发现存在遗漏之处,还可以单击Back按钮回到上一对话框进行修改。图1-8 准备安装1.3 Delphi的安装(11) 单击Install按钮正式开始安装,如图1-9所示。在此过程中用户可随时单击Cancel按钮终止安装过程。图1-9 正式安装1.3 Delphi的安装(12) 安装完毕后,系统将自动进行程序各个部分的配置,配置完成以后,将提示安装过程完毕,如图1-10所示。图1-10 安装完毕1.3 Delphi的安装(13) 单击Finish按钮,
8、弹出一个对话框,如图1-11所示,提示是否重新启动计算机以替代在安装过程中锁定的文件,用户可根据提示继续进行。图1-11 提示重新启动计算机1.4 Delphi的集成开发环境Delphi 7系统安装完成后,单击“开始程序Borland Delphi 7Delphi 7”即可启动Delphi 7。Borland Delphi 7程序组包含以下部分:即Help、BDE Administrator、Database Desktop、Datapump、Delphi 7、Image Editor、Register Now、SQL Explorer、SQL Monitor、WinSight 32和XML
9、Mapper。Delphi 7系统的集成开发环境由7个部分构成,如图1-12所示。这7个部分是:主菜单、快捷工具栏、组件面板、窗体设计器、代码编辑器、对象树状查看器(Object TreeView)和对象查看器(Object Inspector)。它们分布在Delphi 7主菜单、窗体设计器、代码编辑和浏览窗口、对象树状查看窗口和对象查看窗口等窗口中。1.4 Delphi的集成开发环境图1-12 Delphi 7集成开发环境1.4 Delphi的集成开发环境1.4.1 Delphi 7主窗口 Delphi 7主窗口位于集成开发环境的顶端,如图1-13所示。图1-15 Delphi 7集成开发环
10、境的主窗口 主窗口包含主菜单、工具栏和组件面板,是Delphi 7集成开发环境的核心。通过主窗口,开发者可控制从工程(又称项目)创建、界面设计、程序编制、调试到运行的整个应用开发过程。1.4 Delphi的集成开发环境1主菜单 主菜单及其下拉菜单提供了Delphi 7集成开发环境的所有功能。Delphi 7主菜单除包括通常Windows应用程序都具有的File、Edit、View、Window及Help等菜单项外,还有与Delphi 7工程、运行及配置等相关的菜单项。2.快捷工具栏(Speed ToolBar) 快捷工具栏位于Delphi 7主窗口的左下方它提供了与主菜单的常用菜单项相对应的命
11、令按钮,可以在不打开主菜单的情况下快速执行这些功能。各按钮的功能见书表1-9所示。 1.4 Delphi的集成开发环境3.组件面板Delphi 7主窗口的另一部分是组件面板,位于主窗口的右下方(如图1-26)。组件按功能、基类或特性进行了分类,用一个具有多页面的组件面板进行管理,为用户使用组件进行应用设计带来了很大的方便。组件面板的布局如图1-16所示。图1-16 组件面板每一组件选项卡都是以鼠标箭头开始的,它表明该选项卡当前处于初始状态,用户尚未选择任何组件。当用户单击选择某个组件后,即可将该组件添加到窗体。1.4 Delphi的集成开发环境1.4.2 窗体设计器用户界面是应用系统与用户直接
12、交互的界面。设计用户界面是设计应用程序的重要部分。Delphi的用户界面由窗体构成,窗体的设计是在窗体设计器中完成的。Delphi 7提供了一个功能强大的、所见即所得的窗体设计器。用户只要从组件面板中选择需要的组件添加到窗体,就可获得所需的应用程序界面。在窗体设计器中还可对窗体中所包含的组件进行删除或编辑操作。在Delphi 7中创建一个新的应用程序时,系统将自动在当前工程中添加1个新窗体,默认名为Form1。1.4 Delphi的集成开发环境1.4.3 对象树状查看器对象树状查看器以树状结构显示当前工程所包含的所有对象,就像在Windows系统的文件管理器中显示各文件夹及文件的树状结构一样,
13、如图1-17所示。图1-17 对象树状查看器 1.4 Delphi的集成开发环境1.4.4 对象查看器对象查看器的主要功能是对对象进行设计和管理,它是联系界面各组件和程序编码的媒介。对象查看器由对象列表框、属性选项卡和事件选项卡三个部分组成,如图1-18所示。对象查看器有两项主要功能:(1) 设置或修改窗体以及包含于窗体的对象属性。(2) 设置对象响应的事件处理程序。 图1-18 对象查看器1.4 Delphi的集成开发环境1.4.5 代码编辑和浏览窗口代码编辑和浏览窗口包括两部分,其外观如图1-19所示。左边是代码树状浏览器,右边是代码编辑器,标题栏显示的是正处于当前单元文件的名称。代码编辑
14、器是进行源程序的编辑窗口。可以同时对多个单元文件进行编辑,此时各单元文件以多个标签页的形式出现,选择相应的标签页即可对该单元文件进行编辑,底部的状态栏有当前行列、改写/插入等编辑状态提示。代码浏览器以树状图方式显示单元文件的信息。图1-19 代码编辑和浏览窗口1.4 Delphi的集成开发环境习题1Delphi 7有哪些主要特点?2Delphi 7有哪些新功能?3简述Delphi 7的安装要求。4Delphi 7集成开发环境由哪几部分组成?简述各部分的功能。Delphi 7 程序设计与实验指导第二章 面向对象的PascalDelphi的编程语言即Object Pascal是在Pascal的基础
15、上发展起来的,它继承了Pascal语言语法结构严谨和编译代码高效优化等优点。本章将介绍Object Pascal的数据类型、常量、变量、运算符、语句、函数和过程等。2.1 数据类型2.1.1 简单数据类型简单类型包括有序类型和实型两种。1有序类型有序类型包括整型、字符型、布尔型、枚举型和子界型。有序类型是一种线性的数据结构,每个值都有唯一的前驱(除第一个)和唯一的后继(除最后一个)。(1) 整型整型的表示范围及存储格式见表2-1。类型取值范围存储格式Integer-21474836482147483647有符号32位整数Cardinal04294967295无符号32位整数Shortint-1
16、28127有符号8位整数Smallint-3276832767有符号16位整数Longint-21474836482147483647有符号32位整数Int64-263263-l有符号64位整数Byte0255无符号8位整数Word065535无符号16位整数Longword04294967295无符号32位整数表2-1 整型的取值范围和存储格式2.1 数据类型2.1 数据类型(2) 字符型字符型的类型标识符是Char。字符型的数据只能是单个字符,不能是一串字符。例如ABC,x=? 等都不是字符型的数据,而是字符串。(3) 布尔型通常用到的布尔类型是Boolean,一个Boolean类型的变量
17、占一个字节,它只有两种取值:true和false。定义变量i,ch,t分别为整型、字符型、布尔型。var i: Interge; ch: Char; t: Boolean;2.1 数据类型(4) 枚举类型枚举类型是用一些标识符来表示一系列有序数,即由一些标识符组成的一个线性表。定义枚举类型的语法是:typetypeName=(val1,.,valn)(5) 子界类型子界类型指的是某个有序类型(称为基类)的一个子集。定义子界类型的语法是:typetypeName=Low.High;2.1 数据类型2实型表2-2给出了实型的表示范围和存储格式。类型范围有效位所占位数Real2.9*10-241.7
18、*1030811-28Real482.9*10-391.7*103811-26Single1.510-453.4*1038784Double5.0*10-3241.7*1030815168Extended3.6*10-49511.1*104932192010Comp-263+l263-l19208Currency-922337203685477.5808922337203685477.580719208表2-2 实型的表示范围和存储格式2.1 数据类型2.1.2 字符串类型字符串类型是用一对单引号括起来的一系列字符。字符串类型的表示范围和存储格式见表 2-3。 类型最多字符字节数字符集Shor
19、tString2552256BANSI向后兼容AnsiString23142GBSBCS,MBCSLongString23142GBUnicodeWideString23042GB等价于AnsiChar表2-3 字符串类型的表示范围和存储格式2.1 数据类型2.1.3 结构类型结构数据类型是一种复合数据类型,由多个数据组成。结构类型包括集合类型、数组类型、记录类型、文件类型等。1集合类型集合类型是一组相同类型元素的组合。定义集合类型:typeName=set of BaseType2数组数组是一些具有相同类型元素的有序组合。 (1) 静态数组 静态数组的声明格式为:typeName=array
20、indexType1,.,indexTypen of BaseType;2.1 数据类型(2) 动态数组动态数组没有固定的大小或长度。当赋值或使用某些函数(如SetLength)时,动态数组在内存中重新分配。动态数组的声明格式为:type Name=array of BaseType;定义动态数组不需声明元素的个数。例如:typeDynamicarray=array of Real;vara1,a2:Dynamicarry;a1:=a2; /a1和a2指向相同的内存单元。2.1 数据类型3记录类型记录类型(有的语言中被称为结构)是一个不同种类元素的集合,每个元素称为字段(field)。在声明时
21、,指定记录的名字和每个字段。声明格式为:typeRecordTypeName=recordFieldList 1:type1;FieldList 2:type2; FieldList n:type n;end;2.1 数据类型4文件类型文件类型是由相同类型的元素组成的有序集合。文件类型的声明格式为:typefileTypeName = file of type例:声明一个文件类型RecordList,以上面已定义的TdateRec为数据类型。typeRecordList = file of TdateRec;var Myrecordlist:RecordList;2.1 数据类型2.1.4 可
22、变类型有时要对一些数据类型变化的数据进行操作,并且在编译期间不能确定数据的类型,这时就可以使用可变类型的数据。可变类型可以使用除记录、集合、静态数组、文件等结构类型、指针类型及长整型外的所有类型。可变类型有一个特殊的值Null,表示不明的或丢失的数据。可变类型变量的声明格式为:varv1:Variant;2.2 常量与变量2.2.1 标识符标识符是描述Object Pascal程序各个部分的名称,这些部分包括标记、对象、过程、类型、单元、变量及程序。标识符的大小写无关(即它不区分大小写),并且遵循以下规则:可为任意长度,但只有前255个字符有效。标识符的第1个字符必须是字母或下划线。跟在第1个
23、字符后面的字符必须是字母、数字或下划线。标识符中不允许出现空格。 2.2.2 常量常量是一个在程序的运行过程中具有不变值的标识符,常量的声明格式如下:Const 常量名=表达式; 变量不能在一个常量声明中使用,但算术和逻辑运算符可以,下面的函数可以在常量声明中使用。Abs Low Round Chr Odd SizeOf Hi OrdSucc High Pred Swap Length Ptr Trunc Lo2.2 常量与变量2.2 常量与变量2.2.3 变量变量是程序代码中代表一个内存地址的标识符,而此地址中的内容在程序执行过程中可以改变。在变量使用之前必须先声明,变量声明格式如下:var
24、 变量名表:类型名; 例:var s:string; i:integer;flag:Boolean;2.3 表达式与运算符2.3.1 表达式表达式就是变量、常量、字符串、运算符及函数按照一定规则的组合。例:Peoples Republic Of +ChinaGross/12Max(x,y)-Min(x,y)2.3.2 运算符1赋值运算符(:=)赋值运算符“:=”是先计算赋值运算符右边表达式的值,再将结果赋给左边的变量。2.3 表达式与运算符2算术运算符 表2-4 算术运算符运算符作用操作数类型结果类型+表示正值Integer或RealInteger或Real算术加Integer或RealInt
25、eger或Real表示负值Integer或RealInteger或Real算术减Integer或RealInteger或Real*算术的乘运算Integer或RealInteger或Real/浮点数的除运算Integer或RealRealDiv整型数的除运算IntegerIntegerMod模运算IntegerInteger2.3 表达式与运算符3关系运算符关系运算符是对两个类型相容且可以比较大小的数据进行比较,结果为布尔类型,见表2-5。 表2-5 关系运算符运算符作用结果类型=等于Bealoon不等于Bealoon大于Bealoon=大于或等于BealoonIn属于Bealoon2.3 表
26、达式与运算符4逻辑运算符逻辑运算符对逻辑类型的操作数进行运算,结果为布尔型,见表2-6。 表2-6 逻辑运算符运算符作用操作数类型结果类型not逻辑非BealoonBealoonand逻辑与BealoonBealoonor逻辑或BealoonBealoonxor逻辑异或BealoonBealoon2.3 表达式与运算符5集合运算符 表2-7 集合运算符运算符作用操作数类型结果类型+集合的并集集合类型集合类型-集合的差集集合类型集合类型*集合的交集集合类型集合类型=A=A=B,B是否是A的子集集合类型Bealoon=两个集合是否相等集合类型Bealoon两个集合是否不相等集合类型Bealooni
27、ns in A,s是否属于集合A有序类型,集合类型Bealoon2.3 表达式与运算符6运算符的优先级运算符优先级not1(最高)*,/,div ,mod,and2+, ,or,xor3关系运算符4(最低)表2-8 Object Pascal各运算符的优先级2.4 语句2.4.1 注释注释是添加在程序中用来说明代码功能的语句,它是非执行语句,对程序的执行部分不会产生任何影响,有助于提高程序的可读性。在Object Pascal中,有三种注释标记:花括号“”注释:位于 “”中的内容为注释。双斜杠“/”注释: “/”之后到本行结束的内容为注释。圆括号及星号对“(*)”注释:(*)中的内容为注释。例
28、如以下语句都是注释:The first kind Of comment./The secondkind Of comment.(*The third kind Of comment.*)2.4 语句2.4.2 简单语句和复合语句简单语句是Object Pascal中最简单也最常用的语句,简单语句用分号分隔。赋值语句、函数、过程调用语句等是简单语句,例如下面的语句都是简单语句:r:=m+n; /两个值相加并赋值ShowMessage(Im a student.);复合语句是多个简单语句的组合,复合语句以begin表示开始,以end表示结束。例如: begini:=1;j:=i+1;s:=abc;
29、end;2.4 语句2.4.3 条件语句条件语句是Object Pascal语言提供的选择结构语句,主要有如下两种:1if语句if语句的表示形式:if then else 2.4 语句【例2-1】求两个数中的最大值。if ab thenmax:=a /在变量a之后不能加“;”Elsemax:=b;【例2-2】符号函数。 -1 (x0)用if语句的嵌套实现,如下:if x0 then y:=1else y:=0;2.4 语句2case语句case语句的表示形式:case of : : else end;2.4 语句【例2-3】编写一个程序,输入一个年份,判断是否是闰年。闰年的条件是满足下面条件之
30、一:(1) 能被4整除,但不能被100整除的年份;(2) 能被100整除,也能被400整除的年份。对这两个条件都不符合的年份不是闰年。程序功能:输入一个年份,显示其是否为闰年的信息。界面设计:四个组件:两个文本框Label1和Lable2,分别显示提示和结果信息;一个Edit组件Edit1,用来输入要进行判断的年份;一个Button组件Button1,用来查询结果。如图2-1所示。2.4 语句图2-1 窗体界面程序代码:procedure TForm1.Button1Click(Sender: TObject);var year:Integer; flag:Boolean;2.4 语句begi
31、n 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; end else flag:=false; if flag then Label2.Caption:=该年份是闰年 else Label2.Caption:= 该年份不是闰年;end;2.4 语句 2.4.4 循环控制语句 循环语句可以使用户重复执行一条
32、或多条语句,直到满足某个条件时为止。 1for语句 for语句的一般形式为: for 循环变量:= to/downto do ; 【例2-4】求1100所有整数的累加和。 var s,i: Integer; s:=0; for i:=l to 100 do s:=s+i;2.4 语句2while语句while语句的一般形式为:while dowhile后面的为逻辑表达式,先计算表达式的结果,如果表达式为true,while语句将重复执行循环体。如果表达式结果为false,则跳出循环,执行while之后的语句。【例2-5】求1100所有整数的累加和。vars,i: Integer;i:=1;s:
33、=0;while i=100 dobegins:=s+i; i:=i+1; end;2.4 语句3repeat语句repeat语句的一般形式为:repeat until 当使用repeat语句时,先执行循环体,再判断表达式,只要until后面的表达式为true,则将再执行循环体。因此,repeat语句下面的循环体至少执行一次。【例2-6】求1100所有整数的累加和。vars,i: Integer;i:=1;s:=0;repeats:=s+i;i:=i+1;until i100;2.4 语句4break语句 功能是强行退出循环,break语句只能用在循环体内。【例2-7】利用break语句退出一
34、个while循环。vars: String;beginwhile true do /条件恒为真 begin ReadLn(s); /读入一字符串 if s= then break; /不输入任何字符,则退出循环 WriteLn(s); /输出字符串 end;end;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
35、continue; /如果为空,跳过剩余语句,转到下一个循环 s:=s+i; end;end;2.5 函数和过程函数和过程是实现一定功能的语句块,是程序中的特定功能单元。可以在程序的其他地方被调用,也可以进行递归调用。函数和过程的区别在于函数有返回值,而过程没有返回值。2.5.1 函数和过程的声明函数和过程在使用前必须进行声明。1函数的声明函数的声明是在程序的type区,具体形式如下:function ():;2.5 函数和过程函数的定义是在程序的implementation部分,具体形式如下:function ():;varbegin := /也可以用Result系统保留字代替end;在be
36、gin与end之间是在函数调用时实现特定功能的一系列语句。函数值的返回有两种方式:将返回值直接赋给函数名。将返回值赋给Result。2.5 函数和过程【例2-9】求两个数中的最大数。function Max(a,b: integer):integer; /两个形参为整型值a、b,函数返回值为整型varm: Integer;beginif ab thenm:= aelsem:= b;Max:= m; /或result := m;end;2.5 函数和过程2过程的声明过程的声明与函数类似,所不同的是使用的保留字不同,而且少了一个返回值类型; 过程的声明是在程序的type区,具体形式如下:proce
37、dure ():;过程的定义是在程序的implementation部分,具体形式如下:procedure (); begin end;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;2.5 函数和过程2.5.2 重载函数和过程所谓重载,是指在同一个作用范围内给不同的函数或过程取同一个名称。重载可以方便编程,重载函数必须用指令字overload来进行说明。
38、 下面的两个函数就是重载函数: function Max(a:Integer;b:Integer):Integer;overload; /求两个整数的最大值 function Max(a:Real;b:Real):Real;overload; /求两个实数的最大值下面两条语句就调用了不同的函数: Max(3.7,4.6); /调用的是第二个重载函数Max(3,4); /调用的是第一个重载函数2.5 函数和过程2.5.3 参数1形参与实参函数或过程的声明和定义时参数列表中的参数称为形式参数,简称形参;而函数或过程调用时参数列表中的参数称为实在参数,简称实参。2数值参数、变量参数和常量参数(1)
39、数值参数在调用函数或过程时,数值参数在运行过程中只改变其形参的值,不改变其实参的值,即形参不会影响原来实参的值。(2) 变量参数如果用户想改变传递的参数值,就需要使用变量参数,即在被调用程序的参数表中的形参前加上保留字var。2.5 函数和过程(3) 常量参数如果当过程或函数执行时要求不改变形参的值,最保险的办法是使用常量参数。在参数表的参数名称前加上保留字const可以使一个形参成为常量参数。使用常量参数代替数值参数可以保护用户的参数,使用户在不想改变参数值时不会意外地将新的值赋给这个参数。 2.5.4 作用域在Object Pascal中,根据变量的作用域,可将变量分为:全局变量和局部变量
40、。所谓变量的作用域,是指变量的有效范围。全局变量在整个程序中都有效,其作用域为整个程序;局部变量只在声明它的函数和过程中有效,其作用域只限于该函数或过程本身。 2.5 函数和过程例:typevarForm1: TForm1; /全局变量Form1implementation$R *.dfmprocedure TForm1.FormCreate(Sender: TObject);var m,n:Integer; /局部变量m,nForm1:Tform1;(*局部变量Form1,与上面的全局变量同名,在过程TForm1.FormCreate中局部变量起作用。*)2.5 函数和过程2.5.5 函数和
41、过程的调用1函数和过程的调用(1) 函数的调用函数调用的一般形式为:()函数的调用往往是将返回值赋给某个变量或参与运算。例如调用例2-9,将其返回值赋给变量x的语句为:x:=Max(3,6);(2) 过程的调用过程的调用的一般形式为: ();其中的实参可以是常量、变量或表达式,但实参的个数和类型与形参完全匹配,即个数相同、类型一致。例如:调用例2-10的过程ShowStar的语句为:ShowStar(20);2.5 函数和过程2函数和过程的递归调用所谓递归调用,是指函数A调用函数B,而函数B又调用函数A的情况,或是指一个函数调用自身的特殊情况。 【例2-11】递归调用program Proje
42、ct1;($SappTypeConsole)varalpha:Integer;procedure Test2(var A:Integer):forword;(*Test2被说明为前置过程*)procedure Testl(Var A:Integer);begina:=a-1;if a0 thenTest2(a);Writeln(a);end;procedure Test2(var a:Integer); 经前置说明的Test2的执行部分begin a:=a div 2; if a0 thenTest1(a); 在Test2中调用已执行的过程Test1end; begina1pha:=15; /
43、给a1pha赋初值Test1(a1plla);(*第一次调用Test1,递归开始*)end;习题1Object Pascal语言中有哪些常用的数据类型?变量在使用前必须先定义,如何定义各种数据类型的变量?简述Object Pascal中标识符的命名应遵循哪些规则。Object Pascal中提供了哪些类型运算符,在表达式中其优先级从高到低如何排列。4注释语句有哪几种形式?5条件语句有哪几种形式?它们在什么情况下适用。6循环语句有哪几种形式?break语句与continue语句有何异同。7如何声明、定义和调用函数和过程。8什么是重载?如何进行重载函数和过程。9什么是变量的作用域?根据变量的作用域
44、,可将变量分为哪几类。习题10分析下列程序段的运行结果。 a:=False; b:=False; c:=True; d:=20; if a then d:=d-12 else if not b then if c then begin x:=10; d:=d+3; endelse x:=34;运行后,d,x的值分别是 、 。 习题 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+4 else y:=x-5;en
45、d;则函数调用Fun(0)、Fun(4)、Fun(-7)的值分别是 、 、 。11编程实现:输入两个整数,求这两个数之间的所有奇数之和。Delphi 7 程序设计与实验指导第三章 面向对象程序设计 面向对象程序设计(Object-oriented Programming,简称OOP)方法是一种以模拟现实世界的概念来组织程序的全新方法,其立意于创建软件重用代码,具备更好地模拟现实世界环境的能力。能够支持面向对象程序设计的语言称之为面向对象的程序设计语言。Delphi是完全面向对象的,具有真正OOP扩展的可视化编程环境,将可视化编程与面向对象的开发框架紧密地结合起来。本章主要介绍面向对象的程序设计
46、方法。3.1 面向对象的可视化编程步骤面向对象的可视化编程一般包括以下步骤:l创建应用程序。l设计应用程序的界面,添加各窗体的组件对象。l设置主窗体组件对象的属性。l编写程序代码(主要是按钮的事件处理代码)。l保存文件。l编译、运行程序。【例3-1】创建一个工程,其中有一个窗体InputForm,用于输入教师基本信息。下面以例3-1为例,介绍面向对象的可视化编程的步骤。3.1 面向对象的可视化编程步骤3.1.1 建立新工程在Delphi 7集成环境下选择FileNewApplication菜单项,或使用工具条上New按钮,然后在New Items窗口中选择Application,若此前未打开任
47、何工程,确认后,Form Designer窗口中会出现一个空白窗体Forml,在Code Edit窗口中还会出现与Forml对应的代码单元Unitl。若先前已打开了工程并且没有对修改过的工程进行保存,则系统会提示是否保存等信息,处理完毕后系统将关闭该工程,然后新建一个应用程序。3.1 面向对象的可视化编程步骤3.1.2 设计程序界面InputForm窗体设计界面如图3-1所示,界面上包含五个标签(Label),用于显示输入提示信息,两个文本框(Edit),分别用于输入姓名、工龄;二个组合列表框(ComboBox),分别用于选择职称和部门的输入内容;三个按钮(Button),分别用于清除、显示和
48、退出程序。InputForm窗体及其包含的组件属性见书表3-1。3.1 面向对象的可视化编程步骤图3-1 InputForm窗体设计界面3.1 面向对象的可视化编程步骤3.1.3 编写程序代码本例所要设计的是按钮组件对象的事件处理程序。双击窗体上的按钮,将打开代码编辑器,在begin和end之间输入如下各按钮的事件处理代码。(*“清除”按钮事件处理代码*)procedure TInputForm.BtnClearClick(Sender:TObject)begin(*清空各文本框*) Edit1.Text:= ; Edit2.Text:= ;end;3.1 面向对象的可视化编程步骤(*“显示”
49、按钮事件处理代码*)procedure TInputForm.BtnShowClick(Sender:TObject);begin MessageDlg(这是显示教师基本信息的窗体, mtInformation, mbOk, 0);end;(*“退出”按钮事件处理代码*)procedure TInputForm.BtnExitClick(Sender:TObject);beginTInputForm.Close; /关闭TInputForm窗体end; 3.1 面向对象的可视化编程步骤3.1.4 保存所有文件选择FileSave All选项,由于这个新建的工程还没有命名,所以首先会出现一个Sa
50、ve As对话框,默认的单元名是Unitl,用户可以用更具描述意义的名字代替它。在这里,使用InputUnit.pas进行命名。保存完单元文件后,又会出现Save As对话框,要求为工程文件命名,在这里,把它命名为InputPrj.dpr。注意:在进行程序设计前,应该先建立一个目录,用来存放工程文件,便于管理。3.1 面向对象的可视化编程步骤3.1.5 运行程序运行程序的方法主要有以下几种:l 打开Run菜单,选择Run子菜单。l 快捷键:F9。l 单击工具栏的按钮。其他的程序运行方式在本章第五节程序调试中将详细介绍。其运行后,在文本框中分别输入姓名(张红)、工龄(19),并选择职务(副教授)
51、和部门(外语系)的值,如图3-2所示。按下“退出”按钮,将关闭“教师基本信息”窗口,结束程序的运行。3.1 面向对象的可视化编程步骤3.1.6 生成exe文件打开工程文件,选择菜单项ProjectBuild ,生成可执行文件,文件名与工程文件名同名,扩展名为.exe。可以通过双击.exe文件图标启动应用程序。例如:由工程文件InputPrj.dpr生成exe文件的过程是:选择菜单项ProjectBuild InputPrj,生成InputPrj.exe文件,双击InputPrj.exe文件图标,即可运行应用程序。图3-2 InputForm运行界面3.1 面向对象的可视化编程步骤3.1.7 制
52、作安装包在完成了应用程序的设计后,就要将最终的产品打包发送给用户。目前一般使用安装程序InstallShield来制作安装盘。1创建新的项目(1) 进入Delphi 7集成开发环境,编译并执行应用程序InputPrj.exe。(2) 单击 开始程序InstallShieldExpress,打开InstallShield Express Borland Limited Edition窗口。 (3) 选择FileNew命令,将弹出如图3-3所示的New Project对话框。3.1 面向对象的可视化编程步骤(4) 单击按钮,弹出“Select a File Name”对话框。输入安装程序名为“人事
53、管理”,然后选择保存位置为C:Documents and SettingsAdministratorMy documentsMysetups,单击“保存”按钮,返回到图3-3所示的界面,单击“OK”按钮。图3-3 New Project对话框3.1 面向对象的可视化编程步骤这样就在C:Documents and SettingsAdministratorMy documentsMysetups路径下创建一个名为“人事管理”的安装项目,如图3-4所示。图3-4 制作新安装项目的界面3.1 面向对象的可视化编程步骤2制作安装程序的步骤整个安装程序的制作分为以下6个步骤。(1) 组织安装项目。安装制
54、作的第1步是配置项目中常见的设置,可再细分为以下几步。 General Information:配置整个项目的一些基本信息。选择Organize Your SetupGeneral Information,可以在屏幕的右方设置项目的基本信息。在这些基本信息中以下几个是必须设置的。 Subject:项目名。 Product Name:产品名。 Installdir:安装的目标文件夹。安装项目的基本信息的设定如图3-5所示3.1 面向对象的可视化编程步骤图3-5 基本信息的设定 Features:使整个项目中需要安装的文件按不同的用途分组。 Setup Types:安装类型设置,用户根据不同的需求
55、选择不同的安装类型。3.1 面向对象的可视化编程步骤(2) 指定项目文件。安装制作的第2步工作是向安装项目中添加文件。选择Specify Application DataFiles,可以在屏幕右方的几个窗口向安装项目中添加文件,如图3-6所示。 在“Source computers folders”窗口中定位到F:Delphi61第三章,此时“Source computers files”列表中显示了该文件夹下的文件。 鼠标单击“Source computers files”列表中的“InputPrj.exe”文件,将其拖到“Destination computers folders”的“Pr
56、ogramFilesFolderINSTALLDIR”上松开鼠标,这样在该文件夹中就多了一个名为“InputPrj.exe”的文件。若系统有数据库文件,用同样的方法将数据库文件拖动到“DatabaseDATABASEDIR”文件夹中,本例中没有数据库文件。3.1 面向对象的可视化编程步骤图3-6 向安装项目中添加文件窗口 (3) 配置目标系统(Configure the Target System)。是让安装程序在安装过程中能够自动配置目标系统的一些参数,如桌面快捷方式、ODBC数据源(若有数据库文件)等。 选择Configure the Target SystemShortcuts/Fold
57、ers,将显示如图3-7所示的视图。3.1 面向对象的可视化编程步骤图3-7 创建快捷方式的窗口 鼠标右击中间窗口的“ Desktop”,选择弹出式菜单中的New Shortcuts命令,创建名为“InputPrj”的快捷方式(如图3-7所示)。 若有数据库文件,则还需要配置ODBC数据源:选择Configure the Target SystemODBCresources,系统显示了本机上存在的ODBC数据源,可以通过选择决定是否将其中的某些数据源安装到目标机器上。3.1 面向对象的可视化编程步骤(4) 设置安装界面(Customize the Setup Appearance)。安装制作的
58、第4步工作是选择安装过程中将要显示的界面。选择Customize the Setup AppearanceDialogs,将显示如图3-8所示的界面。选中需要显示的对话框前面的复选框。(5) 设定安装所需的前提条件(Define Setup Requirements and Actions)。安装制作的第5步工作主要是定义安装的前提条件,包含以下几个步骤: Requirements:选择安装的软硬件环境。 Custom Action:选择需进行的安装操作。 Support Files:选择所支持的文件。3.1 面向对象的可视化编程步骤图3-8 安装过程中显示对话框的设置(6) 制作安装程序的最
59、后阶段(Prepare for Release)。 选择Prepare for ReleaseBuild Your Release,编译安装项目。 选择Prepare for ReleaseTest Your Release,测试安装程序。3.1 面向对象的可视化编程步骤 选择Prepare for ReleaseDistribute Your Release,发布安装程序。至此应用程序InputPrj的安装程序就制作完成。最后,测试安装程序,如图3-9所示。图3-9 安装程序运行界面3.2 对象和类的概念3.2.1 对象对象是一种数据结构,是类的实例。了解对象,最关键的是掌握对象的特性。一个
60、对象最突出的三个特征是封装性、继承性、多态性。定义了类之后,就可以创建该类的实例,即对象,通过对象来访问类的成员。对象声明的语法格式如下:var ObjectName:Classname;其中Classname是已定义过的类名。例如:声明Tstudent类(已定义过)的对象Classmate可以用以下语句,var Classmate:Tstudent; 3.2.2 类在Object Pascal语言中,类和记录比较相似,也是一个构造类型,并且由属性和方法构成。其中属性又包括类的内部属性和外部属性,也就是供内部使用的一些数据变量和供外部使用的一些数据变量;方法则是该类或其实例可以操作的过程和函数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论