Pascal语言精要_第1页
Pascal语言精要_第2页
Pascal语言精要_第3页
Pascal语言精要_第4页
Pascal语言精要_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、Pascal语言精要基本概念:标识符、保留字、常量、变量、运算符、表达式、标准数据类型Pascal数据类型简单类型标准类型整型integer-3276832767shortint-128127longint-21474836482147483647byte0255word065535实型real绝对值在1E-381E38间singel(单精度型)double(双精度型)extended(扩展型)comp(装配十进制型)字符型char(字符)string(字符串)布尔型boolean只有两个值true和false用户自定义类型枚举型子界型构造类型数组类型记录类型集合类型文件类型指针类型PASCA

2、L标准数据类型一共有4个:整型、实型、字符型、布尔型,分别用保留字integer、real、char、boolean来标记它们。其取值范围和运算如下:整型(integer):范围  -3276832767(16位运算);运算  +   -  *  /  mod  div实型(real): 范围  运算  +  -  *  /字符型(char): 范围  可显示的ASCII字符布尔型(boolean):范围  true  false ;运

3、算   and  or  not1.整型类型 数值范围 占字节数 格式shortint -128.128 1带符号8位integer -32768.32767 2带符号16位longint -2147483648.2147483647 4带符号32位byte 0.255 1带符号8位word 0.65535 2带符号16位Pascal规定了两个预定义整型常量标识符maxint和maxlongint,他们各表示确定的常数值,maxint为32767, maxlongint为2147483647,他们的类型分别是integer 和longint2.实型Pascal支持

4、五种预定义实型,它们是real(基本实型)、 single(单精度实型)、double(双精度实型)、extended(扩展实型)、comp(装配实型),Pascal分别用不相同的名字作为他们的标识符。每一种类型规定了相应的实数取值范围、所占用的内存字节数以及它们所能达到的精度类型数值范围占字节数有效位数real 2.9e-39.1.7e38 611.12single 1.5e-45.3.4e38 47.8double5.0e-324.1.7e308 815.16extended 3.4e-4932.1.1e4932 10 19.20comp-2*63+1.2*63-18 19.20PASCA

5、L使用的保留字有: AND、ARRAY、BEGIN、CASE、CONST、DIV、DO、DOWNTO、ELSE、END、FILE、FOR、FUNCTION、GOTO 、IF、IN、LABEL、MOD、NIL、NOT、OF、PACKED、PROCEDURE、PROGRAM、RECORD、REPEAT、SET、THEN、TO、TYPE、UNTIL、VAR、WHILE、WITH、FORWARD常用的标准标识符有:标准常量:FALSE  TRUE  MAXINT  MAXLONGINT标准类型:INTEGER  BOOLEAN  REAL&#

6、160; CHAR  TEXT标准文件:INPUT  OUTPUT标准函数:ABS  ACTAN  CHR  COS  EOF  ELON EXP  LN  ODD  ORDPRED  ROUND  SIN  SQR  SQRT  SUCC  TRUNC标准过程:ASSIGN  GET  NEW  DISPOSE  PACK PUT  READ  READLN  &#

7、160; RESET  REWRITE  UNPACK  WRITE  WRITELN运算符Pascal语言的基本运算符有五种:算术运算符:、*、/、div(整除)、mod(取余)。关系运算符:、<>(不等于)、<、>、<=、>=、in。逻辑运算:not、and、or。集合运算:、*。赋值运算: :。表达式中运算符的优先级别如下:括号优先级别为5最高,从内到外逐层降低。只允许使用圆括号,且成对出现。not优先级别为4。*、/、div、mod、and优先级别为3。、or优先级别为2。关系运算符和in优先级别最低为1。同级

