您好,欢迎访问三七文档
Pascal语法第一章、Pascal介绍一、Pascal的基本语法单位1、基本符号A——Z;a——z;0——9;+,-,*,/,=,,=,=,,,(,),[,],{,},:=,,,;,.,:,..,',^注意:Pascal语言除了能使用以上规定的基本符号外,不得使用任何其它符号。2、保留字AND,ARRAY,BEGIN,CASE,CONST,DIV,DO,DIWNTO,ELSE,END,FILE,FOR,FUNTION,GOTO,IF,LABEL,MOD,NIL,OF,OR,PACKED,PROCEDURE,PROGRAM,RECORD,REPEAT,SET,THEN,TO,TYPE,UNTIL,VAR,WHILE,WITH。注意:所起的文件名不能与保留字相同。3、标识符以字母打头的字母数字串,长度小于等于8。标准标识符(共三十九个):标准常量:false,true,maxint标准类型:integer,real,char,boolean,text标准文件:input,output标准函数:abs,arctan,chr,cos,eof,eoln,exp,ln,odd,ord,ored,round,sin,sqr,sqrt,succ,trunc标准过程:get,new,pack,page,put,read,readln,reset,rewrite,unpack,write,writeln二、程序结构1、由三大部分组成:程序首部,说明部分,语句部分。PROGRAM程序名(input,output);{……}解释CONSTpi=3.14159;VARr,l,s:real;BEGINwrite('inputr:');read(r);l:=2*pi*r;write('l=',l,'s=',s);END;2、大量使用标点符号,保留字后不加标点符号(END除外)。第二章、顺序结构程序设计一、标准数据类型1、实型(real)小数表示法、指数表示法2、整型(integer)正、负整数和零maxint=32767pred:前导;succ:后继[例]:pred(3)=2;succ(3)=4;pred(true)=false;succ(false)=true3、字符型(char)是指在两个单引号中的一个字符。ord:取序数[例]:ord('A')=654、布尔型(boolean)false;true用于布尔型的运算:NOT、AND、ORord(true)=1;ord(false)=0二、常量和变量的定义常量的定义:CONSTpi=3.14159;blank='';变量的定义:VARr,l,s:read;cl:char;三、表达式及赋值语句[例]:b2-4ac写成:sqt(b)-4*a*c赋值:变量:=表达式四、输入输出语句1、输入语句:read(变量表);readln(变量表)注:表达式里面变量与变量之间用逗号隔开;readln表示下一个语句将从下一行开始操作;输入时,整型或实型用空格或回车隔开,字符型之间无需分隔,一个接一个输入。2、输出语句:write(输出表);writeln(输出表)注:对real或integer限定场宽:write('a=',a:2:0){a为real型}第三章、选择结构程序设计一、if语句格式:IF条件THEN语句1ESLE语句2注:1、ELSE与最近的并且未被配对的ELSE配对;2、复合,如果THEN或ELSE带有多个语句,则要用BEGIN——END括起来。二、CASE语句格式:CASE表达式OF值表1:语句1值表2:语句2……值表n:语句n[ELSE语句]END注:1、值表的三种表达方式:“1:”;“2,4,6:”;“10..100:”2、CHAR,INTEGER,BOOLEAN有序第四章、循环结构程序设计一、FOR语句格式:1、FOR循环变量:=初值TO终值DO语句;2、FOR循环变量:=终值DOWNTO初值DO语句。[例1]:输入10个数,求最大值、最小值、和、及平均值。PROGRAMten(input,output);VARa,s,max,min,avg:real;i:integer;BEGINwrite('pleaseinput:');read(a);s:=a;max:=a;min:=a;FORi:=2TO10DOBEGINread(a);s:=s+a;IFamaxTHENmax:=aELSEIFaminTHENmin:=aEND;avg:=s/i;writeln(……);END.[例2]:求s=1!+2!+3!+……+10!programsum_fac(input,output);vari,j,s,m:integer;begins:=0:forj:=1to10dobeginm:=1;forj:=1toidom:=m*j;s:=s+m;end;write(……);end;二、while语句格式:WHILE条件DO循环体[例1]:输入一串字符串,求第一个“,”前的大小写字母个数和其它字符个数。programstring(input,output);varch:char;c,s,o:integer;beginwrite(……);read(ch);c:=0;s:=0;o:=0;whilech','dobeginif(ch='A')and(ch='Z')thenc:=c+1elseif(ch='a')and(ch='z')thens:=s+1elseo:=o+1;read(ch);end;write(……);end.三、REPEAT语句格式:REPEAT循环体UNTIL[例]:以字符(char)的形式读入一实数,以实形(real)输出该数。第五章、函数与过程程序设计一、函数(包括标准函数和自定义函数)1、函数的定义格式:FUNCTION函数名(形参表):返回值类型;VAR变量说明BEGIN函数体END[注]:1、形参表每个参数都写明其类型;2、有且只有一个返回值,并且要将返回值赋值给函数名。[例]:求五边形的面积functionarea(a,b,c:real):real;varp:real;beginp:=(a+b+c)/2;area:=sqrt(p*(p-a)*(p-b)*(p-c);end;2、函数的调用1)、函数的调用必然出现在表达式中(等号的右边),不能以单独地在语句出现2)、调用时,将每个实参传递给对应的形参programml_area(input,output);varl1,l2,l3,l4,l5,l6,l7,s:real;functionarea(a,b,c:real):real;varp:real;beginp:=(a+b+c)/2;area:=sqrt(p*(p-a)*(p-b)*(p-c);end;beginwrite('input');readln(l1,l2,l3,l4,l5,l6,l7);s:=area(l1,l2,l6)+area(l2,l6,l7)+……;writeln('s=',s:10:3);end.二、过程格式:PROCEDURE过程名(形式参数表)VAR说明部分BEGIN过程体END;[例1]某过程的形参表为(vara,b:real;c,d:integer;vare:char);主程序中有如下变量说明:x,y:real;m:integer;next:char;则以下实参表中合法的有:(1、2、3)1、(x,y,m+3,70,next)2、(y,x,m,m,next)3、(y,x,35,mDIV10,next)4、(m,x,30,10,next)5、(x,y,m,10)6、(35,0,y,m,10,next)7、(x,y,m,m/10,next)8、(A,B,30,10,next)[例2]求程序输出的结果。programex(input,output);varx,y,z:integer;procedures(x:integer;vary:integer);varz:integerbeginx:=5;y:=6;z:=7;end;beginx:=1;y:=2;z:=3;s(x,y);writeln(x,y,z);end.输出结果:163[例3]:求五个数中的最大值。programmax_in_5(input,output);varn1,n2,n3,n4,n5:integer;procedurelagest_in_three(a,b,c:integer;vare:integer)begine:=a;ifbethene:=b;ifcethene:=c;end;beginwrite('……');readln(n1,n2,n3,n4,n5);lagest(n1,n2,n3,n1);lagest(n1,n4,n5,n1);write(n1);end.三、嵌套[例]:计算、programCmn(input,output);functionfax(x:integer):integer:vari:integer;beginfac:=1;fori:=1toxdofac:=fac*i;end;functionc(a,b:integer):real;beginc:=fac(a)/fac(b)*fac(a-b)end;beginwriteln('c(9,3)=',c(9,3));writeln('c(8,5=',c(8,5));end.四、递归函数或过程调用它本身,称为递归。[例1]、用递归计算n!{=m!/n!(m-n)!}programfac_n(input,output);varn:integer;functionfac(n:integer):integer;beginifn=1thenfac:=1elsefac:=n*fac(n-1);end;[例2]、用递归计算1)、functionpower(a,b:integer):integer;beginifb=1thenpower:=aelsepower:=a*power(a,b-1);end;2)、procedurepower(a,b:integer;varc:integer);beginifb=1thenc:=aelsepower(a,b-1,c);c:=a*c;end;[例3]、输入一串字符串(以‘.’结束)按逆顺输出programrevers(input,output);procedurerever;varc:char;beginread(c);ifc'.'thenrever;write(c);end;beginrever;end.五、标识符的作用域1、全局变量和局部变量1)、全局变量:在主程序中被说明,作用域:整个程序;2)、局部变量:在子程序中被说明,作用域:主程序及其下级的程序。2、子程序(function、precedure)的作用域一个子程序可以调用它的下一级了程序,或可以调用在它之前定义的同级子程序。[例]写出程序运行的结果。programrange(input,output);varx,y:integer;procedurep1;varx,z:integer;beginx:=10;y:=y+1;z:=10;writeln(x,y,z);end;beginx:=1;y:=1;writeln(x,y);p1;writeln(x,y,z);end.结果为:(xyz)111021012(error)3、在子程序中被改变值的变量可以回传的两种方法:a、变量参数procedure(var变量名);b、在上一级程序定义了的,且在下一级程序未被重新定义的。[注]如果主程序的变量在子程序被重新定义,在子程序中主程序的变量被稳藏,在主程序中子程序的变量无效。现在介绍Delphi的书大部分是控件用法的罗列,而对ObjectPascal的介绍少之又少。但作为Delphi
本文标题:Pascal语法
链接地址:https://www.777doc.com/doc-1901554 .html