Delphi程序设计大学教程_第1页
Delphi程序设计大学教程_第2页
Delphi程序设计大学教程_第3页
Delphi程序设计大学教程_第4页
Delphi程序设计大学教程_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第2章程序设计基础,本章以数据和数据处理作为程序设计的基础,通过讲解变量、常量和数据类型开始Delphi程序设计语言的探索之旅。 最后我们还会建立第一个Delphi程序,籍此了解一个程序是什么样的,Delphi程序语言包括哪些要素,以及如何撰写规范的程序代码。 2.1数据和数据处理 2.2数据类型 2.3程序 2.4 本章小结,2.1数据和数据处理,2.1.1计算机的结构 2.1.2数据的表示 2.1.3数据的处理,2.1.1计算机的结构,计算机包括两大部分硬件(hardware)和软件(software),硬件指组成计算机的物理、可触摸部分。软件由程序组成,它包含计算机运行或执行所需的指令。

2、 计算机的硬件组成可以分为三个子系统: 1. 中央处理单元 2. 输入/输出子系统 3. 主存储器,2.1.2数据的表示,我们要处理的数据会以不同的形式出现,无论数据以何种形式出现,实际上程序处理时所面对的都是同样的二进制位模式。 1. 计算机内部的数据 2. 文本数据的表示 不同的位模式集合可以设计用于表示文本符号。我们称一类位模式集合为码。表示符号的过程被称为编码。下面将介绍几种常用的码: (1) ASCII码 (2) 扩展ASCII码 (3) Unicode码 3. 其它数据的表示,2.1.3数据的处理,计算机中的CPU在重复的机器周期中依次执行编译好的程序指令,一个简化的周期包括三步:

3、取指令、译码和执行,如图所示。,2.2数据类型,2.2.1常量和变量 2.2.2简单数据类型 2.2.3复杂数据类型 2.2.4类型关系,2.2数据类型,Delphi中的数据类型十分丰富,可以将它们按如图所示的方式进行划分:,2.2.1常量和变量,常量和变量都必须是某一数据类型的常量和变量,在Delphi中,常量和变量必须事先声明才能使用. 1. 常量 在程序运行期间其值保持不变的量称为常量。常量在声明时就被赋予了一个值,在程序执行过程中原则上是不可改变的。 2. 变量 变量是指其值在运行时可以改变的量。,2.2.2简单数据类型,简单数据类型包括序数类型(ordinal)和实数类型(real)

4、。序数类型包括整数类型,字符类型,布尔类型,枚举类型和子界类型。,2.2.2简单数据类型,由于序数类型都具有一些共同的特点,所以Delphi针对此数据类型的操作,预定义了操作函数,该表是几个常用的函数:,2.2.2简单数据类型,1. 整数类型,整数类型是所有数字的一个子集。在Delphi中,它可以细化为以下几种类型,如表所示:,2.2.2简单数据类型,2. 字符类型 在Delphi中,包含三种类型的字符变量: AnsiChar:标准的8位字符集,原来是根据ANSI字符集建立的,现在扩展为可以指定本地字符集。 WideChar:16位的Unicode字符。Unicode字符集的前256个字符与A

5、NSI字符集相同。 Char:它是一般字符类型,相当于AnsiChar。,2.2.2简单数据类型,3. 布尔类型 布尔类型(boolean)包括四种:Boolean,ByteBool,WordBool,LongBool。 4. 枚举类型 5. 子界类型 子界类型(subrange)是下列这些类型中某范围内的值:整型、布尔型、字符型或枚举型。,2.2.2简单数据类型,6. 实数类型序数类型代表的是一个有限的数字集合,而实数类型按理论上说,代表的则是一个无限的数字集合,无法给出某个数据的序数。Delphi语言中的实数数据类型如表所示。,2.2.3复杂数据类型,1. 字符串类型 字符串是代表组字符的

6、变量类型,每一种语言都有自己的字符串类型的存储和使用方法。Delphi有下列几种不同的字符串类型来满足程序的要求: AnsiString 这是Delphi缺省的字符串类型,即我们在Delphi程序中常用的String类型。它由8位的ANSI字符组成,其长度最大到231个字符,同时与null结束的字符串相兼容。 ShortString 保留该类型是为了向后兼容Delphil.0,它的长度限制在255个字符内。 WideString 该类型功能上类似于AnsiString,但它是由WideChar字符组成的。,2.2.3复杂数据类型,2. 记录类型 记录(在某些语言中称为结构)用于表示组合在一起的

