《Delphi程序设计基础教程》第2章面向对象的pascal语言

合集下载

Delphi教学 第02章 面向对象的Pascal(第二部分)

Delphi教学 第02章 面向对象的Pascal(第二部分)

标准类型 简单类型 自定义类型 数据类型 构造类型 集合类型 数组类型 记录类型 文件类型
字符串类型 实型 整型 字符型 布尔型 枚举类型 子界类型
序数类型
可变类型
2.6 集合类型
集合是指具有相同性质且可以相互区分的对象的全体。例如, 集合是指具有相同性质且可以相互区分的对象的全体。例如,所 有的英文字母可以组成一个集合,全体自然数组成一个集合, 有的英文字母可以组成一个集合 , 全体自然数组成一个集合 , 某个 学 校 的 全 体 学 生 组 成 一 个 集 合 , 等 等 。 为 了 表 示 集 合 , Object Pascal 引入了集合类型。 引入了集合类型。
2.6. 1-2 集合类型的运算
2. 集合的关系运算 集合的关系运算包括类型相同集合之间所进行的相等“ 、 集合的关系运算包括类型相同集合之间所进行的相等“=”、不等 等运算, “<>”、包含“>=”、被包含“<=”等运算,以及数据是否属于集合的 、包含“ 、被包含“ 等运算 以及数据是否属于集合的IN 运算。这些运算的结果均为布尔类型值。 运算。这些运算的结果均为布尔类型值。 集合相等运算:如果相同类型集合A和 的元素完全相同 的元素完全相同, 集合相等运算:如果相同类型集合 和B的元素完全相同,则运算 A=B或B=A的值为 的值为True,否则为 或 的值为 ,否则为Flase。 。 [2,3]=[3,2]的值为 的值为True。 的值为 。 集合的不等运算:如果相同类型集合A和 的元素不完全相同 的元素不完全相同, 集合的不等运算:如果相同类型集合 和B的元素不完全相同,则 运算A<>B或B<>A的值为 的值为True,否则为 运算 或 的值为 ,否则为Flase。 。 [2,3]<>[1,3,2]的值为 的值为True。 的值为 。 集合的包含运算:如果集合B中的元素都是集合 中的元素, 中的元素都是集合A中的元素 集合的包含运算:如果集合 中的元素都是集合 中的元素,则运 A>=B(称为 包含 )的值为 包含B)的值为True,否则为 算 (称为A包含 ,否则为Flase。 。 [1,3,2]>=[2,3] 的值为 的值为True。 。 集合的被包含运算:如果集合B中的元素都是集合 中的元素, 中的元素都是集合A中的元素 集合的被包含运算:如果集合 中的元素都是集合 中的元素,则 运算B<=A (称为 被包含在 中)的值为 称为B被包含在 被包含在A中 的值为True,否则为 运算 ,否则为Flase。 。 [RED,BLUE]<=[RED,GREEN,BLUE]的值为 的值为True。 的值为 。 属于运算:如果数据X与集合 的基类型相同,且被包含在A中 则运算X 与集合A的基类型相同 属于运算:如果数据 与集合 的基类型相同,且被包含在 中,则运算

第二章 Delphi面向对象的编程方法(一)

第二章 Delphi面向对象的编程方法(一)

Delphi的编程语言是以Pascal为基础的。

Pascal语言具有可读性好、编写容易的特点,这使得它很适合作为基础的开发语言。

同时,使用编译器创建的应用程序只生成单个可执行文件(.EXE),正是这种结合,使得Pascal成为Delphi这种先进开发环境的编程语言。

本章中,我们将讨论Object Pascal的主要特点,并讲解如何在事件处理过程和其他应用程序中,使用它来编制程序代码。

本章将讲解Delphi应用程序中最常用的Object Pascal语法,而不是Pascal语言的一切细节。

如果您完全不熟悉Pascal编程,请参阅一些基础的Pascal教程。

如果您具有编程经验,并能熟练地使用其他流行程序语言,您将在本章的Object Pascal中发现一些相同的概念。

如果您已经熟悉了Borland Pascal,就可以快速浏览或跳过本章。

2.1 编写Object Pascal程序代码在前边的章节中,我们通过例程,已经编写了几行简单的代码。

在本章中,我们将从熟悉Pascal编程的角度,配合实例,讲解Object Pascal编程的基本方法。

在编写自己的Object Pascal程序时,要注意程序的可读性。

Pascal 语言是英式结构语言,在程序中选择合适的缩排、大小写风格,并在需要时将程序代码分行,会使得程序代码能够很容易地被自己和他人读懂。

一般的程序员都有这样的体验:如果不给程序加上适当的注解,一段时间后,自己也难以理清程序的流程。

给程序及时地加上注释是良好的编程习惯。

Delphi的注释需要加注在{}之间,编辑器会把它们处理成为空白。

Delphi保留了Borland Pascal编辑器的风格,关键字采用黑体字,被注释的部分会变暗,这使得编程风格良好,易读易写。

2.1.1 编写赋值语句在事件处理过程中,最常用到的工作就是把一个新值赋给一个属性或变量。

在设计用户界面时,可以使用Object Inspector(Object Inspector)来改变其属性;但有时需要在程序执行时改变属性的值,而且有些属性只能在执行时改变,这些属性在Delphi的在线帮助的“Proprety”主题中被标为执行期属性。

《Delphi程序设计基础教程》第2章面向对象的pascal语言精品PPT课件

《Delphi程序设计基础教程》第2章面向对象的pascal语言精品PPT课件

C++面向对象程序设计程序设
2020/10/11
2.1.4 常量和变量
常量 在Object ascal中用Const关键字来声明变 量,可以同时声明一个或几个常量,每定义 一个常量应以分号结束。说明常量时,不需 要指定其数据类型,只需给出具体的值。因 为编译器能根据常量的值自动判断常量的类 型并分配内存,对于整型常量,编译器在运 行时跟踪它的值,并不对它分配内存。如: Const a=10,编译器能自动判断a是整型, Const Pi=3.14判断Pi是实型,等等。
变量是程序代码中代表一个内存地址的标识符,而此地址中 的内容在程序代码执行时可以被改变。在使用变量前必须对 它进行说明,即对它进行命名,并说明它的类型。系统根据 变量的数据类型为每一个变量分配一定的内存空间。用户可 以通过变量名对内存单元进行读或写。
AND,ARRAY,BEGIN,CASE,CONST,DIV,DO ,DOWNTO,ELSE,END,FILE,FOR,FUNTION ,GOTO,IF,IN,LABEL,MOD,NIL,NOT, OF,OR,PACKED,PROCEDURE,PROGRAM, RECORD,REPEAT,SET,THEN,TO,TYPE, UNTIL,VAR,WHILE,WITH等
(1)标识符由字母、数字或下划线组成; (2)标识符的第一个字符必须是字母或下划线; (3)标识符的长度不应超过255个字符,否则只有前255个
字符有效; (4)不能将保留字用作标识符; (5)标识符不区分大、小写。
C++面向对象程序设计程序设
2020/10/11
2.1.2 保留字
程序如同一篇文章,由字符组成单词,再由 单词和符号构成句子――语句。Object Pascal语言中具有特殊含义的单词称为保留 字。保留字系统已使用,用户不可以用来作 为标识符。以下是Object Pascal的保留字:

第02章面向对象的Pascal语言

第02章面向对象的Pascal语言
4)枚举类型
枚举类型(enumerated)是用户自定义的一种简单数据类型, 是由一组有序的标识符组成的,最多可有255个枚举项。 枚举类型定义中的每个值都对应一个整数值的序号 ,第一个为0 从左向右依次增1。
第2章 面向对象的Pascal语言
2.2.1 简单数据类型
▲枚举类型定义和枚举类型变量声明的语法结构:
type day=(Sun,Mon,Tue,Wed,Thu,Fri,Sat); day1=Sun..Wed number=0..100;
第2章 面向对象的Pascal语言
2.2 数据类型
△使用子界类型,需注意以下几点:
(1) 子界类型的上界和下界必须是同一类型,并且是有序类型,如整型、 布尔型、字符型或枚举型等,不能是实数类型或其它无序类型。
同一个枚举项不能出现在多个枚举类型中。例:
type Month1=(Jan,Feb,Mar,Api,May,Jun); Month2=(Jun,Jul,Feb); 这两个类型Month1,Month2中都包含Jun这个元素,这是不允许的。这 两个类型Month1,Month2中都包含Jun这个元素,这是不允许的。
type 枚举类型标识符 = (枚举常量标识符列表);
var
枚举类型变量表:枚举类型标识符;
例如:
type
day=(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);
{ 以上是枚举类型定义 }
var today: day;
// 枚举变量声明
(2) 子界类型的上界和下界不仅可以是常数,也可以是能够计算出具体值 的常数表达式。例如: const n=10; m=20; type number=3*n ..5*(m+n)