8、运算从左至右,不同级运算从高到低。完全的Pascal程序结构:program 程序名;uses已知单元说明;label 标号说明;const 常量说明;type 类型说明;var 变量说明;function函数说明;procedure 过程说明;begin语句;语句;end.函数格式:function fun_name(参数表):数据类型;var 变量声明;begin 函数体;end;过程格式:procedure proc_name(参数表);var 变量声明;begin 过程体;end; 基本的程序语句:赋值语句:<变量>:=<表达式>输入语句read(&l

9、t;变量名表>);readln(<变量名表>);<变量名表>是一个或几个由逗号隔开的变量标识符,他们必须在程序说明部分预先说明,他们可以是整型、实型或字符型,布尔型不可以直接读入。readln语句和read语句不同之处在于输入数据到各变量之后,readln自动换行,从下一行开始再输入数据。一个read语句执行完后,数据行中多余的未读数据可以被下一个输入语句读入;而一个readln于执行完后,数据行中多余未读数据就没有用了。readln语句中可以不包含变量名表,表示等待,回车后转入执行下一语句。输入语句输入的数据类型必须和变量一一对应。如果输入的是一串整数或实数,数

10、据间用空格或回车分隔;若输入的是一串字符,则不用分隔。输出语句输出是将内存中的数据送到外设的过程。write(<输出项表>);writeln(<输出项表>);<输出项表>是一串用逗号分隔的常量、变量、函数名、表达式或字符串。如果是变量、函数名、表达式,则将其计算结果输出;如果是常量或字符串,则直接输出其值。write和writeln的区别在于:write语句是输出项输出后,不换行,光标停留在最后一项后,writeln语句按项输出后,自动换行,光标则停留在下一行的开始位置。writeln语句允许不含有输出项,即仅writeln;表示换行。Pascal语言把输出

11、项的数据显示占用的宽度称为域宽,分为单域宽和双域宽。单域宽输出格式:writeln(I:n);在n个字符宽的输出域上按右对齐方式输出I的值,若n大于I的实际位数,则在I值前面补(n-I的实际位数)个空格。若I的实际位数大于n,则自动突破限制。n必须是整数。双域宽输出格式:writeln(a:n:m);双域宽主要用于实型数据的输出。n的用法同上。在n个字符宽的输出域上按右队齐方式用小数点形式输出a的数值,m是小数点后的位数。原来的数据按该格式指定的小数位数四舍五入。若m=0 ,则不输出小数部分和小数点,原数据四舍五入取整。n,m必须是整数。 复合语句复合语句是由若干语句组成的序列,语句之间用分号

12、“;”隔开,并且以begin和end括起来,作为一条语句。复合语句的一般形式:begin语句1;语句2;语句n;end;IF分支结构if<布尔表达式>then <语句>;if<布尔表达式>then <语句1>else   <语句2>;当if 语句嵌套时,else总是和最近的一个if配对。Case分支结构case表达式of常量1:语句1;常量2:语句2;常量n:语句n;else语句 n+1;  可选项end;表达式只能是顺序类型(除了实型以外的简单类型),其值必须是唯一确定并且和表达式类型相同。case语句执行和表达

13、式值相匹配的case常数所指向的那条语句,如果没有相匹配的值,则执行else部分(如果有的话)或者什么也不做。在else前面的语句末尾有分号,这是和if语句不同的。for循环结构(两种形式)升序形式:for <控制变量>:=<初值> to <终值> do <语句>降序形式:for <控制变量>:=<初值> downto <终值> do <语句>while循环结构While <条件> do <语句> Repeat循环结构Repeat <语句>;循环体部分U

14、ntil <条件> ;循环结束条件 数据类型简单数据类型Pascal语言基本数据类型由:integer(longint,shortint,byte),real,char,Boolean.等构成。自定义数据类型:在基本数据类型的基础上定义新的数据类型,类型定义的保留字为“Type”,枚举类型:TYPE 枚举类型名=(枚举值1,枚举值2, ,枚举值n); 子界类型:子界类型是在其它的离散类型的值域中取出一部分构成独立的类型。子界类型的一般定义形式如下:TYPE <子界类型标识符> = <下界常量> . <上界常量> 数组