7、不同元素类型的集合。记录中的各个元素称之为字段。记录类型的声明指定了类型的名称和每个字段的类型。记录声明的类型语法如下所示: type 记录类型名称= record 字段1 : 数据类型1; . 字段2 : 数据类型2; end,2.2.3复杂数据类型,3. 指针类型 指针实质上是表示内存地址的变量。当指针保存一个变量的地址时,可以描述为:指针指向该变量在内存中的位置。对于数组或其他结构类型,指针保存的是结构类型中第一个元素的地址,指针本身占用4字节内存。 声明指针的类型是为了将表示特定类型的数据存放在指针所保存的地址中。声明指针类型的语法如下: type pointerTypeName =

8、type,2.2.3复杂数据类型,4. 变体类型 从Delphi 2.0开始引进了一个功能强大的数据类型,称为变体类型(Variant),主要是为了支持OLE自动化操作。Delphi 3.0引进了一个新的被称为Ole Variant 类型,它跟Variant基本一致,但是它只能表达与OLE自动化操作相兼容的数据类型。 Variant能支持所有简单的数据类型,例如整型、浮点型、字符串、布尔型、日期和时间、货币以及OLE自动化对象等。Variant还可以表达长度可变的数组,这种数组的元素能表示前面介绍的任意一种类型,也可包括另一个Variant数组。,2.2.4类型关系*,在声明变量时,需要为其指

9、定一种类型. 1. 类型兼容与等同 要了解表达式可以进行的操作,需要理解类型的两种相近的关系:类型等同和类型兼容。 (1) 类型等同 类型兼容性的特点简单明了:当用一个类型标识符来定义一个新的类型标识符,且没有其他限定时,那么它们表示相同的类型。,2.2.4类型关系*,(2) 类型兼容 首先可以肯定的是:每个类型与其自身是兼容的。如果两个类型是兼容的,那么它们可能至少满足下列条件之一: 都是实数类型。 都是整数类型。 一个类型是另一个类型的子界。 二者都是相同类型的子界。 二者都是基类型兼容的集合类型。 一个类型是标准变体Variant,另一个是整数、实数、串、字符或布尔类型。,2.2.4类型

10、关系*,2. 强制类型转换 强制类型转换是一种技术,通过它能使编译器把一种类型的变量当作另一种类型。由于Delphi编译器在调用一个函数时,对参数类型匹配的检查很严格。因此为了能通过编译检查,经常需要把一种类型转换为另一个种类型。类型转换的语法是: 类型指示符(表达式),2.2.4类型关系*,如果表达式是一个变量,那么结果叫做变量类型转换,否则叫做值类型转换。虽然二者语法相同,但它们适用两种不同的类型转换规则。 (1) 值类型转换 在值类型转换中,类型标识符和被转换的表达式必须都是序数类型(或都是指针类型)。 (2) 变量类型转换 在不会混淆整数和实数,且大小允许的情况下,则可以将变量转换到任

11、何类型。,2.3程序,2.3.1一个简单的Delphi程序 2.3.2Delphi语言要素 2.3.3撰写规范的程序代码,2.3.1一个简单的Delphi程序,在Delphi集成开发环境中,选择菜单FileNew打开New Items对话框,如右图所示,选中New标签页中的Console Application选项,按下OK按钮。,2.3.1一个简单的Delphi程序,Delphi集成开发环境会自动创建一个空的控制台程序项目,并在代码编辑窗口中自动打开Project1.dpr文件,并构建了这个程序的基本框架,其代码如下所示: program Project1; $APPTYPE CONSOLE

12、 uses SysUtils; begin TODO -oUser -cConsole Main : Insert code here end.,2.3.1一个简单的Delphi程序,1 program Project1; 2 $APPTYPE CONSOLE 3 uses 4 SysUtils; 5 6 var 7 tempStr : string; 8 tempInt : Integer; 9 10 begin 11 TODO -oUser -cConsole Main : Insert code here 12 write(请输入您的大名: ); 13 readln(tempstr);