第二章 Delphi面向对象的编程方法(二)

第二章 Delphi面向对象的编程方法(二)

2.1.4 跳转语句Object Pascal的跳转语句有if和case两个。

2.1.4.1 if语句if语句会计算一个表达式,并根据计算结果决定程序流程。

在上文的例程中,根据ColorDialog.Execute的返回值,决定窗体的背景颜色。

if保留字后跟随一个生成Boolean值True或False的表达式。

一般用“=”作为关系运算符,比较产生一个布尔型值。

当表达式为True时,执行then后的语句。

否则执行else后的代码,if语句也可以不含else部分,表达式为False时自动跳到下一行程序。

if语句可以嵌套,当使用复合语句表达时,复合语句前后需加上begin…end。

else保留字前不能加“;”,而且,编译器会将else语句视为属于最靠近的if语句。

必要时,须使用begin…end保留字来强迫else部分属于某一级的if语句。

2.1.4.2 case语句case语句适用于被判断的变量或属性是整形、字符型、枚举型或子界型时(LongInt除外)。

用case语句进行逻辑跳转比编写复杂的if语句容易阅读,而且程序代码整形较快。

下面的例程显示一个使用case语句的窗体:建立如下的事件处理过程:procedure TForm1.Button1Click(Sender: TObject);varNumber : Integer;beginNumber := StrToInt(Edit1.Text);case Number of1,3,5,7,9: Label2.Caption := '奇数';0,2,4,6,8: Label2.Caption := '偶数';10..100:beginLabel2.Caption := '在10到100之间';Form1.Color := clBlue;end;elseLabel2.Caption := '大于100或为负数';end;end;执行程序,当Edit1部件接受到一个值,并按动“OK”按钮触发程序后,Number便被赋值为用户输入的数值。

