Pascal程序设计语言基础.ppt
第二讲 Pascal程序设计语言基础,一、基本符号、保留字和标识符,1.基本符号,A B C D E F G H I J K L M N O P Q R S T U V W X Y Z,a b c d e f g h i j k l m n o p q r s t u v w x y z,在Pascal语言中,除了字符串中的字母外,字母无大小写之分,也就是说大写与小写字母被认为是相同的字符。,(1)字母,(2)数字,0 1 2 3 4 5 6 7 8 9,(3)特殊字符,+*/=():=.,:;.,2.保留字,保留字是指Pascal语言中一些有特殊含义的英文单词,例如前面例子中的program,var,begin,end等。这些单词已被Pascal语言自己所使用,而且都有专门的用途,不能用于其他场合(如标识符),之所以称为保留字,含义是这些单词保留给Pascal本身使用。Pascal语言中保留字共有36个,可分为如下六种类型:,(1)程序、函数、过程的符号:program,function,procedure。(2)说明部分的专用定义符号:array,const,file,label,packed,var,record,set,type,of。(3)语句专用符号:case,do,downto,else,for,goto,if,repeat,then,to,until,while,with,forward。,(4)运算符号:and,div,in,mod,not,or。(5)分隔符号 begin,end。(6)空指针常量:nil。,3.标识符,标识符是以字母或下划线开头的字母数字下划线序列。如:A,B,I,J,MAX,MIN,X1(正确)而:3X,XY,X&Y,X Y(错误),标识符可以用来表示常量、变量、类型、文件、函数、过程或程序的名字。TP中允许的标识符的有效长度为63。,(1)标准标识符标准常量:false(逻辑值为假),true(逻辑值为真),maxint(值为32767)。标准类型:integer(正型),real(实型),char(字符型),boolean(逻辑型),text(文本文件类型)。标准文件:input(标准输入文件),output(标准输出文件)。标准函数:abs,arctan,chr,cos,eof,eoln,exp,ln,odd,ord,pred,round,sin,sqr,sqrt,succ,trunc。标准过程:get,new,pack,page,put,read,readln,reset,rewrite,unpack,write,writeln。,标识符分为两大类:,(2)自定义标识符,由用户自己在程序首部或说明部分进行定义,自定义标识符时要注意以下几点:不能与保留字同名;避免与标准标识符同名,如果用户定义了和标准标识符同名的标识符的话,便强行改变了标准标识符的原来含义;最好有一定的含义,增加程序的可读性;书写可用大写、小写及大小写字母混合使用。,例如:我们在程序中如用到数学中的,则在定义该常量时可用PI表示。,二、数据类型、常量、变量、及说明方法,数据类型不仅确定该类型数据项的表示和取值范围,而且还确定了它能参加的各种运算。在Pascal语言中,无论常量还是变量都必须属于一个确定的数据类型。Pascal提供了丰富的数据类型,可分为以下三大类。,Pascal数据类型,简单类型,构造类型,指针类型,标准类型,自定义类型,整型,实型,字符型,布尔(逻辑)型,枚举型,子界型,数组型,记录型,集合型,文件型,我们把整型、字符型、布尔型、子界类型和枚举类型称为顺序型,这些数据类型的数据之间是有序的。,整数类型 整数类型包括正整数、负整数和零。整数只能由正负号和数字组成,不允许出现其它字符,“”号可以省略。例如:123,0,256,234都是合法的整数。1234A,0.01,12.34都是非法的整数。Turbo Pascal有integer型整数,它的取值范围是3276832767(maxint)。TP还支持以下四种整型。,a.)整数的运算符有、(乘)、div(整除)、mod(求余),后三种运算符的优先级高于前两种运算符,整数运算的结果也为整数。,如:假设X,Y均为整型变量,则XY的结果为整数。div(整除)指两数相除所得的商,mod(求余)指两数相除所得的余数。因此:11 div 2()11 mod 2()17 div 3()17 mod 3()4 div 3()4 mod 3(),b.)TP对mod的解释是这样的;A mod BA(A div B)B c.)mod运算的符号总是和被除数相同而和模无关。15 mod 4()15 mod 4()15 mod 4(),2.实数类型,实数类型包括整实数、负实数和实数零。它的类型标识符real。有两种方法表示实数。(1)十进制表示法:就是我们日常使用的带小数点的表示方法。如:0.0,12.5,314.1都是合法的。必须注意小数点前后都必须有数字,如 7.,.8,都是非法的。一个整数可以当作是实数使用,但反过来不行。(2)科学表示法:就是采用指数形式的表示方法。如3.4E3表示3.4 x 10,即3400;3.4E3表示3.4 x 10,即0.0034。注意指数部分不能为小数和尾数部分不能省略,如:3.4E1.2,E12均为违法的。实数的绝对值的取值范围在1E38到1E38之间。,-3,3,实数的运算符有、(除),乘、除运算优先级高于加、减,实数运算的结果也为实数。整数参与实数运算,系统自动将整数转换为实数然后再运算,结果也为实数。当两个整数用“”相除时,结果为实数,只能赋值给实型变量。,3.字符类型,目前微机上广泛使用的ASCII码字符集满足Pascal对字符集的要求,字符类型的数据就是扩在两个单引号之间的Pascal字符集。如:A,1,:,分别表示字符A,数字字符1及冒号。字符类型在Pascal语言中用类型标识符char来表示,它是有序的。此外,还有类型标识符string来表示字符串。,4.布尔类型,布尔类型的数据只有两个;真和假,分别用标准常量true(真)false(假)来表示。布尔类型的类型标识符为boolean,它是序列的,并且false true。,布尔类型的运算符有not(非)、and(与)、or(或)。参与布尔型运算的为布尔类型数据,其结果也为布尔类型。not(非),表示对原值进行逻辑否定,例:假设p为逻辑型变量,其值为false,则not p的值为true,not好像是电灯开关,它将原值从一种值改为另一种值。and表示对两个逻辑型变量(如p、q)进行“与”运算(p and q),只要p、q有一值为false,则运算结果也为false,只有两者同时为true时,结果才为true。or表示对两个逻辑型的变量进行“或”运算(p or q),只要p、q有一值为true,则运算结果也为true。若都为false,则结果为false。,三、常量,所谓常量,指在程序执行过程中其值不能被改变的数据,Pascal除maxint、true、false三个标准常量外,用户还可以使用常量定义语句定义新的常量。如:const pi3.1415926;stabc;ttrue;pi2pi;常量所具有的类型就是他所定义的常量的类型,常量的定义具有单一性和不改变性,即常量名只能唯一地被赋予某值,对常量名不能做任何修改。如下的常量定义是错误的:const a100;a,b20;c100 or 50;,常量a定义了两次,a,b20;应该写成b20;c不能既表示100又表示50。,四、变量,变量代表了一个存储单元,其中的值是可变的,故称为变量。变量必须先说明后再在程序中使用。变量名是用户定义的标识符,变量类型既可以是标准数据类型,也可以是经过类型说明的类型标识符。如:var i,j:integer;x1,x2:real;a1,a2,xt1;xt1是在类型定义中已经定义过的类型标识符 变量和常量一样,它也只能属于一种数据类型,但变量的值可以被多次改变。在下面的变量说明中有些是非法的。variable i,j,kinteger;ch1:char;ss,ch1:boolean;rb1:a;,变量说明标示符只能是var,且不能够用等号,ch1被定义了两次,而rb1的变量类型不符合要求。,五、函数与表达式,函数代表一种对数据的处理,给出一个或多个原始数据,通过函数的加工处理,可以得到一个结果。在此,原始数据称为自变量(也可称为函数参数),结果称为因变量。每个函数都有一个名称,请求函数处理时,只要调用函数名并按自变量个数,顺序、类型和含义将原始数据代入即可。函数的一般形式为:函数名(参数1,参数2,)。函数的调用形式是:X函数名(原始数据1,原始数据2,)。函数一般分为标准函数和自定义函数两种。标准函数是指Pascal系统中已经存在的函数,可以直接使用。自定义函数是指用户根据需要,自己定义的函数,定义好以后再使用。可见,两者的区别在于:标准函数不要定义,可直接使用;而自定义的函数必须先定义后才能使用。,1.Pascal标准函数,例如:abs(3)表示绝对值函数,因此其值为3。odd(5)为判断自变量是否为奇数,故其值为true。sqr(5)为求平方函数,故其值为25。sqrt(100)为平方根函数,故其值为10。chr(48)为求ASCII码值为48的字符,故其值为0。ord(A)为求字符A的ASCII码值,故其值为65。trunc(1.999)为截尾函数,故其值为1。,注意:(1)round(x)是舍入函数,对于正数,舍小数之后,函数值比原值要小,入小数后,函数值比原值要大。负数则正好相反。也就是说,正数舍小入大,负数舍大入小。(2)chr函数和ord函数在字符范围内构成一对反函数,如:chr(ord(a)a ord(chr(61)61(3)pred函数和succ函数构成一对反函数,如:pred(succ(x)x succ(pred(x)x(4)x的n次方利用换底公式表示为exp(nln(x)(5)sin(x)、cos(x)的自变量是弧度,若给出的是角度值,转换公式为:弧度值3.1416/180角度值。(6)ord(true)1,ord(false)0,2.Pascal的运算符及表达式,运算符Pascal语言的基本运算符有五种,如下表:,b.表达式 表达式是指由常量、变量、函数、括号、集合及运算符联接起来的式子。表达式中的变量必须要有明确的值,单个的常量、变量、函数都可以看成是一个表达式。当一个表达式中出现两个以上运算符时,必须规定他们运算的次序,即优先级。表达式中的运算符优先级别如下:,同级运算符从左到右计算,不同级别运算从高到低运算;括号优先级最高,从内到外逐层降低,not优先级别为4。,div,mod,and优先级别为3。,or优先级别为2。关系运算符及in优先级别为1。,表达式一般分为:算术表达式、关系表达式和逻辑表达式。,(1)算术表达式通过算术运算符将各种量连接起来的式子。如:123结果为7;(12)mod23结果为3;,例1:写出一个整数被3整除所得余数的表达式。问题分析:我们可以用变量x表示该数,而mod表示两个整数向除所得的余数,因此,表达式应该为x mod 3。,例2:写出计算圆的周长和面积的表达式。问题分析:我们从数学上知道圆周长的计算公式为:2r,但在Pascal中不能作为标示符,因此,我们可以将它定义为PI,这样我们就可以得到表达式:2PIr和PIrr。,我们在书写表达式时,应该注意如下几个方面:值允许使用圆(小)括号,而且应该成对出现。不允许连续出现两个运算符。ab,必须写成a(b)。乘法运算符不能省略。如2a,必须写成2a。数学公式换成表达式时,必要时要添加括号,以保证优先级关系。,(2)关系表达式 它是用来对两个同类型数据进行比较的式子,结果为逻辑量。关系表达式一般用于表达日常生活中的条件,而且只能是基本条件。如:y=3,当y比3小时它的结果为false,其余条件下,它的结果为true。,例3:写出表示年龄大于50岁的表达式问题分析:我们可以用变量nl表示年龄,则表达式为nl50。,(3)逻辑表达式日常生活中的条件经常很复杂,是多个基本条件的复合。逻辑表达式是通过逻辑运算符not(非)、and(与、且)、or(或)将基本条件表达式连接起来的式子。逻辑表达式用于表达复杂的条件。,如(x0)and(y0),表示x0和y0同时成立。(ab)and(bc),表示abc成立。,例4:写出一个既能被3整除又能被5整除的表达式。问题分析:我们可以用变量x表示该数,能被3、5整除,则余数均为0,而且两个条件应该同时成立,因此,表达式应该为(x mod 30)and(x mod 50)。,实际使用中经常将三种表达式联合使用。,