收藏 分享(赏)

《Delphi 2005程序设计及其应用开发》-第2章 Object Pascal程序设计语言.ppt

上传人:11xg27ws 文档编号:8694025 上传时间:2019-07-07 格式:PPT 页数:54 大小:268.50KB
下载 相关 举报
《Delphi 2005程序设计及其应用开发》-第2章  Object Pascal程序设计语言.ppt_第1页
第1页 / 共54页
《Delphi 2005程序设计及其应用开发》-第2章  Object Pascal程序设计语言.ppt_第2页
第2页 / 共54页
《Delphi 2005程序设计及其应用开发》-第2章  Object Pascal程序设计语言.ppt_第3页
第3页 / 共54页
《Delphi 2005程序设计及其应用开发》-第2章  Object Pascal程序设计语言.ppt_第4页
第4页 / 共54页
《Delphi 2005程序设计及其应用开发》-第2章  Object Pascal程序设计语言.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

1、第2章 Object Pascal程序设计语言,本章要点 2.1 基本字符和符号 2.2 常量与变量 2.3 数据类型 2.4 运算符 2.5 语句 2.6 过程与函数 结束,本章要点,常量与变量的定义和使用。数据类型的概念与使用。运算符的概念与使用。Object Pascal语言的语句、过程和函数。,返回本章首页,2.1 基本字符和符号,1Object Pascal的字符集 2特殊字符 3标识符:用于表示常量(Const)、变量(Var)、类型(Type)、属性(Property)、过程(Procedure)、函数(Function)等语法成分的名称。 4保留字,5指令字 6数字 7标号 8

2、字符串,返回本章首页,表征符:特殊符(Special Symbols),标识符(Identifiers),保留字(Reserved Words),指令字(Directives),数字(Numerals),标号(Lables)和字符串(Character Strings)。 分隔符:空格、程序注释,2.2 常量与变量,常量和变量都是存储数据的载体。在程序执行期间,常量的值不会发生改变,而变量的值则常常随程序的执行而发生变化。 2.2.1 声明常量 2.2.2 声明变量 2.2.3 变量的作用域,返回本章首页,2.2.1 声明常量,1纯常量:是一种预先定义的标识符,其值在定义后永远不会改变。例如:

3、ConstDate=31;Pi=3.14159;Name=Peter; 2类型常量:用于保存数组、记录、过程以及指针等类型的值。类型常量不能出现在常量表达式中。声明类型常量的语法规则为: Const Identifer:Type=Value 例如:Const Max:Integer=200;,返回本节,2.2.2 声明变量,变量是程序代码中代表一个内存地址的标识符,而此地址的内存内容在程序代码执行时可以被改变。在所有变量说明以前加上保留字Var。变量说明左边是变量的名称,右边则是该变量的类型,中间用冒号隔开。例: VarScore : Integer;Name : String; 在声明变量时

4、注意:一是变量名要符合Pascal语言关于标识符的规则;二是必须指定变量的类型,三是尽量使定义的变量或标识符有意义,以便于记忆。例如:用Year,Month,Day来表示年、月、日,比用A,B,C表示要好。 例如:,返回本节,Procedure Tform1.Add1click(Sender:Tobject); VarX,Y:Integer; BeginX:=30;Y:=70;Edit1.Text:=IntToStr(X+Y); End;,返回,2.2.3 变量的作用域变量分全局变量和局部变量 ,例如: implementation varFirstString : string; /全局变量

5、 $R *.nfm procedure TForm1.FormCreate(Sender: TObject); beginFirstString := Hello ; /全局变量可以被内部过程访问 end; procedure TForm1.Edit1Change(Sender: TObject); varAddString : string; /局部变量 beginAddString := Edit1.Text; /局部变量只能在本过程内访问Label1.Caption := FirstString + AddString; /全局变量可以被内部过程访问 end;,返回本节,2.3 数据类型