第2章 学好面向对象的Pascal

第2章  学好面向对象的Pascal

第2章学好面向对象的Pascal好的工具是好的开发的基石。

Object Pascal就是好的工具。

基于上一章或您已有的技巧,本章将示范每个程序都需要的面向对象技巧。

Delphi在开发工具中是个例外,它本身就是用Object Pascal创建的。

本章中包含了一些代码,它将成为每一个程序的基础。

2.1 Delphi的惯例大约25年前,C语言是当时的新事物。

那时的编译器,像C语言,是弱类型的。

变量可以被声明为指针,然后传给整型参数,反过来也可以。

例如,一个整型变量可以被赋值0,然后被粗心地赋值给char*(在C中,即指向字符的指针)变量。

原因是,编译器并不严格执行数据类型的用法,时至今日依然如此。

不管怎么说,数据只是一些数字嘛。

可问题在于,如果把整数当作指针使用,可能刚好存取到BIOS(基本输入输出)内存的起始地址,真是糟糕透顶。

另一个有害的问题是全局变量。

如果不作检查,大多数人都记不住在一个月之前声明的变量的数据类型;当变量在其他人的代码中,更是如此。

过了几年之后,数百万的美元被浪费在跟踪与全局变量和误用整数及指针相关的程序错误,这时,解决方案出现了。

20世纪80年代早期,微软公司从施乐公司帕洛阿尔托研究中心雇佣了一位匈牙利人Charles Simonyi,他以发明了匈牙利命名惯列并使之流行而著称。

