大学生程序设计ACM辅导教程.pdf
《大学生程序设计ACM辅导教程.pdf》由会员分享,可在线阅读,更多相关《大学生程序设计ACM辅导教程.pdf(226页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、程序设计ACM竞赛辅导教程第一章Delphi简介第 一 节 Delphi的运行环境1.1.1 Delphi 简介Delphi是著名的Borland公司开发的可视化软件开发工具。“真正的程序员用c,聪明的程序员用Delphi,这句话是对Delphi最经典、最实在的描述。Delphi被称为第四代编程语言,它具有简单、高效、功能强大的特点。和 V C 相比,Delphi更简单、更易于掌握,而在功能上却丝毫不逊色;和 V B 相比,Delphi则功能更强大、更实用。可以说Delphi同时兼备了 V C 强大的功能和V B简单易学的特点。因此,它一直是程序员至爱的编程工具。Delphi具有以下的特性:基
2、于窗体和面向对象的方法,高速的编译器,强大的数据库 支 持,与 Windows编程紧密结合,强大而成熟的组件技术。但最重要的还是ObjectPascal语言,它才是一切的根本。Object Pascal语言是在Pascal语言的基础上发展起来的,简单易学。Delphi提供了各种开发工具,包括集成环境、图像编辑(Image E d ito r),以及各种开发数据库的应用程序,如Desktop DataBase Expert等。除此之外,还允许用户挂接其它的应用程序开发工具,如 Borland公司的资源编辑器(Resourse Workshop)。在 Delphi众多的优势当中,它在数据库方面的特
3、长显得尤为突出:适应于多种数据库结构,从客户机/服务机模式到多层数据结构模式;包括高效率的数据库管理系统和新一代更先进的数据库引擎;具备最新的数据分析手段和提供大量的企业组件。Delphi发展至今,从 Delphi】、Delphi 2 到现在的Delphi6,不断添加和改进各种特性,功能越来越强大。本书将以Delphi6为基础,介绍Delphi的开发环境、基本概念,让读者能 在 Delphi环境下编写竞赛程序。1.1.2 Delphi 的 IDE 环境启动Delphi后,屏幕上会出现如图1.1所示的界面,这是使用Delphi开发Windows应用程序和Internet应用程序常见的界面。图1与
4、上面两种应用不用,编写竞赛程序常常是使用控制台应用程序(ConsoleApplication),创建一个新的控制台应用程序可以使用如下的步骤:(I)使用菜单File-New-O ther,如 图 1.2所示良:C l os e2:C l os e A l l0 U s e U ni t.A l t+F l l昌 P r i nt.j f l E x i t图1.2(2)在 New Items 对话框中选择新建 aConsole Application(图 1.3)|u b)ect Ire ”e eDelphi 6-Project2Efe Edit Search a*D 6-Q A、5 3或口日
5、fBase|WebSetvicee|Internet因理 Pojec2|program P rp j tZ;-IDI x|_ Uses旦1凶新建的控制台应用隹序界面如a 里班米。学皿usesSysUtils;b e g in TO DO -offser-cCoasole M-32n:Insert code here e n d.Properties|Events菜单和工具栏Modded|ln$ert C ode/代码编辑窗口/1.4下面将开始我们的第一个程序:Hell。程序,并且在Delphi环境中运行这个程序。程序在代码编辑窗口中编辑,例如可以在代码编辑窗口中输入Hell。程序:progra
6、m Hello;1$APPTYPE CONSOLE)usesSysUtils;begin TODO-oUser-cConsole Main:Insert codehere WriteLn(*Hello World.);ReadLn;end.其 中,只有下划线部分是手工输入的,其 他 部 分 是 D elphi产生的代码。语句KWriteLn(Hello World.)w 是输出 aHello World.B 的字样;语 句 ReadLn”是等待输入一个回车符号,以便观察程序输出结果。然后选择菜单”Run-Run”运行程序。这时,屏幕中会出现H ello W o rld.的字样,如 图 1.5
7、所示。图1.5L1.3Delphi程序的编译、运行和调试下表列出了编译、运行和调试Delphi程序的常用命令:方 式 编 译(Compile)的 运 行(Run)步 跟 踪(Trace Into)步 执 行(Step Over)执行到光标所在位置菜单命令Project-CotnpliteRun-RunRun-Trace IntoRun-Step Over(Run to Cursor)捷i-1-单单Run-Run to Cursor F4设 置(Breakpoint)观察窗口(Watch)Run-Add Breakpoint 鼠标单击代码行左边的蓝点Run-Add Watch Ctrl+F5更多
8、的命令请参考Delphi的联机帮助。第 二 节 Delphi常量标识符是Delphi应用程序中一些量的名称,这些量包括变量(var)、常量(const)、类型(type)过程(procedure)、方法(Method)及其他,Object Pascal在应用标识符时,必须首先说明它们。Object Pascal是强类型语言,它的编译器可以检查确保赋给变量或属性的值是正确的类型,以便于您改正错误。由于Object Pascal是编译语言,所 以 Delphi的执行速度要比使用解释语言快得多。在使用标识符前说明它们,可以减少程序错误并增加代码的效率。有一点需要特别说明的是Object Pascal
9、中的标识符是不区分大小写的,这 和 C/C+语言有很大的区别。例 如:Delphi和 delphi被看成是同一个标识符。常量说明是为一个标识符赋予一个值,在程序执行过程中是不可改变的。常量说明使用保留字“const”作为开头。格式为:const常量名=常量值;下面的例子声明了三个常量:constPi=3.14159;Age=34;ProductName=Delphi;上文的三个常量分别是实型、整型和字符串型常量。常 量 用 =表示两边的值是相等的。和 C/C+语言不同,Object Pascal的字符串常量是使用单引号()作为定界符的,例如上面的Delphi,而不是使用双引号()。第 三 节
10、Delphi变量变量是程序代码中代表一个内存地址的标识符,而该地址的内存内容在程序代码执行时可以被改变。在使用变量前必须对它进行说明,即对它进行命名,并说明它的类型。在所有变量说明以前加上保留字var。变量说明左边是变量的名称,右边则是该变量的类型,中间用(:)隔开。即格式为:v a r变量名:变量类型;例如:varValue,Sum:Integer;Name:String;在 Delphi中,可以在变量声明同时赋初始值,格式为:const变量名:变量类型=变量初始值;注意,此时是使用const保留字开头,而不是var。例如:constValue:Integer:=10;Name:String
11、=Gates;第四节Delphi类型Delphi有两大数据类型,一类是系统已经预定义的,另一类是用户自定义的。ObjectPascal有一些系统预定义的数据类型,这些类型包括有:整型、实型、布尔型、字符型、指针型;而用户自定义的数据类型有枚举型、子界型、数组型、集合型、记录型、对象型等,您可以利用这些用户预定义的数据类型来构造新的数据类型以满足程序的特定需要。1.4.1 Delphi预定义类型Object Pascal有多个预定义的数据类型,您可以说明任何这些类型的变量:1.整型:与 CPU和操作系统相关的整型包括Integer和 Cardinal,在当前32位编译器下,取值范围如下:类型 范
12、围 格式Integer-2147483648.2147483647 signed 32-bitCardinal 0.4294967295 unsigned 32-bit与CPU和操作系统无关的整型如下:类型 范围 格式Shortint-128.127signed 8-bitSmallint-32768.32767signed 16-bitLongint-2147483648.2147483647signed 32-bitInt64-2八 63263-1signed 64-bitByte0.255unsigned 8-bitWord0.65535unsigned 16-bitLongword0.
13、4294967295unsigned 32-bit2.实型:下表列出了实型的范围和存储格式:类型范围有效位占用字节(bytes)Real482.9 x 10A-39.1.7x 1OA3811-126Single1.5 x 10A-45.3.4x 10A387-84Double5.0 x 10八-324.1.7 x 10A30815-168Extended3.6 x 10八-4951.1.1 x 10A493219-2010Comp-2八 63+1.2A63-119-208Currency-222337203685477.5808.922337203685477.580719-208通用类型Re
14、a在当前的解释下,等价于Double。类型范围有效位占用字节(bytes)Real5.0 x 10A-324.1.7x 10八 30815-1683.布尔型:Boolean,只包含true或False两个值,占用1 字节内存。4 .字符型:Char,一个ASCH字符;字符型的常量形式上和字符串型常量一样,都是使用单引号()作为定界符,例如:A%5.字符串类型:String一串最长可达2G 个 ASCII字符。6.指针型:Pointer,可以指向任何特定类型。相当与C/C+中 的“void*。类型的兼容性:整型类别和实型类别都各有五种类型,同一类别中,所有的类型与其他同类别的都相容,您可以将一种
15、类型的值赋给相同类别中不同类型的变量或属性,而只需要这个值的范围在被赋值的变量或属性的可能值范围内。例如,对于一个Shortint型的变量,可以接受在-128到127范围内的任意整数,例如,对 于 Shortint类型,您不能将128赋给它,因 为 128已经超出了 Shortint的范围了;此时,如将范围检查功能打开(选用OptionsIPrqject,并 在 CompilerOptions Page中选择Range Checking),将会检查出一个范围错误;如果Range Checking没有被打开,那么程序代码将可以执行,但被赋值的值将不是您期望的值。在一些情况下,您可以进行不同类型的
16、变量或属性的赋值。一般来说,可以将一个较小范围的值赋给一个较大范围的值。例如,您可以将整型值10赋给一个能接受实型值的Double类型的变量,而使其值成为10。,但如果将一个Double类型的值赋给整型变量,则会出现类型错误。如果您不清楚类型的兼容性,可以参阅Delphi的在线帮助中KType Compatibilityand Assignment Compatibilityw 主题。1.4.2枚举类型一个枚举型的声明列出了所有这种类型可以包括的值,枚举型的声明格式如下:type typeName=(vail,.vain);其中,typeName,vail,.,vain都是合法的标识符。例如:
17、typeTSound=(tsClick,tsClack,tsClock);TMyColor=(mcRed,mcBlue,mcGreen,mcYellow,mcOrange);可以定义上述枚举类型的变量和对该变量赋值如下:var MyColor:TMyColor;MyColor:=mcBlue;在枚举型中,括号中的每一个值都有一个由说明它的位置决定的整型值。例 如 mcRed有整型值0,mcBlue有整型值1 等。您可以把MyColor说明为一个整型变量,并将每种颜色赋一个整型值以达到相同的效果,但用枚举型会使得程序可读性好,编写容易。当您在枚举型中列出值时,您同时说明了这个值是一个标识符。例如
18、您的程序中如果已经含有TMyColor类型且说明了 MyColor变量,则程序中便不能使用mcRed变量,因为它已经被说明为标识符了。1.4.3 子界类型子界型是下列这些类型中某范围内的值:整型、布尔型、字符型或枚举型。任何形如Low.High的构造都表示一个子界类型,其取值范围是从Low到 High。例如:type TColors=(Red,Blue,Green,Yellow,Orange,Purple,White,Black);/(枚举类型)type TMyColors=Green.White;typeSomeNumbers=-128.127;Caps=A*.*Z;子界型限定了变量的可能取
19、值范围。当范围检查打开时,(在库单元的Implemeniation后面有$R*.DFM 字样表示范围检查打开,否则您可以在OptionsIProjectIComplier Options中选择Range Cheking来打开范围检查),如果变量取到子界以外的值,会出现一个范围检查错误。1.4.4 数组类型数组是某种数据类型的有序组合,其中每一个元素的值由其相对位置来指定,您可以在数组的某个位置上放置数据,并在需要时使用这些数据。数组的声明形式为:array indexTypel,indexTypen of baseType其中,indexType是基本类型,它的范围应该在2 G 以内,base
20、Type是数组的基类型。一般来说,indexType是子界类型。请看下面的例子:/声明数组var MyArray:array1.100 of Char;/Example 1type TMatrix=array1.10 of array1.50 of Real;/Example 2type TMatrix=array1.10,1.50 of Real;/Example 3var MyMatrix:TMatrix;/Example 4/Usage of Arrays使用数组元素的范例MyArray1:=z Az;MyMatrix150:=0.0;MyMatrix10,50:=1.0;WriteLn
21、(MyArray10);Example 1 中,声明了 一维数组 M yArray,包含 100 个 Char;Example2和 Example3 都可以定义了二维数组的类型,这两种写法都是等价的。Example4声明上述二维数组类型的变量。您也可以在声明数组时,给数组赋初始值,例如:/给数组赋初始值const MyArray:array 1.3,1.3 of Integer=(1,2,3),(4,5,6),(7,8,9);const MyChars:array 1.2 of Char=(Az,z Bz);1.4.5 字符串类型字符串类型本质上是一个一维的字符数组。当您说明一个字符串型的变量
22、时,您可以指明这个字符串的大小,下面是说明字符串类型的例子:type MyStnng:stnngl 151;var MyName:MyString;vartmpString:string;则 变 量MyName被 说 明 成 为 最 多 可 以 包 含15个字符。如果您没有说明字符串的大小,Delphi会认为字符串最多包含最大值2G个 字 符(如 变 量tmpString)。给字符串赋值可以直接使用单引号括起的字串赋值:MyName:=Bill Gates;因 为MyName是 一 个 可 以 包 含15个 字 符 的MyString型变量。当您给字符串型变量赋的值多于定义数值时,例 如 将M
23、yName赋 为FrankSmith.Franklin,则Delphi只会接受前15个 字 符FrankSmith.Fran。您可以使用索引值来访问字符串的字符,例 如,用MyNamel可 以 得 到M yName的 第 一 个 字 符B,也 可 以 直 接 地 修 改 字 符 串 中 的 字 符,例 如:MyNamel=F您 可 以 充 分 利 用Delphi丰富的运算符、过程和函数来处理字符串型的变量和属性。详细 的 请 参 阅Delphi函数与过程”中关于常用的字符串函数部分的内容。1.4.6 集合类型集 合 类 型 是 一 群 相 同 类 型 元 素 的组合,这些类型必须是有限类型如整
24、型、布 尔 型、字符型、枚 举 型 和子界型,并 且 该 类 型 的 元 素 个 数 不 得 多 于256个。在检查一个值是否属于一个特定集合时,集合类型非常有用。声 明 集 合 使 用 setof”来声明,请 看 例 子:type穴.义集含类型TSomelnts=1.250;TIntSet=set of TSomelnts;type TIntSet2=set of 1.250;/和上面的方式等价var Setl,Set2:TIntSet;/声明集合变量Setl:=1,3,5,7,9,100.200;/给集合赋值Set2:=2,4f 6,8,10;集合使用方括号为定界符,里面的元素使用逗号作为
25、分隔。集合的操作也比较丰富,常用的操作见下表:操作符操作说明参数类型结果类型例子4-合集集合,集合集合Setl+Set2-差集集合,集合集合S-T*交集集合,集合集合S*T=子集集合,集合布尔Q=S2S2=My SetMySet SIA in Setl1.4.7 记录类型记录是您的程序可以成组访问的一组数据的集合。下面的例程说明了一个记录类型的用法:typeTEmployee=recordName:string20;YearHired:1990.2000;Salsry:Double;Position:string20;end;记录包含可以保存数据的域,每一个域有一个数据类型。上文的记录TEmp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学生 程序设计 ACM 辅导 教程
限制150内