Delphi 程序设计 教学课件 ppt 作者 冯博琴主编 席一凡 聂 第四章 高级数据类型

上传人:E**** 文档编号:89386331 上传时间:2019-05-24 格式:PPT 页数:68 大小:552.50KB
返回 下载 相关 举报
Delphi 程序设计 教学课件 ppt 作者 冯博琴主编 席一凡 聂 第四章 高级数据类型_第1页
第1页 / 共68页
Delphi 程序设计 教学课件 ppt 作者 冯博琴主编 席一凡 聂 第四章 高级数据类型_第2页
第2页 / 共68页
Delphi 程序设计 教学课件 ppt 作者 冯博琴主编 席一凡 聂 第四章 高级数据类型_第3页
第3页 / 共68页
Delphi 程序设计 教学课件 ppt 作者 冯博琴主编 席一凡 聂 第四章 高级数据类型_第4页
第4页 / 共68页
Delphi 程序设计 教学课件 ppt 作者 冯博琴主编 席一凡 聂 第四章 高级数据类型_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《Delphi 程序设计 教学课件 ppt 作者 冯博琴主编 席一凡 聂 第四章 高级数据类型》由会员分享,可在线阅读,更多相关《Delphi 程序设计 教学课件 ppt 作者 冯博琴主编 席一凡 聂 第四章 高级数据类型(68页珍藏版)》请在金锄头文库上搜索。

1、第 4 章 高级数据类型,教学目的 掌握类型的声明和变量的定义 掌握枚举、子界、集合、记录类型的定义和使用方法 掌握静态数组的定义和使用方法 掌握动态数组的定义和使用方法 掌握记录类型的定义和使用方法 掌握指针的基本概念和指针的使用 高级数据类型包括是枚举、子界、集合、数组、记录和指针等类型。本章将着重介绍Delphi中数组、记录、指针的定义和使用方法。数组是由基本数据类型构造的一种数据类型,它是由一组相同类型数据组成的有序集合,是用来解决一批相同类型数据的存储问题。相反,记录是用来解决一批不同类型数据的存储问题,Delphi语言提供了丰富的数据类型及其使用方法,利用这些类型用户可以方便地组织

2、和使用数据。,4.1 类型声明 Delphi语言的高级数据类型在使用之前必须首先用类型声明语句进行类型声明,类型声明语句的语法格式为: Type =; =; =; 保留字Type表示类型声明段的开始,是用户为自定义的类型所取的名称,是用户根据需要而选择Delphi提供的数据类型。 4.2 枚举类型 在处理诸如物体的颜色、人的职业、教师的职称等非数值数据时,可以用数值或字符串来表示,比如用1表示红色,2表示黄色;或用“red”表示红色,“yellow”表示黄色。但这样的表示都存在一些缺点:使用数值表示很不直观,特别当表示的种类较多时容易引起混乱和错误,使用字符串则需要占用较多的内存。 仔细分析这

3、些数据,可知这些数据的个数总是有限的,而且可以一一列举。为此,Delphi为用户提供了一种自定义数据类型枚举类型,可以很方便地处理这类数据。,1. 枚举类型的声明 声明枚举类型的语法格式如下: Type =( , , , ); 说明: (1)是用户自定义的枚举类型名称。 (2)和每个都必须是合法的标识符。不能将数字1、2、3 作为枚举类型的值,因为合法的标识符不能以数字开头。 (3)表示该类型数据中的元素,圆括号中列出了该类型数据的所有取值,这些取值又称为枚举常量。 (4)在默认情况下,枚举常量值从0顺序开始,向右依次加1。枚举常量不允许在同一枚举类型定义中重复出现,也不允许同时在不同的枚举类

4、型定义中出现。 (5)枚举类型采用列举出该类型所有可能取值的方式定义了一个有序值的集合。 例如,定义具有7个元素的枚举类型 Weekday: Type Weekday=(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday); 这里定义了一个名为Weekday的枚举型,其可能的值在括号中,如Sunday、Monday、Tuesday等。枚举类型也是有序类型,因此,在定义中列出的每个值都有其对应的序数,每个值的序数是由其被列出的顺序决定的,而与值本身的含义无关,可以使用Ord函数得到。例如:type MyColor=(red=2,yel

5、low,green=6,white); 这时,Ord(red)的值为2,Ord(yellow) 的值为3,Ord(white)的值为7。,2. 枚举类型变量的定义 声明了枚举类型之后,就可以用所声明的枚举类型定义变量了,这与定义其他类型的变量完全相同。其语法格式为: Var ,:; 除了采用前面介绍的方式定义枚举类型的变量之外,还可以将枚举类型的声明和枚举类型变量的定义合并在一起,例如: Var I:(red=2,green=6, white=7,black=9); 但是用这种方法定义枚举类型变量之后,就不能够声明其他使用这些枚举常量定义的相同范围的枚举型变量,例如: Var Color1:

6、(red=2,green=6, white=7,black=9); Var Color2: (red=2,green=6, white=7,black=9); 这样定义两个枚举型变量将产生一个编译错误。系统会提示类似于: “Identifier redeclared: red” 也就是说,枚举类型一旦声明,此枚举类型的任一元素都不能再重复被声明为其他枚举类型的元素之一,否则会导致编译错误。,3. 枚举类型的运算 枚举类型是用一些枚举常量表示的一组连续整数,枚举常量是一种符号常量,是整数的符号化表示。在运算过程中,可以直接对枚举常量进行关系运算;不能对枚举常量进行直接的算术运算,但可以通过函数对