6、,2.3.1 简单类型 2.3.2 字符串类型 2.3.3 结构数据类型 2.3.4 变体类型,返回本章首页,2.3.1 简单类型,1有序类型 (1)整数类型;分一般整数类型和基本整数类型两种。 一般整数类型:分Integer和Cardinal ; 基本整数类型:Shortint,Smallint,Longint,Int64,Byte,Word和Longword。详见表2-2 基本整数类型 。 (2)字符类型;分Char,AnsiChar,WideChar (3)布尔类型;(如表2-4所示); (4)枚举类型;举例说明 (5)子界类型;举例说明 2实数类型:也称浮点类型,包括如下6种: Rea

7、l48、Single、Double、Extended、Comp、Currency通常使用的Real和Double类型是等价的。 3 日期时间类型(TDateTime ) 举例说明,返回本节,表2-4 布尔类型,返回,Type Tweek=(Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday); Tcolor=(Red,Yellow,Blue); Var DayOfWeek:Tweek; Hue:Tcolor; 也可以把类型声明和变量声明合二为一,例如: Var DayOfWeek:=(Monday,Tuesday,Wednesday

8、,Thursday,Friday,Saturday,Sunday);,返回,TypeTHours=023;TValidLetter=AF; Tdays=(Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday);TWorkday= MondayFriday; 上面枚举型的子界型 例: procedure TForm1.Button2Click(Sender: TObject); TypeTHours=023; varabc:THours; beginabc:=23;EDIT1.Text:=IntToStr(abc); end;,返回,在

9、Delphi中,TDateTime的默认数据格式是:yyyy-mm-dd,当然也可以用浮点数来表示。如以下例子中myDate := 35065;与myDate :=1996-1-1; 两个语句是完全等价的。 procedure TForm1.Button1Click(Sender: TObject); VarmyDate :TDateTime; beginmyDate := 35065; /与myDate :=1996-1-1;等价 ShowMessage( DateToStr(myDate) ); /显示信息1996-1-1 end;,返回,2.3.2 字符串类型,Delphi主要支持三种类

10、型的字符串(详见表2-6 ): ShortString、AnsiString和WideString ShortString数据类型主要是为了能和Delphi 1.0和Borland Pascal的早期版本兼容。 String既可以是ShorString类型也可以是AnsiString类型,缺省是AnsiString类型。例如: Var S:String;/S Is An AnSiString 编译器会假定你要创建一个AnsiString数据类型变量。 WideString由WideChar字符组成,其功能与AnsiString类似,但在.NET框架下,它是默认的字符串类型,返回本节,2.3.3

11、 结构数据类型,1、集合类型:举例说明 2、数组类型:分一维数组、多维数组、动态数组举例说明 3、记录类型:举例说明 4、文件类型 5、类类型 6、类引用类型 7、接口类型等,返回本节,在一个按钮的OnClick事件句柄中加入如下语句: procedure TForm1.Button1Click(Sender: TObject);,返回,集合类型举例,/整数型集合 typeTLetter=set of Byte; varLetters:TLetter; beginLetters:=22,33,44,55;if StrToInt(Edit1.Text) in Letters then Label

12、2.Caption:=符合输入elseLabel2.Caption:=不符合输入; end;,/字符型集合 typeTLetter=set of Char; varLetters:TLetter; beginLetters:=a,e,i,o,u;if Edit1.Text1 in Letters thenLabel2.Caption:=输入的是元音elseLabel2.Caption:=不是元音字母; end;,定义一个二维数组: TypeTmattic=array18,18 of Integer; VarMattic: Tmattic; 使用for循环为数组的所有数据赋初值1: VarCol

13、,Row:Integer;for Col:=1 to 8 dofor Row:=1 to 8 doMatticCol,Row:=1;,返回,数组类型举例,TypeTEmployee=RecordName:String20;EmpNo:Integer;Salary:Double;End; 下面声明记录类型的变量:varEngineer: TEmployee; 下面的语句给整个记录赋值:begin Engineer.Name:=李宁;Engineer.EmpNo:=960344;Engineer.Salary:=8600.00;end;,记录类型举例,procedure TForm1.Button