匈牙利命名惯列建立了一组前缀,用以识别变量的数据类型。

这意味着程序员通过看前缀,可以避免整数与指针的误用。

例如,用于存储零结尾字符串的char*变量可能会有前缀sz。

即使是刚起步的程序员也只需记住sz的意思是零结尾字符串(或字符串以零结尾)。

如果全局变量是有前缀的,而您又能够记住lpsz的意思,那么要决定变量的类型可能并不需要找出其声明。

提示或隐含的指导是有益的,但扪心自问一下:有多少人无视停车标志,在州际高速公路上车距过小或吸烟。

取决于您对“California stop”、three-second规则、吸入致癌物质的态度,您可能会忽略其中几项隐含的警告。

Delphi数据库程序设计教程 第2章 Pascal语言基础

Delphi数据库程序设计教程 第2章  Pascal语言基础


Delphi能在var块中对全局变量赋初值,这里有一些例子演示:
var i:Integer=10; S:String='Hello World'; D:Double=3.141579;

能赋初值的变量仅是全局变量,不是那些在过程或函数中局部变量,而且 Delphi编译器自动对全局变量赋初值。当程序开始时,所有的整型数赋为0, 浮点数赋为0.0,指针为null,字符串为空等等,因此,在源代码中不必对全局 变量赋零初值。
type TWeekDay=Set of 1..7; var WeekDay:TWeekDay; begin WeekDay:=[1,3,5,6]; end;


注意Pascal编辑程序限制了集合数目,所以整型数据不能作为集合类型的基类 型。而只能是整型子界。基类型必须是有序类型,所以实型、数组类型不能 作为集合类型的基类型。
@、not、^、*、/、div、mod、and、shl、shr、as、+、-、or、xor、=、>、<、<>、 <=、>=、in和is等。




按照操作数数目的多少来分,运算符分为下面两类:单目运算符(Unary Operator)和双目运算符(Binary Operator)。上面的@、not和^为单目运算符, 其余的为双目运算符。其中+和-也可以作为单目运算符来使用。 单目运算符一般放在操作对象的前面,只有^可以放在操作对象的后面。双目 运算符都放在两个操作数之间。 有些运算符是根据给定的操作数的数据类型做相应处理的。例如,运算符not 对于整型的操作数说,做的是按位取反;对于逻辑类型的操作数来说,它完成 的则是逻辑取反。 除了运算符^、is和in外,其余操作符都可以对Variant类型的数据进行操作。

Object Pascal语言

Object Pascal语言

和or作为逻辑与和逻辑或运算符,而C语言使用 &&和
| |
| |
作为逻辑与和或的运算符。
与和或最常用的是作为if语句或循环语句的一部分,就像下面两个例子演示的:
Pascal的逻辑非的运算符是 not,它是用来对一个布尔表达式取反,相当与 C语言中的!运算符, 它同样也经常作为 if语句的一部分,示例如下:
2.5 运算符
运算符是在代码中对各种数据类型进行运算的符号。例如,有能进行加、减、乘、除的运算符, 有能访问一个数组的某个单元地址的运算符。本节将介绍各种 Pasical运算以及这些运算符跟 C和Visual B a s i c运算符的区别。
2.5.1 赋值运算符
如果你是 Pasical的新手, Delphi的赋值运算符可能是你最不习惯的事情之一。为了给一个变量赋 值,用:=运算符,而不像在 C或Visual Basic中用 = 运算符。Pascal程序员称它为获得运算符或赋值运 算符,下列表达式:
当然,这个特性看上去作用不是很大,但是它对于那些同时使用 C++或Java(需要圆括号)的程序员 来说特别有用。假如不能把时间全都花在 Delphi上,这个特性使你没必要记住在不同语言之间不同的 函数调用规则。
2.2.2 重载
Delphi4引进了函数重载的概念 (多个过程和函数有相同的名字,但有不同的参数列表 )。所有需要 重载的方法都需要声明,并用 overload来指示,示例如下:
if not ( condition) then ( do something); // 如果条件错则... 表2-1是一个简明参考表,列出了Object Pascal、C/C++和Visual Basic 的运算符。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档