7、枚举常量进行间接的算术运算。 Delphi规定:每一个枚举类型常量都对应一个唯一的有序整数。对于一个具有n个值的枚举类型,其枚举常量从左到右依次对应的有序整数为(0n-1)。 要获得枚举常量的值,可以通过Delphi提供的标准函数实现,常用的函数见表4-1所示。 表4-1 枚举常量计算函数,【例4.1】显示系统日期,并能返回昨天、今天和明天的星期。程序中的: Format()是格式化函数;Date是日期函数,其类型为TdateTime; DecodeDate(Date,year,month,day)是日期转换函数, 参数:Date是日期函数,year、month、day是无符号整型变量; Da

8、yOfWeek(Now)是星期函数,类型整型:17,1表示星期天,7表示星期六; Now是日期时间函数,其类型为TdateTime,返回系统当前日期和时间; 这些函数的具体使用请参阅第二章有关标准函数章节内容。 操作步骤如下: (1) 建立工程(默认工程名为Project1) 选择FileNewApplication命令建立一个新的Windows应用程序。 (2) 在窗体Form1上添加控件并设置其属性 在Form1(默认窗体名)上添加一个Panel1控件,并将其Caption属性设置为:空; 最后添加3个命令按钮Button1、Button2、Button3,并将其Caption属性设置为:

9、“昨天”、“今天”、“明天”,如图4.1所示。,图4.1 Form1的控件,(3) 建立事件过程 为Button1(排序)命令按钮控件添加OnClick事件,并在事件处理器中添加实现其功能的代码。双击Button1按钮,就会打开代码编辑器,在光标指示位置输入代码,程序单元的代码如下: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm)

10、 Panel1: TPanel; Button1: TButton; Button2: TButton; Button3: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private Private declarations public Public declarations end; var Form1: TForm1; implementation type week=(Sun,Mon,Tue,Wed,Thu,Fri,Sat);/声明week为枚举类型 $

11、R *.dfm procedure TForm1.FormCreate(Sender: TObject); var year,month,day:word;/word是Delphi提供的无符号整型类型 begin decodedate(date,year,month,day);/调用DecodeDate()和Date获得:年,月,日 Panel1.Caption:=format(今天是%d年%d月%d日,year,month,day); end; function mday(day:week):string; begin case day of sun:mday:=星期天; mon:mday:

12、=星期一; tue:mday:=星期二; wed:mday:=星期三; thu:mday:=星期四; fri:mday:=星期五; sat:mday:=星期六; end; end;,procedure TForm1.Button1Click(Sender: TObject); / Button1代码段 var today,yesterday,tomorrow:week; n:integer; begin n:=dayofweek(now); case n of 1: today:=sun; 2: today:=mon; 3: today:=tue; 4: today:=wed; 5: toda

13、y:=thu; 6: today:=fri; 7: today:=sat; end; if today=low(week) then yesterday:=high(week) else yesterday:=pred(today); if today=high(week) then tomorrow:=low(week) else tomorrow:=succ(today); Button1.Caption:=昨天; Button2.Caption:=今天; Button3.Caption:=明天; case (Sender as tbutton).Tag of 0: Button1.Cap

14、tion:=昨天是+mday(yesterday); 1: Button2.Caption:=今天是+mday(today); 2: Button3.Caption:=明天是+mday(tomorrow); end; end; end. /程序结束,(4)执行程序 在Delphi窗口中,选择【Run】或按F9键,程序执行结果如图4.2所示。 图4.2 程序执行结果 其中,Button2、Button3都执行Button1的事件过程。,4.3 子界类型 在实际应用中,许多变量的取值都有一定范围的限制,如每年的月份数在112之间,每月的天数在131之间,而某门课程成绩的5个等级可以用字母AE表示。

15、在这些问题中,数据的类型总是顺序的类型,数据的取值范围则是该类型数据取值的一部分。在Delph中,这种具有确定的数据类型称为基类型),且其取值范围确定的数据可以定义为“子界类型”。其中的基类型,必须为顺序类型。 1.子界类型的声明 子界类型是从整型、字符型、布尔型或枚举等类型中产生的一个子界,即是由整型、字符型、枚举型、布尔型的两个常量指定该类型的值域区间。声明子界类型的语法格式为: Type =; 说明: (1) 类型名称是用户定义的子界类型名称。子界类型的上界和下界必须是同一类型,并且是有序类型,如整型、布尔型、字符型或枚举类型等,不能是实数类型或其他无序类型。 (2) 常量1表示子界类型

16、的下界,常量2表示子界类型的上界。子界类型的下界的序数值不能超过其上界值,其类型可以是常量,也可以是能够计算出具体值的表达式。 (3) 子界类型的上、下界所属的数据类型为标准数据类型(整型、布尔型、字符型)则子界的上、下界可以直接使用该类型常量,若子界的基类型为枚举类型,则必须先定义基类型(枚举类型),再定义子界类型。 例如:下面的声明语句定义了1个枚举类型Tdates和2个子界类型Tdate、Tnumber。 type Tdates=( Mon,Tue,Wed,Thu,Fri,Sat,Sun); Tdate=Mon Sun; Tnumber=09;,其中,子界类型Tdate是从枚举类型Tdates产生的子界,最小值为Mon,最大值为Sun。子界类型Tnumber是从字符型产生的一个子界,最小值为字符0,最大值为字符9。子界产生之后,就可以在指定的范围内给变量进行赋值操作了。 2. 子界类型变量

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号