14、1Click(Sender: TObject); TypeTEmployee=RecordName:String20;EmpNo:Integer;Salary:Double;End; /下面声明记录类型的变量:varEngineer: Temployee; /下面的语句给整个记录赋值: beginwith Engineer dobeginName:=李宁;EmpNo:=960344;Salary:=8600.00;end;Label1.Caption:= Engineer.Name; end;,返回,记录类型举例,2.3.4 变体类型,变体类型就是在运算时能动态改变数值的数据类型。例如: va

15、r V1, V2, V3: Variant; I : Integer; S : String; Begin V1 :=1; /V1表示整数 V2 := 1234.45; /V2表示实数 V3 := V1+V2; /V3表示实数 V2 := Hello; /V2表示字符串 S= V2; end;,返回本节,2.4 运算符,2.4.1 算术运算符 2.4.2 逻辑运算符 2.4.3 位运算符 2.4.4 关系运算符 2.4.5 运算符的优先级,返回本章首页,2.4.1 算术运算符,算术运算符用于完成二元或一元算术运算。 (见表2-7和表2-8 ),表2-2 二元运算符,表2-3 一元运算符,返回本

16、节,2.4.2 逻辑运算符,逻辑运算符(见表2-9 ),表2-9 逻辑运算符,返回本节,2.4.3 位运算符,位运算符可按位级对操作数进行移位、比较等操作。从形式上看,部分位运算符与逻辑运算符是一样的,但它们的操作数类型和返回结果不同。位运算符只能对整型数进行操作,其返回的结果也是整型。位运算符和其操作数以及运算结果的数据类型如表2-10所示。,表2-10 位运算符,返回本节,2.4.4 关系运算符,关系运算符用于比较两个变量的值,表2-11列出了Object Pascal的关系运算符及其运算数类型和运算结果的数据类型。,表2-11 关系运算符,返回本节,2.4.5 运算符的优先级,表2-12

17、 运算符的优先级,返回本节,2.5 语句,补充:注释语句 用 或 * * 将注释正文括起来 用 / 注释一行。 2.5.1 赋值语句 2.5.2 块语句 2.5.3 With语句 2.5.4 分支语句 2.5.5 循环语句,返回本章首页,2.5.1 赋值语句,下面的例子就是一个最简单的赋值语句:X:=Y+Z; procedure TForm1.Button1Click(Sender: TObject); begin edit1.Text:=欢迎使用delphi2005; end;在赋值语句的左边是赋值的数据变量或属性,右边是一个数值或者表达式,中间用赋值运算符“:=”连接。,返回本节,2.5.

18、2 块语句,块语句是一种把若干简单语句组合成复杂语句的方式。经常使用的块语句是BeginEnd语句,下面的例子就是一个简单的块语句:BeginA:=5;C:=A*8/2;End;,返回本节,2.5.3 With语句,With语句的作用是简化对记录的字段或对对象的字段、属性、方法的引用,例如: type TDate = recordDay: Integer;Month: Integer;Year: Integer;end; varOrderDate: TDate; 我们可以通过With语句来引用OrderDate变量的各个字段: with OrderDate doif Month = 12 th

