版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、吉林建筑工程学院教案用纸第一次课第1章 Delphi基础知识本节学习要点:² 了解Delphi的特点² 重点熟悉掌握Delphi7的集成开发环境² 以实例说明Delphi7应用程序开发的基本步骤² 对象树形查看器(Object Treeviewer)² 对象监视器(Object Inspector) 当前对象的属性和事件² 属性(Properties)² 事件(Events)第1章Delphi 基础知识Delphi是Borland公司推出的基于对象Pascal语言的可视化集成开发工具。§1.1 Delphi的特点l
2、 强大的可视化编程环境l Delphi7是建立在真正面向对象的框架结构基础之上l Code Insight避免了记忆组件种类繁多的方法和属性l 高效的编译器l 丰富的VCL(Visual Component Library) 可视化组件库l CodeInsight 中包括l 1 Codecompletion 输入时的组件属性l 2. Code parameters 参数l 3 Tooltip expression evaluatuion 当前变量的值l 4 Code Template 母版§1.2 Delphi 7的集成开发环境Delphi 集成开发环境的界面分为四个部分,分别是主窗
3、口、窗体窗口、代码编辑器窗口和对象查看器窗口。如图1-1所示: 图1-1 Delphi 集成开发环境说明:l 标题栏 主窗口顶部水平长条称为标题栏,标题栏提供了两部分信息:“Delphi 7”和项目文件名。如果装入的是一个新建的项目,Delphi 会提供缺省项目名“Project1”,标题栏就会显示“Delphi 7 - Project1”。l 菜单栏 菜单功能File有新建、打开和保存Delphi应用程序中各个项目和文件的命令Edit提供了编辑代码和窗体组件的各种命令,如删除、复制和粘贴等Search搜索、替换和定位字符串命令View打开Delphi 环境各个窗口和项目中的窗体和单元文件等P
4、roject管理、编译和配置项目文件Run调试应用程序,如设置断点、单步执行等Component用于建立和安装组件以及定制自己的组件板Database开发数据库应用程序的各种工具ToolsDelphi 环境设置和一些Delphi外挂工具Window切换指定窗口为活动窗口HelpDelphi 帮助文件l 工具栏工具栏是把一些常用的菜单命令以图标按钮的方式显示出来,以便于快速访问。!工具栏的快捷按钮可以由用户按自己的需要自由添加和删除。!用户可以自定义工具栏中的项目,方法如下:选择【View】/【Toolbars】/【Customizes】出现如下对话框:图1-2 自定义工具栏栏目l 组件面板组件
5、板是建立应用程序最常用的元素,所以必须掌握各种组件的功能和使用方法。组件板包括许多选项卡,单击某选项卡就可以看到该选项卡包含的组件,Delphi 7共预定义了三十多个选项卡,可以单击组件板右边的箭头按钮来左右移动组件板的选项卡标签。!用户可以自订制组件栏的页面和各页面所包含的组件。方法如下:选择【Tools】/【Environment Options】 ,其【Palette】页面如图1-3所示:通过对话框的几个按钮,可以添加(Add)和删除(Delete)选项卡。图1-3 系统环境设置l 对象监视器(Object Inspector)窗体窗口的左侧为对象监视器,它的功能是编辑设置窗体、组件的属
6、性,并为窗体、组件添加事件的响应处理过程。由三部分组成:对象选择器:为一下拉列表框,列表框中是可供选择的窗体以及当前窗体上放置的所有组件。用户可从中选择要设置属性或要添加事件的窗体或组件。属性选项卡:即标签名为“Properties”的选项卡,用于设置当前组件的属性,随对象选择器中的所选组件而发生变化。事件选项卡:即标签名为“Events”的选项卡,用于为当前组件添加各种响应事件(如单击、拖曳事件等),也随对象选择器中的所选组件而发生变化。图1-4 对象监视器窗口!如何设置属性?第一种情况是用鼠标单击属性标题后,直接在属性值编辑框中输入属性的数值或字符串。第二种情况是属性值由Delphi 提供
7、可选项。这时,用鼠标单击属性标题后,属性值马上变成一个下拉列表框,用户可单击下拉按钮打开列表框,从中选择所需的是属性值。第三种情况是通过对话框来设置属性值。单击属性标题后,属性值右端会出现一个带“”的按钮,单击该按钮,即可打开一个相应的对话框,在对话框中选择所需值,即可设置属性值。第四种情况是属性带有子属性。在这种属性的属性标题前,一般会有一个“+”号,单击该“+”号,将可以展开子属性,同时“+”号变成“-”号,此时即可依次对各子属性进行设置。!如何添加事件?从窗体上选择一个组件,或从对象选择器中选择一个窗体或组件,使之成为当前组件,就可以用对象查看器的事件选项卡来添加事件了。添加事件的过程一
8、般是选定组件后,单击对象查看器的事件选项卡中要添加的事件名称,再在其右侧输入事件的响应函数名称,然后回车即可。提示:如果单击要添加的事件后,在其右侧编辑框中双击鼠标,将为事件采用缺省事件处理过程名,同时进入代码编辑窗。l 窗体设计器放置组件对象的地方,程序员可以在窗体中绘制各式各样的程序界面,用户通过界面操作与应用程序交互。l 对象树形查看器(Object Treeview)对象树形查看器是以目录树的形式显示整个工程中使用到的对象。l 代码编辑器窗口代码编辑器窗口是用来编写应用程序的代码的地方。!代码编辑器一般隐藏在窗体设计器下面,可通过以下几种方法显示它:1、 选择【View】/【Code
9、Explorer】或【View】/【Toggle Form/Unit】2、 单击快捷工具栏【Form/Unit】按钮3、 在集成开发环境中用鼠标单击代码编辑器窗口§1.3 实例Hello,world!Delphi7应用程序开发的基本步骤为:l 建立窗体l 在窗体中添加组件l 检查和设定对象属性l 编写响应事件处理程序l 保存文件 使用File菜单中Save All命令,保存项目、单元等文件。 l 编译、运行程序 使用Run菜单中Run命令运行应用程序。 例1-1 Hello,world!程序效果:程序中包含两个按钮,单击“问候”按钮,会出现“Hello,world!”的文字;单击“退
10、出”按钮,就结束程序。画面如图所示:procedure TForm1.Button1Click(Sender: TObject);beginLabel1.Caption:='Hello,World!'end;procedure TForm1.Button2Click(Sender: TObject);begin close;end;§1.4 小结通过本章的学习,希望同学们对Delphi的简单易用有初步的感性认识,认识和理解IDE的组成及各部分的作用。第二次课第2章 Object Pascal 语言基础(1)本节学习要点:² 深入了解Delphi的编程风格(3
11、点)² 熟练掌握Object Pascal的基本知识Ø 局部变量和全局变量(在implementation后定义全局变量)Ø 简单数据类型(重点讲解Boolean类型、枚举类型、子界类型,特别注意字符串的书写形式及字符串运算符的使用)Ø 结构类型的定义(集合类型、数组类型、记录类型、指针类型、变体类型)第2章Object Pascal语言基础Object Pascal是在Pascal的基础上发展起来的,继承了Pascal语言语法结构严谨、编译代码效率高的优点。此外,使用编译器创建的应用程序只生成单个可执行文件(.exe)§2.1 Delphi的
12、编程风格§2.1.1 注释语句为了使程序更加易读,通常,我们要为程序添加注释。即:对程序模块、语句或命令作文字解释,运行时,这些文字不会作为命令的一部分而被执行,因而不会影响原来的程序。有时,在调试的过程中,也可以用注释的方法对部分命令作暂时的“删除”,以缩小调试范围。Object Pascal支持3种类型的注释:l 组合符号“”与“”的成对使用表示它们之间的内容为注释部分。l 组合符号“(*”与“*)”的成对使用表示它们之间的内容为注释部分。l 符号“/”的单个使用表示所在行的该符号之后的内容为注释。提示:注释符“”与“”、“(*”与“*)”在使用时不支持注释的嵌套,而且必须成对使
13、用。即不允许形如 或(* (* *) *),但允许形如(* *)的结构。建议:对于单行和少量几行的注释使用符号“/”,对于大块注释使用“”和“”或“(*”和“*)”。§2.1.2 对象命名在Object Pascal中,标识符不区分大小写,所以因此标识符Myname、MyName、myname、myName、和MYNAME被认为是同一个标识符。为了增加程序的可读性,建议大家养成良好的命名习惯:l 用意义明确的英文单词和词组命名l 单词首字母大写l 若要用多个单词命名一个对象,单词之间不能插入空格,且每一个单词的首字母均大写(驼峰格式)§2.1.3代码缩进 (ctrl+shi
14、ft+i右移,ctrl+shift+u左移)采用代码缩进的方式即将程序代码按照所处的级别不同在代码行前面添加空格,通常是代码的每一级向内缩进2格。目的是增强程序的可读性。§2.2 标识符标识符是用来标识(表示)程序、过程、函数、类型、符号常量、变量、对象等的名字的符号。对象Pascal语言中规定,标识符由字母(AZ)、(az)、下划线和数字09组成,标识符的命名有以下三条限制:1 首字符必须是字母或下划线,不能是数字;2 标识符不能和保留字相同;3 缺省状态下,Delphi 只认为标识的前255个组成字符是有意义的。虽然对象Pascal语言对大小写不敏感,但在
15、编程时要保持一定的风格。不要有时候全部大写,另一些时候又大小写混写。§2.2.1 变量 变量是一个特定数据实体,它有预定义的数据类型,并且可在内存中某个唯一的地址放有指定类型的值。 变量可在程序运行的过程中动态地修改,这是它与常量的最大区别。变量具有四个属性,每个变量都有名字、类型、变量值和占用的内存地址。变量在使用前必须声明,声明变量时必须指定一种数据类型。1、 变量的声明基本语法: Var 变量名:类型;例: Var Value,Sum:Integer;Line:String2、 局部变量和全局变量全局变量一般在implementation后面声明基本语法: Var 变量名:类型
16、=常量表达式;注意:局部变量在声明时不能进行初始化。但在同时声明多个全局变量时,也不能对变量进行初始化。提示:在程序设计时,应尽量避免使用全局变量。§2.2.2常量 对于在程序运行期间保持不变的值,Pascal 允许通过常量来声明。声明常量不必特定数据类型,但需要赋一个初值。编译器会根据所赋初值自动选用合适的数据类型。基本语法:Const 常量名=常量值;例:Const Pi=3.1415926; MyName=Smith;好处:l 可以更可靠地进行修改l 增强了程序的可读性§2.2.3预定义类型整型(Integer)、实型(Single)、布尔型(Boolean)、字符型
17、(Char)、指针型(Pointer)、字符串型(Pchar)§2.3 数据类型§2.3.1简单数据类型(Simple)简单数据类型(Simple)包括有序数据类型(ordinal)和实数数据类型(real)。其中有序数据类包括整数类型,字符类型,布尔类型,枚举类型,子界类型l 整数类型整数类型数值范围格式Integer-21474836482147483647带符号32位Int64-263263-1带符号64位Byte0255无符号8位Word065535无符号16位l 字符类型基本的字符类型(Character)包括AnsiChar和WideChar两种。AnsiCha
18、r类型的数据具有一个字节。与扩展的ANSI字符集对应。WideChar类型的数据为双字节,与Unicode字符集对应。Unicode字符集的前256个字符与ANSI字符集的相同。 通用的字符类型为Char,与AnsiChar类型相同。提示:可以使用函数Chr返回一个整型数对应的字符,也可以使用函数Ord返回一个字符的序数。一般来说,对字母、数字或符号,用代表它们的符号来表示较好;而涉及到特殊字符时用数字符号较好。下面列出了常用的特殊字符: #9 或 chr(9) 跳格 (Tab 键) #10 或 chr(10) 换行 #13 或 chr(13) 回车 (Enter 键) l 布尔类型布尔类型(
19、Boolean):Boolean对象Pascal语言预定义了两个常量标识符False和True,可以为Boolean类型的数据赋值为False或True,对应的序数值为0和1l 枚举类型枚举类型(enumerated)是一种用户自定义类型,它的定义是由一组有序的标识符组成。注:类型的声明使用保留字Type。枚举类型类型定义形式如下:Type 类型名称=(值1,值2,值n);例:Type Tdays=(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);l 子界类型(实数不是)子界类型(subrange)为某个有序类型的子集。子界类
20、型也是一种用户自定义类型,它规定了值域的上界和下界及取值的类型。子界类型的定义形式如下:Type 类型名称=值域下界.值域上界;定义子界类型时应注意以下几点: 1) 上界和下界必须属同一顺序类型,上界序号必须大于下界序号;2) 子界类型的上、下界的类型定义了子界的基类型;3) 如果子界类型的基类型是枚举类型,则应该在定义子界类型之前先定义枚举类型。 l 实数类型实数类型定义了一个能用浮点数表示的数字集合。实数类型范围有效位数字节数Real482.9×10-9 .1.7×1038116Double+5.0×10-3241.7×10308158Extende
21、d+3.6×10-4951.1.1×1049321910Real+5.0×10-3241.7×10308158§2.3.2 字符串类型和传统Pascal不同,对象Pascal专门提供了预定义的字符串数据类型,可以方便的表示字符串,实现对字符串存储、处理等操作。字符串类型最大长度存储空间说 明ShortString2552到256字节为了和以前的版本兼容AnsiString2314字节到2GB动态分配内存WideString2304字节到2GB使用Unicode字符集一般情况下,当我们声明一个变量为字符串类型时使用String保留字。缺省时,St
22、ring类型就是AnsiString类型。例如:A string!字符串的运算1) 使用+运算符(结果是字符串相连)2) 用concat( )函数§2.3.2 结构类型结构类型(Struct)包括集合类型(set)、数组类型(array)、记录类型(record)、文件类型(fi1e)、类类型(class)、类引用类型(class reference)和接口类型(interface)等。l 集合类型一个集合由集合成员组成,集合的成员元素是无序的。集合的另一个特点是无重复元素,集合操作的重点是判定一个元素是否属于该集合,而不是元素在集合的次序和出现的频率。集合类型(set)的类型定义方
23、法如下:Type类型名称=set of 元素类型;l 数组类型数组类型(array)的数据为某一类相同类型的元素按一定的顺序组成的序列,包括静态数组和动态数组两种。1) 静态数组静态数组就是传统的Pascal中的数组类型。在程序初始化时给静态数组分配内存空间,所以静态数组必须具有确定的大小,其元素的数据类型也必须是确定的。静态数组的定义方式如下:Type 数组类型名=array下标类型 of 基类型 /一维数组或 数组类型名=array 下标类型1, 下标类型n of 基类型 /多维数组使用数组时,经常需要编写的程序代码就是访问数组中的元素。静态数组中元素的访问是通过数组的下标进行的。访问数组
24、中元素的一般形式为: 数组变量名下标表达式 /一维数组 数组变量名下标表达式1, 下标表达式n /多维数组 例: TypeTdou=array1.10 of double; Var Dou:Tdou;l 动态数组 它不需要在声明时指定大小,因此,为我们在程序中动态地开辟存储空间提供了方便的途径。动态数组的定义方式如下:Type 数组类型名=array of 基类型; /一维数组 数组类型名=array of array of array of 基类型 /多维数组。l 记录类型 记录类型(record)可以由不同类型的元素组成,这些元素称为域。在记录类型中为每个域指定了一个名称和数据类型。数据类
25、型可以是对象Pascal语言中预定义的类型,也可以是程序员自定义的类型。记录类型的定义方式如下: Type 记录类型名=record 域名1:类型1。 域名2:类型2; . 域名n:类型n; end;记录类型定义中列出了所有域,每个域对应一个域名,通过域名可以访问它。例: Type TEmployee=record Name:string20; YearHired:1990.2000; Salary:Double; End;l 指针类型 指针类型(pointer)的变量指向的是内存空间的地址。通常我们真正关心的是某一个地址存放的数据,通过指针可以对所指地址中的数据进行操作。指针类型的定义形式如
26、下:Type 指针类型名=类型; 其中:a) 指针类型名为任意合法的标识符。b) “”放在类型的前面,表明声明的类型为一个指针类型。c) “”后面紧跟的类型确定了指针所指向的类型,可以是简单类型。如:整型、实型或枚举型等,也可以是结构类型,如:数组、集合或记录等等。l 可变类型Variant 有时要对一些数据类型变化的数据进行操作,并且要到运行时才能根据实际情况确定数据的类型,这时就可以使用可变类型的数据。这些数据的数据类型可以在运行期间自动改变,不过它们比固定类型的数据占用更多的空间和更多的操作时间。Var 变量名:Variant。§2.4 赋值语句 赋值语句的形式如下: 变量:=
27、表达式; 例:y:=0.5; /将一个常量赋值给一个变量。Done:=(I>=1) and (I<100) ;/将逻辑表达式的结果赋给一个变量。Huel:=Blue,Succ(C); /将一个子集赋值给一个变量。I:=Sqr(J)-I*K; /将一个表达式的结果赋值给一个变量。Shortint(MyChar):=122; /给类型转换后的变量赋值。MyStringI:=¡¯A¡¯ /给数组的一个元素赋值。TmyObject.SomeProperty:=True; /给对象的属性赋值。例2-1 改变编辑框的色彩在system中有时钟可拉入 pr
28、ocedure TForm1.Button1Click(Sender: TObject);varm1:integer;m2:integer;m3:integer;beginm1:= random(255);m2:= random(255);m3:= random(255);edit1.color:=rgb(m1,m2,m3)end;end. 部分关键源代码: procedure TForm1.Button1Click(Sender: TObject);begin edit1.Color:=clRed;end;第三次课第2章 Object Pascal 语言基础(2)本节学习要点:²
29、熟练掌握过程与函数的定义和使用² 函数与过程的区别² 如何在事件处理过程中使用Object Pascal编码² 关于过程中值形参和变量形参的区别² 了解Object Pascal控制语句的使用Ø IF语句Ø CASE语句Ø REPEAT语句Ø WHILE语句Ø FOR语句² 熟练掌握WITH语句的使用§2.5 过程与函数 过程与函数是实现一定功能的语句块,可以在程序的其他地方被调用,也可以进行递归调用。 过程是你要求计算机执行的操作,函数是能返回值的计算。 过程通常作为一个单独的命令语
30、句出现在程序中,而函数一般作为表达式的一部分。提示:两者突出的不同点在于:函数能返回计算结果,即有一个返回值,而过程没有。它们都可以带多个给定类型的参数。§2.5.1函数的声明和使用函数的定义包括函数原型、函数体的定义。函数声明的语法格式: function <函数名> (<形式参数列表>):<返回类型> begin语句;end;函数调用的语法格式:函数名(<实参数列表>)说明:参数1参数的作用 一般将过程、函数定义时参数列表中的参数称为形参,将过程、函数调用时参数列表中的参数称为实参。2值参数 值参数可以像过程或函数的本地变量一样使用
31、,其初值来自过程调用时的实参数,对值参数的修改并不影响实参数。3常量参数 常量参数可以像局部的只读变量一样来使用,其初值来自过程调用时的实参数,实参数必须是一个表达式。在定义过程(函数)的形参表中的有关形参前加上保留字CONST。不允许在过程或函数中给常量参数赋值,并且常量参数不能作为实参数传递给另一个过程或函数。4变量参数 若要将一个值从过程或函数传递给调用者,则必须在定义它们时使用变量参数。这时过程或函数调用中的实参数必须是变量的引用。在过程或函数执行期间,这个变量参数就代表了实参数,改变了变量参数也就相应地改变了实参数,在被调用的过程(函数)的形参表中的有关形参前加上保留字Var。5数组
32、参数过程或函数中也可以使用数组作为参数,但不能在数组参数的定义中包含数组下标类型的定义。可以先进行数组类型的定义,然后利用该类型来定义数组参数。 procedure swap( var a,b:integer); 传值,无var是传地址 var t:integer; begin t:=x;x:=y;y:=t; end;例2-2 数值求和部分关键源代码:function total(x,y:integer):integer;begin total:=x+y;end;procedure TForm1.Button1Click(Sender: TObject);var x,y,z:integer;b
33、egin x:=2; y:=3; z:=total(x,y);、 z:=total(2,3); label1.Caption:=inttostr(z);end;§2.5.2过程的声明和使用(过程无返回值)过程的定义包括过程原型、过程体的定义。过程声明的语法格式:procedure <过程名>(<形式参数列表>)局部声明块;begin语句;end;其中: <过程名>为一个有效的标识符。 <参数列表>需要指明参数的个数及其数据类型。 <局部声明块>中定义了该过程中需要使用的一些临时变量,通常也叫做本地变量。 在begin与end
34、之间是在过程调用时实现特定功能的一系列语句。过程调用的语法格式:<过程名>(<实际参数列表>) 注意:在过程或函数原型中,多个参数之间用分号隔开,同一类型的参数可以放在一起,以逗号隔开。在过程或函数调用的时候,在过程或函数原型中,多个参数之间用逗号隔开。一般来说,形参列表和实参列表完全匹配是指参数的个数一样,而且顺序排列的数据类型也完全一致。对于普通的函数,如果编译器发现实参的数据类型与形参的数据类型不匹配,会将实参的数据类型进行一次或多次的提升,比如:将Integer类型转换为Double类型。§2.6 控制语句Object Pascal的控制语句包括条件语
35、句、判断语句、循环语句。§2.6.1判断语句 判断语句通过条件检测,判断是否执行该条件语句中包含的语句。条件语句可有两种基本形式:if语句和case语句。1if 语句 if语句主要实现了判断的功能。具体形式如下:if 表达式 then 语句; 或者 if 表达式 then 语句1 else 语句2; 对if-then型语句,仅当条件满足时,语句才执行。 对if-then-else型,当条件满足时,执行语句1,否则执行语句2,在两条语句中选择一条执行。注意:在第二种情况下,语句1的最后不能有分号。如果语句1是一个复合语句,则该复合语句的end后面也不能有分号。2case语句 case语
36、句对一个结果的多个分支进行判断,具体形式如下: case 选择器表达式 of 情况常量表1:语句1; : 情况常量表n:语句n; else 语句; /方括号内内容可省略 end;如果<选择器表达式>的数值等于<情况常量表1>,则执行<语句1>,执行完毕后就退出case语句;如果<选择器表达式>的数值不等于<情况常量表1>,则依次向下判断;如果所有罗列出来的数值都不满足,就执行else语句后面的<语句>,else及其后面的<语句>可以不要。§2.6.2循环语句Object Pascal的控制语句包括re
37、peat语句、while语句和for语句1repeat语句 repeat语句可以实现循环操作的功能。具体形式如下:repeat 语句1;:语句n;until 循环终止条件表达式;在<循环终止条件表达式>为True之前,循环执行语句<语句1>到<语句n>。例 计算1+2+3+¡+nprogram Project2_8; $APPTYPE CONSOLEvar i,n,sum:Integer;begin readln(n); sum:=0; i:=0; repeat /repeat语句开始行 i:=i+1;sum:=sum+i; until
38、 i>=n; /repeat语句结束行 writeln(sum); readln;end.2while语句 while语句也可以实现循环操作的功能。具体形式如下: while 循环条件表达式 do 循环体语句; 在<循环条件表达式>为False之前,循环执行<循环体语句>。将循环部分的代码改写如下: while i<n do /while语句开始行 begin i:=i+1; sum:=sum+i; end; /while语句结束行3for语句for语句可以实现循环操作的功能。具体形式如下:for 循环变量:=初值to 终值 do循环体语句; 或者:for
39、循环变量:=初值 downto 终值 do循环体语句;其中<循环变量>为一个有序类型的数据,<初值>为<循环变量>的初始值。 在第一种形式中,使用的是保留字to,<循环变量>从初始值开始逐一增加到<终值>。 在第二种形式中,使用的是保留字downto,<循环变量>从初始值开始逐一递减到<终值>。每次执行一次<循环体语句>。改写循环部分的代码如下:for i:=1 to n do /for语句开始行 begin sum:=sum+i; end; /for语句结束行§2.6.3其他控制语句和过
40、程1Break(强制退出循环)过程 Break语句用于从For语句、While语句或Repeat语句中强行退出。例:当合计数>1000时,执行停止。 program Project2_9; $APPTYPE CONSOLEvar i,n,sum:Integer;begin readln(n); sum:=0; i:=0; repeat /repeat语句开始行 i:=i+1; sum:=sum+i; if (sum>1000) then break; until i>=n; /repeat语句结束行 writeln(sum); readln;end.当sum>1000时
41、,从循环中强制退出,执行until后面的语句。2Continue(强制缩短循环)过程 Continue语句用于从For语句、While语句或Repeat语句中强行结束本次循环,开始下一次循环。计算1+2+4+5+7+n,( 除去3的倍数)program Project2_10; $APPTYPE CONSOLEvar i,n,sum:Integer;begin readln(n); sum:=0; i:=0; repeat /repeat语句开始行 i:=i+1; if (i mod 3=0) then continue; sum:=sum+i; until i>=n; /repeat语
42、句结束行 writeln(sum); readln;end. 当i mod 3=0时,不执行语句与until语句之间的语句(sum:=sum+i),进行下一次循环。 3with语句 在使用记录类型的变量时,可以通过with语句来简化记录中域引用的写法。具体形式如下:with 记录型变量 do 语句 多个属性从属于一个对象时可用到with第四次课上机实验一实验题目:随机加减法实验内容:要随机产生一个加减法的算式,输入答案,按回车键后,能根据答案是否正确自动给出相应的提示对话框。通过本实验使学生了解在Delphi中如何定义变量,如何使用控制语句以及如何使用过程与函数。从而建立一个对于属性和方法的感
43、性认识。§2.7随机加减法测试例2-3 随机加减法测试随机产生一个加减法的算式:输入答案:按回车键后,能够根据答案是否正确给出相应的提示对话框。部分关键源代码:procedure TForm1.FormCreate(Sender: TObject);varm,n,k:integer; /定义整型变量beginrandomize; /初始化随机数发生器 m:=random(50); /为变量m赋一个50以内的随机值 n:=random(50); /为变量n赋一个50以内的随机值 k:=random(2); /为变量k赋一个2以内的随机值label1.Caption :=inttostr
44、(m); /在Label1中显示变量m的值label3.Caption :=inttostr(n); /在Label3中显示变量n的值if k=1 then /如果k的值等于1label2.Caption :='+' /在Label1中显示""else /如果k的值不等于1label2.Caption :='-' /在Label1中显示""end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);varanswer:integer; /定义变量an
45、swerbegin if key=chr(VK_RETURN)then /如果按下的键是Enter键begin if label2.Caption='+' then /如果是加法,就对两个对象的值求和 answer:=strtoint(label1.Caption)+strtoint(label3.Caption) else /如果不是加法,就对两个对象的值求差 answer:=strtoint(label1.Caption)-strtoint(label3.Caption); /如果答案与Edit1对象中的内容相同 if answer=strtoint(edit1.Text)
46、 then begin showmessage('回答正确'); /显示信息框"回答正确" button1.SetFocus ; /将焦点定位于按钮Button1上 end else /如果答案与Edit1对象中的内容不相同 begin showmessage('回答错误'); /显示信息框"回答错误" edit1.SetFocus ; /将焦点定位于按钮Edit上 end; edit1.SelectAll ; /选择Edit1中的内容 end;endprocedure TForm1.Button2Click(Sender
47、: TObject);begin close;end;§2.8 小结本章主要介绍了ObjectPascal的基本语法和语义,是程序设计的基础,由于学生先期修过高级语言课程,因而在讲授过程中可根据实际情况调整进度。第五次课第3章 面向对象编程(1)本节学习要点:² 深入领会类的基本概念Ø 类的声明Ø 类的对象Ø 构造函数Ø 析构函数² 熟练掌握类的封装技术(5个存取控制符的使用)Ø Public类型Ø Private类型Ø Protected类型Ø Published类型第3章 面向对象
48、编程面向对象编程(Object Oriented Programming ,OOP)Borland公司在Pascal中添加了面向对象的特性,构成了Delphi的程序设计语言Object Pascal§3.1 OOP基本概念!什么是对象?对象是OOP应用程序的一个重要组成部件,这个组成部件封装了部分应用程序,这部分应用程序可以是几个过程、数据或更抽象的实体。对象是从类型中创建的,对象的类型是类。对象中的几个基本概念:l 字段:对象中的数据成员l 属性:访问对象中包含的数据,但不能直接访问数据l 方法:用于表示对象中的过程和函数l 对象的生命周期:从使用类定义开始到删除它为止§
49、3.2 类的基本概念类是一种用户定义的数据类型,通常用来描述一些非常相似的对象所具有的共同特征和行为。对象是类的实例§3.2.1类的声明类有封装在一起的数据和方法构成,其语法格式如下:Type类名=class : :End例:Typetmember=className:String;Age:Integer;Male:Boolean;Procedure SetId(Vname:String;Vage:Integer;Vmale:Boolean);Function IsAdult:Boolean;End;/定义类/定义对象Var Aman:Tmember;Begin Aman.Name:
50、=John; Aman.Age:=28; Aman.Male=true;Function IsAdult:Boolean;Begin If (Age>=18) thenIsAdult:=trueElse IsAdult:=false;End;End;§3.2.1类的对象1、构造函数 /对于类中的对象进行初始化Constructor Create( );2、 析构函数Free方法Destructor综合实例(创建对象,使用对象,处理对象,释放对象)VarAman:Tmember BeginAman.Create;Aman.SetId(John,28,true);If Aman.I
51、sAdult then Showmessage(An adult);Aman.free;End;§3.3 类的封装Object Pascal使用了5个存取控制符:public, private, protected, published和automated§3.3.1 public类型能被类外部的程序访问§3.3.2 private类型私有的成员不能被类所在的单元以外的程序访问。§3.3.3 protected类型可以被该类的所有派生类访问,并且成为了派生类的私有成员。注意:使用派生类的用户无法访问保护成员。§3.3.4 published类型
52、从成员的可见性来说,发行成员是最高的§3.3.5 automated类型与public基本相同。唯一的区别是声明为automated的属性和方法生成自动类型信息。自动类型信息使得创建OLE自动化服务器成为可能。§3.3.6 类的封装应用练习例3-1 类的应用练习程序效果:设计两个窗体,在Form1对应的单元文件中定义一个类,该类具有Publec和Private两种类型的方法,在两个窗体中分别调用该类的方法。程序基本画面如图所示:完整的源代码见书P46结论:由本例我们能够知道在定义类的单元中,对私有类型的字段和方法进行访问和调用是不受限制的;但在不同的单元终究不能使用对类的私有类型进行访问。第六次课第3章 面向对象编程(2)本节学习要点:² 掌握类的继承性,深入领会代码重用技术的重要性² 掌握类的多态性Ø 静态方法Ø 虚拟方法Ø 重载方法Ø 动态
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创业指导专家管理办法
- 留学服务协议书范本
- 昆明市二手房交易餐饮配套合同
- 园林绿化公司装修粉刷施工合同
- 舞蹈服装租赁合同自行清洗
- 现金流管理与法律法规变化
- 景观设计招投标操作指南
- 川省旅游行业事业单位聘用合同
- 2024年快递版:快速货物运输代理协议
- 健康养生度假区民房建筑施工合同
- 船运公司船舶管理部部门职责说明书
- 人教PEP小学三年级英语上册知识点归纳
- 排球比赛记录表
- 新人教版一年级数学上册期末试卷
- 高二年级期中考试成绩分析(课堂PPT)
- 学校安全检查管理台账
- 中学文化地理兴趣社章程及考评细则(共5页)
- 小学二年级上册音乐-第6课《小红帽》--人音版(简谱)(15张)ppt课件
- 铁路物资管理模拟考试试题
- 初中历史课堂教学如何体现学生的主体地位
- 部编版三年级上册语文课件-习作六:这儿真美---(共19张PPT)部编版
评论
0/150
提交评论