
第一章、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('input r:');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:取序数[例]:or('A')=654、布尔型(boolean)false;true用于布尔型的运算:NOT、AND、ORor(true)=1;or(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 语句;2FOR循环变量:=终值 DOWNTO 初值 DO 语句。[例1]:输入10个数,求最大值、最小值、和、及平均值。PROGRAM ten(input,output);VARa,s,max,min,avg:real;i:integer;BEGINwrite('please input:');read(a);s:=a;max:=a;min:=a;FOR i:=2 TO 10 DOBEGINread(a);s:=s+a;IF amax THENmax:=aELSEIF amin THEN min:=aEND;avg:=s/i;writeln(……);END.[例2]:求s=1!+2!+3!+……+10!program sum_fac(input,output);vari,j,s,m:integer;begins:=0:for j:=1 to 10 dobeginm:=1;for j:=1 to i dom:=m*j;s:=s+m;end;write(……);end;二、while语句格式:WHILE 条件 DO循环体[例1]:输入一串字符串,求第一个“,”前的大小写字母个数和其它字符个数。program string(input,output);varch:char;c,s,o:integer;beginwrite(……);read(ch);c:=0;s:=0;o:=0;while ch',' dobeginif (ch='A')and(ch='Z') thenc:=c+1else if (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有且只有一个返回值,并且要将返回值赋值给函数名。[例]:求五边形的面积function area(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)、调用时,将每个实参传递给对应的形参program ml_area(input,output);varl1,l2,l3,l4,l5,l6,l7,s:real;function area(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]某过程的形参表为(var a,b:real;c,d:integer;var e: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,m DIV 10,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]求程序输出的结果。program ex(input,output);varx,y,z:integer;procedure s(x:integer; var y:integer);varz:integerbeginx:=5; y:=6; z:=7;end;beginx:=1; y:=2; z:=3;s(x,y);writeln(x,y,z);end.输出结果:1、 6 3[例3]:求五个数中的最大值。program max_in_5(input,output);varn1,n2,n3,n4,n5:integer;procedure lagest_in_three(a,b,c:integer;var e:integer)begine:=a;if be thene:=b;if ce thene:=c;end;beginwrite('……');readln(n1,n2,n3,n4,n5);lagest(n1,n2,n3,n1);lagest(n1,n4,n5,n1);write(n1);end.三、嵌套[例]:计算、program Cmn(input,output);function fax(x:integer):integer:vari:integer;beginfac:=1;for i:=1 to x dofac:=fac*i;end;function c(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!!(m-n)!}program fac_n(input,output);varn:integer;function fac(n:integer):integer;beginif n=1 then fac:=1else fac:=n*fac(n-1);end;[例2]、用递归计算1)、function power(a,b:integer):integer;beginif b=1 then power:=aelse power:=a*power(a,b-1);end;2)、procedure power(a,b:integer;var c:integer);beginif b=1 then c:=aelse power(a,b-1,c);c:=a*c;end;[例3]、输入一串字符串(以‘.’结束)按逆顺输出program revers(input,output);procedure rever;varc:char;beginread(c);if c'.' then rever;write(c);end;beginrever;end.五、标识符的作用域1、全局变量和局部变量1)、全局变量:在主程序中被说明,作用域:整个程序;2)、局部变量:在子程序中被说明,作用域:主程序及其下级的程序。2、子程序(function、precedure)的作用域一个子程序可以调用它的下一级了程序,或可以调用在它之前定义的同级子程序。[例]写出程序运行的结果。program range(input,output);varx,y:integer;procedure p1;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.结果为:(x y z)1 110 2 101 2 (error)3、在子程序中被改变值的变量可以回传的两种方法:a、变量参数 procedure(var 变量名);b、在上一级程序定义了的,且在下一级程序未被重新定义的。[注]如果主程序的变量在子程序被重新定义,在子程序中主程序的变量被稳藏,在主程序中子程序的变量无效。