13、14 writeln(tempstr, 您好,欢迎进入Delphi世界! ); 15 16 write(请输入一个整数: ); 17 readln(tempStr); 18 tempInt := StrToInt(tempStr); 19 writeln(您输入的数是: ,IntToStr(tempInt); 20 21 writeln(按Enter键退出。 ); 22 readln; 23 24 end.,第一个Delphi程序试写的代码,2.3.2Delphi语言要素,标记(token),它是程序文本中最小的有意义的单位 。 标记可以分为特殊符号、标识符、保留字、指示字、数字以及字符串等若

14、干类别。,1. 特殊符号 2. 标识符 3. 保留字 4. 指示字 5. 数字 6. 字符串,2.3.3撰写规范的程序代码,通过编程经验的总结和软件工程的研究,归纳出如下代码质量评审原则: 正确性 指程序代码要实现软件设计所要求的功能; 可靠性 指代码最后编译的程序要能够稳定、可靠、安全的运行; 规范化 指代码书写的风格、命名规则等要符合规范; 可读性 指代码要便于查看和理解;,2.3.3撰写规范的程序代码,1. 基本格式 在程序代码中适当使用空格、空行以及缩进,可以使程序结构清晰,易于阅读。 2. 注释 注释是为了说明代码(代码段)的含义,帮助理解和交流。 花括号注释 组合符号“”和“”的成

15、对使用,表示它们之间的内容是注释部分; 圆括号-星号注释 组合符号“(*”和“*)”的成对使用表示它们之间的内容是注释部分; C+风格的双斜杠注释 符号“/”的单独使用表示后面的内容是注释部分。,2.3.3撰写规范的程序代码,3. 命名,2.3.3撰写规范的程序代码,4. 文档组织 对于规模较大的Delphi项目,会涉及到一些不同形式的文件类型,为了易于区分查找、提高工作效率,建议在该项目目录下,分别建立几个子文件夹。例如:,文件夹 用来存放该项目相关的开发文档(需求说明,概要设计,详细设计等等)。 文件夹 用来存放Delphi源程序文件,如:*.dpr、*.pas、*.dfm等文件。 文件夹

16、 该文件夹中存放单元的中间编译文件*.dcu,将*.pas与*.dcu文件分开存放只是为了让Source目录的内容更加清楚一些。 文件夹 存放项目的输出文件,比如:*.exe、*.dll、*.ocx等文件。 文件夹 存放项目中用到的图标、图像、声音等媒体文件。一般情况下,这个目录是少不了的。,本章小结,数据是我们对信息的一种组织和表达形式。计算机是一个数据处理器,而程序就是处理数据的具体步骤和方法。 尽管我们要处理的数据会以数字、文字、图像、声音和视频等不同的形式出现,但对于计算机而言,程序所处理的都是同样的二进制位模式数据。计算机存储器仅仅将数据以位模式存储。至于解释位模式是数字类型、文本类

17、型、或其它的数据类型,则是由输入/输出设备或程序的完成。 位(bit,binary digit的缩写)是存储在计算机中的最小单位;它是0或1。长度为8的位模式被称为1个字节。,本章小结,不同的位模式集合可以设计用于表示文本符号。我们称一类位模式集合为码。表示符号的过程被称为编码。常用的码有ASCII码、扩展ASCII码、Unicode码。 计算机可以通过机器语言直接对字节或者位进行操作,但这十分复杂。高级语言通过抽象机制,避免了这种底层操作方式。其中,数据类型(data type)正是高级语言的基础之一,它决定了变量的取值以及所能参加的运算。,本章小结,Delphi是强类型语言,它能检查和区别

18、多种数据类型,一般不允许用一种类型(的变量)替换另一种类型(的变量)。但Delphi仍然提供了必要的强制类型转换机制。 Delphi中的数据类型包括:简单类型、字符串类型、结构类型、指针类型、程序型类型和变体类型。 在Delphi中,常量和变量必须事先声明才能使用。Delphi通过声明为他们定义一个标识符,并且在合适的地方为它分配内存。,本章小结,在程序运行期间其值保持不变的量,我们称之为常量。常量在声明时就被赋予了一个值,在程序执行过程中原则上是不可改变的。声明常量使用const保留字。 变量是指其值在运行时可以改变的量。声明变量使用var保留字,声明时必须为变量指定一种数据类型。 简单数据

19、类型分为序数类型(ordinal)和实数类型(real)。序数类型包括:整数类型、字符类型、布尔类型、枚举类型和子界类型。,本章小结,字符串是代表组字符的变量类型。缺省情况下,我们在Delphi中使用的String类型是指AnsiString类型,它由8位ANSI字符组成,其长度最大到1024*1024*1024*2个字符。 记录用于表示组合在一起的不同元素类型的集合。记录中的各个元素称之为字段。记录类型的声明指定了类型的名称和每个字段的类型。 指针是表示内存地址的变量。当指针保存一个变量的地址时,可以描述为指针指向了该变量在内存中的位置。,本章小结,变体类型(Variant)主要是为了支持OLE自动化操作。它能支持所有简单的数据类型、日期和时间、货币以及OLE自动化对象等。Variant还可以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论