15、类型:一维数组定义:Type 数组类型标识符=Array常量1.常量2 OF 基类型(数组元素类型)数组元素类型本身也可以是复杂的自定义类型,如子界类型,数组类型,记录等。二维数组定义:Type 数组类型标识符=Array行标下界.行标上界,列标下界.列标上界 OF 基类型;记录类型:TYPE <记录类型标识符>=RECORD <域标识符表>:<类型>; <域标识符表>:<类型>; <域标识符表>:<类型>; END;WITH语句又称开域语句。它的引入使得对记录变量各个域的访问更加简单。因为在使用WITH语句时

16、,只需将记录变量名写在WITH语句的头部,而在其它地方只写简单的域名就可以了,而不用写出完全的域名(记录变量名.域名)。WITH 语句的一般形式:WITH <记录变量名表> DO <语句>一个记录的某个域可以是数组类型,一个数组的分量(即数组元素)也可以是记录类型。这就是记录数组。例:输入全班学生的姓名及成绩,计算平均成绩,并按成绩给每个学生赋一个字母等级(高于平均成绩10分以上为A等,与平均成绩相差在10分以内为B等,其余为C等)最后输出每个学生的姓名、成绩、字母等级。先定义一个学生记录类型student,它由姓名name,成绩score和等级grade三个域组成。然

17、后再定义一个记录数组类型studenta,它的分量类型是student。最后用记录数组类型studenta说明记录数组变量students。记录的分量(或称域)又可以是记录类型,这时称层次记录(或称记录的嵌套)。记录的嵌套可以是多重的。下面举一职员记录类型(employee)的例子。该记录类型由编号(num)、姓名(name)、部门号(numdepend)、出生日期(birthdate)、薪金(salary)和家庭住址(home)6个域组成。其中出生日期(birthdate)是记录类型(date),它由3个域:年(year)、月(month)、日(day)组成。家庭住址(home)是记录类型(

18、address),它由3个域:城市(cith)、街(street)、号码(streetnum)组成。集合类型:集合是指相同类型的数据汇集在一起构成的数据结构,构成集合的数据类型必须是简单的离散类型,如:Byte,Shortint,Longint,char,Boolean,枚举,子界类型。定义:Type 集合数据类型标识符= Set of 基类型;集合的运算:并 +;差 ;相等 ;不等 <>;包含 >=;包含于 <=;属于 in;指针类型1.定义指针类型:类型名基类型名;2.应用一个指针指向的动态存储单元即动态变量的形式如下:指针变量名3.调用标准过程new开辟一个动态存

19、储单元:new(指针变量名);4.使用标准过程dispose释放由指针变量所指向的动态存储单元:dispose(指针变量名);字符串类型:如果数组存放的是字符,则成为字符数组。为了操作方便Pascal 提供了字符串类型和操作函数。字符串类型:Type字符串类型名=String最大长度;字符串定义时如不指定长度,则默认最大长度为255个字符。字符串类型既可按数组方式输入、输出,也可直接输入、输出:readln(s);writeln(s);多个字符串输入时以回车作为数据间的分隔符;每个readln语句只能读入一个字符串。字符串类型的操作函数和过程:操作类型作用返回值例子length(s)函数求字符

20、串s的长度整型s:='123456789'l:=length(s); l的值为9copy(s,w,k)函数复制s中从w开始的k位字符字符串s:='123456789's1:=copy(s,3,5);s1的值是'34567'val(s,k,code)过程将字符串s转为数值,存在k中;code检测是错误代码var s:string;k,code:integer;begins:='1234'val(s,k,code);write(k);k=1234若code=0表示没有错误;str(i,s)过程将数值i转为字符串si:=1234;str

21、(i,s);write(s);s='1234'Delete(s,w,k)过程在s中删除从第w位开始的k个字符s := 'Honest Abe Lincoln'Delete(s,8,4);Writeln(s); 'Honest Lincoln' Insert(s1, S, w)过程将s1插到s中第w位S := 'Honest Lincoln'Insert('Abe ', S, 8); 'Honest Abe Lincoln' Pos(c, S)函数求字符c在s中的位置整型S := ' 123.