19、enbeginMonth := 1;Year := Year + 1;endelseMonth := Month + 1;,返回本节,2.5.4 分支语句,分支语句又称条件语句,它可根据指定的条件来决定程序该执行哪些语句,或跳过哪些语句。分支语句主要有如下几种: If语句:举例说明 Case语句:举例说明 GOTO语句:举例说明 Break / Continue语句要退出循环,可以使用Break语句 Exit / Halt语句Exit语句导致程序的终止 ;Halt语句强制终止程序,并返回操作系统,返回本节,if 语句举例,procedure TForm1.Button1Click(Sender

20、: TObject); varScore : 0100; BeginScore := StrtoInt(InputBox(输入, 输入成绩, 57); /在弹出的消息框中输入成绩if Score =60 thenShowMessage (恭喜你及格了) /弹出“恭喜你及格了”的信息框elseShowMessage (很遗憾,不及格,尚需努力); /弹出“很遗憾不及格”的信息框 end;,返回,Case语句举例,procedure TForm1.Button1Click(Sender: TObject);VarNumber:Integer;beginNumber:=StrToInt(Edit1.

21、Text);Case Number Of050:Label1.Caption:=小于等于50;51100:Label1.Caption:=大于50;ElseBeginLabel1.Caption:=数值不在0至100之间。;End;End;end;,返回,GOTO语句举例,procedure TForm1.Button1Click(Sender: TObject);label Hello; /标号声明语句Var Today, Birthday : TDateTime; beginToday := Date;BirthDay := 1981-01-22;if Today = Birthday t

22、henGoto Hello;ShowMessage (Happy World); /显示“Happy World”信息框Exit; Hello: ShowMessage (Happy Birthday); /标号标识语句 end;,返回,2.5.5 循环语句,循环语句是在一定条件下重复执行某些语句的程序结构。在Object Pacsal中,循环语句主要有以下三种类型: Repeatuntil循环语句 :举例说明 Whiledo循环语句 :举例说明 Fordo循环语句 :举例说明Forindo循环语句:举例说明在Delphi 2005中,还针对Delphi for .NET以及Delphi fo

23、r Win32应用程序而新增加了Forindo循环语句。,返回本节,Repeatuntil循环语句举例,procedure TForm1.Button1Click(Sender: TObject);VarI:Integer;beginI:=0;RepeatI:=I+1;ListBox1.Items.Add(IntToStr(I);Until I=10;end;,返回,Whiledo循环语句举例,procedure TForm1.Button1Click(Sender: TObject); VarI:Integer;beginI:=0;While I10 DObeginI:=I+1;ListBo

24、x1.Items.Add(IntToStr(I);end;end;,返回,Fordo循环语句举例,procedure TForm1.Button1Click(Sender: TObject); VarI:Integer;beginI:=0;for I:=1 to 10 DObeginListBox1.Items.Add(IntToStr(I);end;end;,返回,Forindo循环语句举例,typeTCharSet = set of Char; /定义一个集合类型varCharSet: TCharSet; /声明一个集合变量C: Char; /声明一个字符型变量 procedure TFo

25、rm1.Button1Click(Sender: TObject);BeginCharSet := #0#255; /给集合变量赋值for C in CharSet dobegin/对CharSet集合中的每一个元素进行操作Memo1.Text := Memo1.Text + C;end; end;,返回,2.6 过程与函数,模块化程序设计思想及标识符的作用 模块从大到小:单元模块过程或函数模块 2.6.1 过程与函数的声明和定义 2.6.2 过程与函数的调用 2.6.2 过程与函数的参数传递 函数定义与调用举例 过程调用时Forward使用举例,返回本章首页,2.6.1 过程与函数的声明和定

26、义,1过程与函数的声明 过程或函数使用前首先要声明,声明的位置一般在程序的Type部分。声明过程时要用保留字Procedure,声明内容包括过程名及形式参数类型。所谓形式参数指的就是过程和函数声明或定义时所使用的参数,它与过程和函数调用时的实际参数(也称实参)相对应。过程声明的一般形式为: Procedure 过程名(); 过程名后面可以带参数,也可以没有参数。如果有多个参数,则参数之间用分号隔开。如果没有参数,在过程名后面直接加分号即可。 例如: Procedure MyProc (Name: string; Age: Integer); 函数的声明与过程类似,不同的是声明函数要用保留字Fu

27、nction,而且在函数名和参数列表后面要指出函数返回值的类型。函数声明的一般形式为: function 函数名():函数返回值类型; 例如: function Myfunc (X,Y,Z: integer): integer;,2过程与函数的定义 过程和函数声明完以后,还需要在程序的Implementation部分对其进行定义。 例如: implemention Procedure MyProc (Name: string; Age: Integer); var Mystr: string; beginMystr := Name: +Name+ + Age:+ InttoStr(Age);S

28、howMessage(Mystr); /将字符串的内容在信息框中显示出来 End; function Myfunc (X,Y,Z: integer): integer; beginResult :=X+Y+Z; end;,返回本节,过程和函数的调用有些不同。过程的调用可通过一个独立的语句来完成,其格式为: 过程名(实参列表); 例如我们可以通过以下语句直接调用上述例子中的MyProc过程 MyProc ( LiMing, 37 ); /调用MyProc过程,显示“Name:Liming Age:37”信息框 而函数调用语句不是一个独立的语句,它必须有一个返回值,且返回值的数据类型必须与定义相同

29、。因此,函数调用语句通常出现在赋值语句的右侧或某个表达式中,也可作为过程或函数的实参出现在过程或函数的调用语句中。例如: Sum := MyFunc(3,4,5); Edit1.Text := IntToStr(MyFunc(3,4,5);,2.6.2 过程与函数的调用,返回本节,2.6.3 过程与函数的参数传递,在过程或函数定义时使用的参数称为形参,而在过程或函数调用时使用的参数称为实参。实参和形参需要相互对应,即两者在数目、类型上要完全一致。另外,形参一般为变量,而实参可以为常量、变量或表达式;当实参数目达到二个以上时,各实参之间须用逗号分隔,而不能像形参那些用分号隔开。 1传值参数 传值

30、参数是指在过程或函数调用中,向形参传递的只是实参的副本,而不是实参本身,因此在过程内无论如何对传递的参数进行修改,都不会对实参本身产生任何影响。在过程或函数定义中,若参数前不加任何的保留字,即为传值参数。例如: Function MathCalculate(CalcNo:Integer):Integer; BeginCalcNo:= CalcNo * 5;Result := CalcNo; End; Procedure TForm1.Button1Click(Sender: Object); VarNum, Value :Integer; BeginNum := 10;Value := Mat

31、hCalculate(Num);Edit1.Text := IntToStr( Num);Edit2.Text := IntToStr( Value); End;,2引用参数 在过程或函数定义中,若参数前加了保留字Var,即表示该参数为引用参数。与传值参数不同的是,引用参数在传递时,允许被调用过程或函数改变它们的值,即在过程或函数调用中,引用参数的值发生变化,实参的值可会发生相应变化。为了验证这一点,我们可将上例中的MathCalculate函数修改如下: Function MathCalculate(var CalcNo:Integer):Integer; BeginCalcNo:= Cal

32、cNo * 5;Result := CalcNo; End; 程序运行后,点击窗体上的Button1按钮,编辑框Edit1和Edit2内显示的值全变为50,这说明在调用函数MathCalculate后,Num的值也发生了变化,变成了原值的5倍。,3常量参数 在过程或函数调用中,如果不允许形参的值做任何改变,这时就需要使用常量参数了。常量参数的主要体现是在参数前加了保留字Const。例如上例中,若将函数MathCalculate的参数CalcNo变成常量参数,这时,若在函数中对该参数的值做任何修改都会导致编译错误。 Function MathCalculate(const CalcNo:Inte

33、ger):Integer; BeginCalcNo:= CalcNo * 5; /会导致编译错误Result := CalcNo; End;,返回本节,Function Numb(N:integer):Integer;beginif N=0 thenNumb:=-1elseNumb:=N*N;end;procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption:=IntToStr(Numb(StrToInt(Edit1.text); end;,函数定义与调用举例,返回本节,procedure Test2(Var y:I

34、nteger);Forward; procedure Test1(Var x:Integer); begin x:=x-1; if x0 ThenbeginShowmessage(整数减1的结果为: +IntToStr(x);Test2(x);end elseShowmessage(整数减1的结果小于等于0,结束); end;procedure Test2(Var y:Integer); begin y:=y div 2; if y0 Thenshowmessage(再整除2的结果为: +IntToStr(y); end;,过程调用时Forward使用举例,返回本节,Thank You Very Much!,本章到此结束, 谢谢您的光临!,结束放映,返回本章首页,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报