第2章ObjectPascal程序设计语言课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第2章ObjectPascal程序设计语言课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ObjectPascal 程序设计语言 课件
- 资源描述:
-
1、第第2章章 Object Pascal程序设计语言程序设计语言 2.1 控制台程序2.2 注释2.3 标识符与关键字2.4 基本数据类型2.5 复杂数据类型2.6 常量与变量2.7 运算符与表达式2.8 语句2.9 过程与函数2.10 消息框过程和函数2.1 控制台程序控制台程序 控制台程序是指一些没有图形用户界面的32位Windows应用程序,通常在控制台窗口中运行,也就是在类似以前的DOS环境下运行。这些程序很少要求用户输入大量的信息,一般只实现有限的特定的功能。如Windows目录下的Ping.exe等。控制台程序的代码比较小,一般在几十千字节左右,占用的系统资源少。在开发阶段,编译、链
2、接的速度比较快。在学习计算机语言的过程中,可以上机编写一些短小的控制台程序进行练习。所以我们利用它可以方便学习和掌握Object Pascal语言。控制台程序相关文件少。最少情况下可以只有一个工程文件(.dpr)和一个可执行文件(.exe)。下面我们通过一个具体的例子进行讲解:实例讲解【例2.1】创建一个控制台程序。1)创建指定目录下新建一个“控制台”文件夹。2)在Delphi集成开发环境中,通过菜单【File】|【New】打开【New Items】对话框,选中【New】标签中的【Console Application】项,如图2-1所示,按下【OK】按钮。系统会自动创建一个控制台程序的工程,
3、并在代码编辑窗口中打开Project1.dpr文件。3)通过菜单【File】|【Save All】将工程文件保存在创建的目录中。本章后面的例程都可以利用本工程来方便地实现。4)现在可以编译、链接和运行程序,将顺利生成一个可执行程序,只是该程序不做任何工作就退出了。5)修改文件Project1.dpr中的程序。6)编译、链接和运行程序,测试效果。在程序提示“请输入一行文字:”后,输入“Hello World!”。运行结果界面如图2-2所示。Read和Write函数1)Read功能:read在DOS屏幕下通过键盘读入n个数据,并将这些数据赋值给n个变量。各个数据之间可以通过指定字符,如果没有指定字
4、符用空格字符或用回车符分隔。用法与C语言的scanf函数用法相似。格式:read(V1,V2,.,Vn)说明:V1可以是基本数据类型的变量,也可以是字符常量。例如:var a,b:integer;read(a,b);/读入2个整型数据,并将这2个整型数据赋值给a、b这两个变量。在DOS屏幕下输入1 2回车后,a的值是1,b的值是2。2)write功能:write在DOS屏幕下输出n个数据,并将这些数据赋值给n个变量。格式:write(P1,P2,.,Pn)说明:P1可以是基本数据类型的变量,也可以是字符常量。例如:var a,b:integer;a=1;b=2;write(a,b);/输出a、
5、b两个整型变量的数据。3)readln功能:readln与read的功能相似,只是在最后多读入一个回车符。格式:readln(V1,V2,.,Vn)4)writeln功能:writedln与write的功能相似,只是在输出的后面多输出一个回车符。格式:writeln(V1,V2,.,Vn)注意:这4个函数只能在DOS环境下使用。2.2 注释 Object Pascal语言中的注释有下面三种形式:组合符号“”与“”的成对使用表示它们之间的内容为注释部分。组合符号“(*”与“*)”的成对使用表示它们之间的内容为注释部分。符号“/”的单个使用表示所在行的该符号之后的内容为注释。注意:注释符“”与“”
6、、“(*”与“*)”在使用时不支持注释的嵌套,而且必须成对使用。建议对于单行和少量几行的注释使用符号“/”,对于大块注释使用“”和“”或“(*”和“*)”。有时可以利用注释在代码中形成一个醒目的标志。比如利用注释符号形成一个矩形方框,在其中可以添加一些重要的说明文字。在注释符“”或“(*”后紧接着的是一个美元符号“$”时,表示该句是一个编译器指令,它与普通的注释不同,通常用来对编译过程进行设置。比如前面的例2.1中的第二句就是一个编译器指令。由于Delphi集成开发环境中的代码编辑器在显示不同类型的代码时通过使用不同的颜色来加以区别,所以在编程的过程中,只要注意文件中代码的颜色,一般就不会错误
7、地使用注释符了。2.3 标识符与保留字标识符与保留字2.3.1 标识符的组成和作用 在Object Pascal语言中使用的是ASCII码字符集,包括英语字母A.Z、a.z、数字0.9和其他的一些标准字符。下面的单个字符作为特殊符号存在:#$&()*+,?./:;另外,有些字符对也作为单个的特殊符号存在,具体有:(*(.*).)./:=其中,左中括号“”等价于“(.”,右中括号“”等价于“.)”,左大括号“”等价于“(*”,右大括号“)”等价于“*)”。标识符可以由任意长的一个不带空格的字符串组成,但是只有前面的255个字符有效。标识符的第一个字符必须是字母或下划线,其余字符可以是字母、数字或
8、下划线。下面是一些正确或错误标识符命名的实例。正确形式错误形式 count123count test123 14_count timenew$123 _123 abc 123 一般标识符可以由一个或多个具有适当意义的英文单词组成。Pascal语言对于字母的大小写不敏感。当然,字符串中的大小写字母是需要分清的。在编写程序的时候要保持一定的风格,不要有时候全部大写标识符,另一些时候又实行大小写混写。标识符是用来对常量、变量、函数标号和其他用户定义对象等进行命名的。在程序设计语言中,程序中的数据定义、流程控制语句等都是由标识符组成的。2.3.2 保留字和指令字 在标识符中,有一些是系统已经使用的,它
9、们已有特定的含义,用户不能再用它们对自己定义的量命名。下面我们来学习下Object Pascal的保留字。Object Pascal语言本身使用的一组标识符亦称为保留字,你必须了解它的含义,以便于正确的使用,否则会造成错误。Object Pascal语言定义了65个保留字,这些保留字不能被定义为标识符。2.4 基本数据类型基本数据类型2.4.1 整型 整型数据(integer)用来存放整数。Object Pascal支持五种预定义整型,它们是shortint(短整型)、smallint(整型)、longint(长整型)、byte(字节型)、word(字类型)和longword(双字型),每一种
10、类型规定了相应的整数取值范围以及所占用的内存字节数。它们的特性如下表2-3所示。实例讲解【例2.2】将输入一个整数值并把它输出到屏幕上。program Project1;$APPTYPE CONSOLEvarx:integer;begin writeln(请输入一个整数:);readln(x);writeln(你输入整数的是:,x);/下面的代码是为了在按下回车键前始终显示运行界面 writeln(按下回车键退出。);readln;end.2.4.2 实型实型数据(real)用类存放实数。Object Pascal支持五种预定义实型,它们是real(基本实型)、single(单精度实型)、do
11、uble(双精度实型)、extended(扩展实型)、comp(装配实型)和currency(货币实型),每一种类型规定了相应的实数取值范围、所占用的内存字节数以及它们所能达到的精度。类型 数值范围 占字节数 有效位数Real 2.910-391.71038 6 1116Single 1.510-453.41038 4 78Double 5.010-3241.710308 8 1516Comp -263+1263-1 8 19202.4.3 布尔型 布尔型(boolean)数据用来存放逻辑值(布尔值)。布尔型的值只有两个:false和True,并且false的序号是0,True的序号是1。fa
12、lse 和True都是预定义常数标识符,分别表示逻辑假和逻辑真。boolean是布尔型的标识符。2.4.4 字符型 字符型(character)用char作为标识符。字符型必须用单引号“”括起来,字母作为字符型时,大小写是不等价的,并且字符型只允许单引号中有一个字符,否则就是字符串。字符型是ASCII字符的集合,包括2种类型:标准字符和宽字符。AnsiChar是传统的Pascal语言的字符,是标准的一字节的ANSI字符;WideChar用于保存单个两字节的Unicode字符。Unicode字符集的前256个字符与ANSI字符集相同。一般的Char表示一个AnsiChar字符。2.4.5 枚举类
13、型 枚举类型(enumerated)是由一组有序的标识符组成的,形式如下:type typeName=(标识符1,标识符n);通过预定义列出所有值的标识符来定义一个有序集合,这些值的次序和枚举类型说明中的标识符的次序识一致的。例如:type Weektype=(Sun,Mon,Tue,Wed,Thur,Fri,Sat);枚举元素只能是标识符,而不能是数值常量或字符常量。不要把作为枚举元素的标识符视作变量名,它不能被赋值。同一个枚举元素不能出现在两个或两个以上的枚举类型定义中。2.4.6 字界类型 子界类型(subrange)为某个有序类型的子集。例如开始定义了一个表示颜色的枚举类型:type
14、TColors=(Red,Blue,Green,Yellow,Orange,Purple,White,Black);接着就可以定义一个子界类型如下:type TMyColors=Green.White;其中TMyColors包括了Green、Yellow、Orange、Purple和White。2.5 复杂数据类型复杂数据类型 结构类型(Struct)包括集合类型(set)、数组类型(array)、记录类型(record)、文件类型(file)、类类型(class)、类引用类型(class reference)和接口类型(interface)等。2.5.1 集合类型 集合类型(set)由有序类
15、型的一些数值组成。定义方法如下:set of 基类型 例如:type TSomeInts=1.250;/基本类型为有序类型 TIntSet=set of TSomeInts;/定义集合类型 TACopyOfByte=set of Byte;TSuit=set of(Club,Diamond,Heart,Spade);TACopyOfChar=set of Char;2.5.2 数组类型 数组类型(array)的数据为某一类相同类型的元素按一定的顺序组成的序列,包括静态数组和动态数组两种。1静态数组的定义方式如下:array 下标下限.下标上限 of 基类型 例如:var MyArray:arr
16、ay 1.100 of Char;/一维数组 type TMatrix=array 1.10 of array 1.50 of Real;/两维数组 type TMatrix=array 1.10,1.50 of Real;/与上面的两维数组相同2动态数组的定义方式如下:array of 基类型例如:var a:array of Real;/定义动态数组可以通过过程SetLength来为动态数组指定空间大小,例如:SetLength(a,20);/为动态数组指定空间大小其中数组a的索引值为0.19。2.5.3 记录类型 记录类型(record)可以由不同类型的元素组成,这些元素称为域。在记录类
17、型中为每个域指定了一个名称和数据类型。数据类型可以是Object Pascal语言中预定义的类型,也可以是程序员自定义的类型。记录类型的定义方式如下:type 标识符=record 域1:数据类型;域n:数据类型;end;实例讲解【例2.3】该例说明了记录类型的定义与使用,同时也对with语句进行了说明。program Project1;$APPTYPE CONSOLE type TDateRec=record/记录类型的定义 Year:integer;Month:(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec);Day:1.31;end;va
18、r Record1,Record2:TDateRec;/记录类型变量的声明begin Record1.Year:=1975;/给记录中的域赋值 Record1.Month:=Sep;Record1.Day:=13;with Record1 do/使用with语句可以简化代码的输入 begin Year:=1973;/相当于Record1.Year:=1973;Month:=Jul;Day:=21;end;Record2:=Record1;/对记录进行拷贝with Record1 dobegin writeln(format(%d年%d月%d日,Year,7,Day);end;writeln(按
19、下回车键退出。);readln;end.运行结果如图2-4所示:2.6 常量与变量常量与变量2.6.1 常量 常量存储的是在程序中不能被修改的固定值。常量定义出现在说明部分。它的语法格式如下:const=;=;常量标识符的类型由定义它的常量的类型决定。例如:const a=12 隐含说明a是整型;const r=3.21隐含说明r是实型 常量定义部分必须以保留字const开头,可以包含一个或几个常量定义,而且每个常量均以分号结束。2.6.2 变量变量存储的是在程序中可以修改的值。变量具有三个基本要素:名字、类型和值。Object Pascal的每一个变量都具有一种类型,变量的类型决定了变量的数
20、据性质和范围、变量存储在内存中所占的大小(字节数)以及对变量可以进行的合法操作等。1变量声明格式一个变量由标识符、类型和可选的初始化共同定义的。变量声明格式如下:var变量标识符列表1:类型1;变量标识符列表2:类型2;变量标识符列表n:类型n;其中,保留字var表示开始一个变量说明部分。变量标识符列表是一个用逗号隔开的标识符序列,冒号后面的类型是类型标识符。每个变量说明均以分号结束。例如:vara,b,c:integer;m,n:real;2变量初始化在声明变量的同时也可以对变量进行初始化,即赋初值。格式如下:var 变量标识符:类型=常量表达式;例如:var i:integer=7;相当于
21、声明和语句 var i:integer;i:=7;同时声明多个变量(比如var x,y,z:Real;)时不能包括初始化,variant 和文件类型的变量声明也不能初始化。2.7 运算符和表达式运算符和表达式2.7.1 运算符 运算符是在代码中对各种数据类型进行运算的符号。例如,有能进行加(+)、减(-)、乘(*)、除(/)的运算符,有能访问一个数组的某个单元地址的运算符()。按照操作数数目的多少来分,运算符分为下面两类:单目运算符(Unary Operator)和双目运算符(Binary Operator)。例如算术运算符的+、-、*和/为双目运算符,+(正)和-(负)为单目运算符来使用。单
22、目运算符一般放在操作对象的前面,只有指针运算符()可以放在操作对象的后面。双目运算符都放在两个操作数之间。Object Pascal语言中主要的运算符有:算术运算符、逻辑运算符、关系运算符、布尔运算符、字符串运算符、集合运算符、地址运算符等。本节将主要学习这些运算符的功能、性质及其优先级。1算术运算符 算术运算符与普通数学中的运算符意义相同。它们的操作数可以是整型或实型,包括+、-、*、/、div 和 mod等。以下规则适用于算术运算符:不管x 和y 的类型是什么,x/y 的结果总是扩展类型(extended);对其它运算符,只要有一个运算数是实数类型,它的结果就是扩展类型;另外,只要有一个运
23、算数是Int64 类型,它的结果就是Int64 类型;否则,结果就是整数类型。如果一个运算数是整数的子界类型,它就像整数类型一样被对待。x div y 的值取整数,也就是取得x/y 的值,然后以0 的方向取得最近的整数。mod 运算返回对运算数进行整数除后得到的余数。换句话说,就是x mod y=x-(x div y)*y。若y 为0 的话,表达式x/y、x div y 和x mod y 将发生运行时错误。2逻辑运算符 逻辑运算符对逻辑类型的操作数进行运算,数据结果也为逻辑类型,如表2-8所示。3关系运算符 关系运算符用来比较两个运算数。=、=也用作集合运算符,=和 也用作指针运算符。对大多数
24、简单类型,比较运算非常容易理解。比如,只有i 和j 有相同的值,i=j 才是真,否则ij为真。下面的规则适用于关系运算符:除了实数和整数能一起比较外,两个运算数必须是兼容的类型;对字符串进行比较,是依据它的每个字符在扩展ASCII 字符集中的顺序,字符类型被当作长度为1 的字符串;两个packed string 要进行比较,它们必须具有相同数目的元素;一个具有n 个元素的packed string与一个字符串比较时,它被看作长度为n 的字符串;只有当两个PChar 指针都指向同一个字符数组的范围内时,、=运算符才能作用于它们;运算符=和 能以类或类引用类型作为运算数。当用于类类型时,=和 的计
25、算规则与指针一样,只有当C 和D 指向同一个实例对象时,C=D 为真,否则C D 为真;当用于类引用时,只有当C 和D 表示同一个类时,C=D 为真,否则C D 为真。4字符串运算符 加号(+)还可以作为字符串运算符,它可以将两个字符串联接在一起。如果两个字符串都是短字符串,那么在结果字符串长度超过255个字符的情况下,只有前面255个字符有效。5集合运算符 以下规则适用于+、和*运算符:当且仅当序数(集合基础类型中的一个值)O 属于集合X 或集合Y(或同时属于X 和Y)时,O 属于X+Y;当且仅当O 属于X 但不属于Y 时,O 属于X Y;当且仅当O 同时属于X 和Y时,O 属于X*Y。+、
展开阅读全文