22、5'i :=Pos(' ', S);i的值为1+运算符将两个字符串连接起来s1:='Turbo 's2:='pascal's:=s1+s2; 'Turbo pascal' -运算符字符串压缩空格串连s1:='Turbo 's2:='pascal's:=s1-s2; 'Turbopascal'  文件操作类型文件按数据的二进制代码形式存放时的文件称为类型文件。如果再按照组成类型文件的元素数据结构分,又可以分为有类型文件和无类型文件。其定义为:type 类型名=file

23、 of 基类型;有类型文件类型名=file;无类型文件例如:var f:file of integer;说明f为名的变量对应文件将用于存放整数。var g:file;说明g为名的变量对应文件的数据无任何规定。 Pascal有关类型文件的函数和过程(1)assign过程形式:assign(f,str);功能:将文件名字符串str赋给文件变量f,程序对文件变量f的操作代替对文件str的操作。(2)rewrite过程形式:rewrite(f);功能:建立并打开一个新的允许写磁盘文件,其文件名必须先由assign过程赋给变量f。这时,指向文件元素的指针指向第一个元素,rewrite过程所建立的文件为空

24、文件。(3)reset过程形式:reset(f);功能:打开一个已经存在的磁盘文件,其文件名必须先由assign过程赋给变量f,该文件只能读,指向文件元素的指针指向第一个元素。(4)read过程形式:read(f,var表);功能:从磁盘文件f中,将数据依次读到var表表示的各个变量中。(5)write过程形式:write(f,var表);功能:将var表所表示的各个变量的值依次写到磁盘文件f上。(6)close过程形式:close(f);功能:关闭和f关联的磁盘文件,在写操作时自动产生一个文件结束标志。(7)seek过程形式:seek(f,n);功能:把文件指针移到f指明文件的第n个元素。(

25、8)eof函数形式:eof(f);功能:若文件指向文件尾,则返回true,否则返回false。对有类型文件的写操作步骤为:assign(f,str);rewrite(f);write(f,var表);close(f);对有类型文件的读操作步骤为:assign(f,str);reset(f);read(f,var表);close(f); 操 作格 式注 释指派文件 assign(文件变量, 路径: 文件名 ); 将文件变量指定为实际文件建立文件 rewrite(文件变量); 建立一个文件写文件 write(文件变量,变量); 将变量值写入文件分量打开文件 reset(文件变量); 打开文件,指针

26、恢复到开头读文件 read(文件变量,变量); 读文件分量值赋给变量关闭文件 close(文件变量);文尾函数 eof(文件变量) 判断所读文件结束时为ture行尾函数 eoln(文件变量) 判断行结束时为 ture适合于所有文件类型的标准过程和函数关键字属性功 能格 式举 例assign过程将一个外部文件名赋予文件变量assign(filevar,filename);assign(f1,abc.txt)close过程关闭一个已经打开的文件close(filevar)close(f1)erase过程删除一个外部文件rename过程重命名一个外部文件名reset过程打开一个已经存在的文件rese

27、t(filevar)reset(f1)rewrite过程建立并打开一个新文件rewrite(filevar)rewrite(f1)eof函数返回文件结束状态。函数值为布尔型。当文件指针指向文件结束标志时,函数值为TRUE(真),否则为FALSE(假)。适合于文本文件类型的标准过程和函数关键字属性功 能append过程打开一个已经存在的文件,从尾部增添元素read、readln过程从文本文件读取一个或多个值赋于相应变量write、writeln过程将一个或多个值写入正文文件eoln函数返回文件的行结束状态,只能用于文本文件,函数值为布尔型。当文件指针指向回车换行符时,函数值为TRUE(真),否则为FALSE(假)。当文件状态为写打开时,EOLN函数的值总是FALSE。适合于类型文件类型的标准过程和函数关键字属性功 能filepos函数返回指定文件的当前文件位置filesize函数返回文件的当前长度,即文件中元素个数seek过程将文件指针移至指定位置文本文件文本文件的内容有AS

温馨提示

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

评论

0/150

提交评论