Pascal基础知识一、Pascal程序设计基础1、Pascal语言程序的基本结构:★例:输入半径,求出圆的周长和面积。Programexample1(input,output);constpi=3.14159;varc,s,r:real;beginread(r);c:=pi*2*r;{求周长}s:=pi*r*r;{求面积}write(c,s);{输出周长和面积}end.PASCAL规定,用program来标识这是一个PASCAL程序,任何一个PASCAL程序的首部都必须以此字开头。PASCAL规定,凡程序中用到所有变量、符号常量、数组、标号、过程与函数、记录、文件等数据都必须在说明部分进行定义(或称说明)。PASCAL规定,执行部分以begin开始,以end.结束,语句之间以分号隔开。程序首部程序体执行部分常量说明变量说明2、标准数据类型(1)、实型(real):最常用的数据类型。有两种表示方法:小数表示法和科学表示法。小数表示法的例子:1.25,-1.6,0.0,100.0科学表示法的实数:1.25e0,-1.6e0,0e0,1e2e后的数字代表10的幂,比如1.25e0=1.25×100。实型量的运算有:+、-、*、/用于实型量的标准函数有:abs(绝对值);sqr(平方);sqrt(开方);sin(正弦);cos(余弦);arctan(反正切):函数的结果为弧度;exp(以e为底的指数):那么e2.5=exp(2.5);ln(自然对数);trunc(取整):去掉小数部分;round(舍入取整):将小数部分四舍五入后得到最接近它的数。如:trunc(1.2)=1;round(1.2)=1;trunc(1.8)=1;round(1.8)=2;trunc(-3.6)=-3;round(-3.6)=-4;(2)、整型(integer):包括正、负整数和零。不能有小数点。Integer是整型标准类型标识符。实型量的运算有:+、-、*、DIV(整除)、MOD(取余)用于整型量的标准函数有:abs(绝对值);sqr(平方);pred(前导):取自变量的前一个值。如pred(5)=4;succ(后继):取自变量的后一个值。如pred(-5)=-4;odd(奇函数):odd(7=true)、odd(6)=false;chr(取字符):chr(65)=’A’。标准函数sin、cos、arctan、exp、ln、sqr也可以用整型量,但其结果均为实型。例如sqrt(4)=2.0;(不是sqrt(4)=2)实型数与整型数的主要差别是:计算机能表示的实数的绝对值为10-38-1038,而整数为-32768-32767。实型量和整型量运算的结果是实型量。如:4×0.25+1=2.0。(3)、字符型(char):括在单引号中的一个字符。如:′A′、′a′、′′(空格)、′′′(′字符)′ABC′是字符串,单引号中只有一个字符的才是字符数,用于整型量的标准函数有:ord(取序号):ASCⅡ码中字符的值,如ord(′A′)=65;pred(前导):前一个字符,如pred(′b′)=′a′;succ(后继):后一个字符,如succ(′b′)=′c′;(4)、布尔型(boolean):只有两个值false(假)和true(真)。False的序号为0;true的序号为1。用于布尔型的标准函数有:ord(取序号):ord(false)=0;ord(true)=1;pred(前导):pred(true)=false;succ(后继):succ(false)=true;false没有前导,true没有后继。用于布尔量的运算有布尔运算,也叫逻辑运算。3、表达式和赋值语句赋值语句是pascal程序中最常用的语句,它的一般形式为:变量:=表达式;计算右端表达式的值然后将这个值赋给左端的变量。4、read语句read语句是读语句。一般形式:read(输入变量表)一个读语句可以读入多个值,此时变量用“,”隔开,例如read(x,y,z);输入时各数值以空格分开。输入数据和输入变量必须赋值相容。readln()语句,它与read()语句的差别是在完成该语句的最后一个变量值输入之后,将结束包括这个数值的这一行,使下一个read()语句(或readln())从下一行开始输入新的数据。输入数据:执行输入语句:执行结果为:1.52.43.6↙read(a,b);a=1.5,b=2.44.05.96.0↙read(c,d);c=3.6,d=4.0,输入数据:执行输入语句:执行结果为:1.52.43.6↙readln(a,b);a=1.5,b=2.44.05.96.0↙readln(c,d);c=4.0,d=5.95、write语句write语句是写语句。一般形式:write(输出变量表)一个写语句可以输出多个值,此时变量用“,”隔开,例如write(x,y+x,z*y);若为变量,输出变量的值;若为表达式,计算表达式的值,然后输出此值;若为字符串(用两个单引号括起来的一串字符),则输出字符串本身。为了将结果打印在不同的行上,可以利用writeln()语句。它的作用是在输出最后一个输出项后结束当前输出行。比如:write(′A′,′B′);write(′C′,′D′);的输出结果为ABCDwriteln(′A′,′B′);writeln(′C′,′D′);的输出结果为ABCDReadln和writeln语句也可以不包括输入、输出表单独使用。前者用于结束当前输入行,后者用于结束当前输出行,指向下一行。例如:read(x,y);readln;等价于readln(x,y);write(x,y);writeln;等价于writeln(x,y);可以通过添加场宽说明来控制输出所占的场宽。常宽说明是在输出项之后加冒号,再加整型数或表达式确定输出项所占的场宽。当场宽说明大于输出数据时,左面补上空格,场宽说明小于输出数据要求的字符数时,将自动突破场宽限制说明,按实际所需要的字符数输出整数、布尔值以及字符串。对于实型数,当场宽说明较小时,输出时小数位数将减少,但不论场宽说明多么小,输出时至少保留1位小数。对于实型数,还可以用两个整型表达式来说明,第一个表示总场宽,第二个表示小数位数,此时实数以小数形式输出。二、Pascal程序设计的基本结构Pascal语言程序可以用四种基本结构表示,这就是顺序结构、判断结构、循环结构以及过程和函数结构。1、顺序结构:顺序结构是一组按照书写顺序执行的语句。2、选择结构:当必须根据某个变量或表达式的值做出判断,以决定执行哪些语句和跳过哪些语句不执行时,我们使用选择结构,或叫判断结构。(1)If语句①If语句的两种形式:Ⅰ、IF<条件>THEN语句1ELSE语句2;Ⅱ、IF<条件>THEN语句1;(注意Ⅰ型IF语句中语句1后无;号)条件实际上是一个布尔表达式,它的值可以是真(true)或假(false),条件为真时执行语句1,条件为假时执行语句2(形式Ⅰ)或不执行任何操作(形式Ⅱ)。②复合语句在if语句中,跟在then和else后的语句可能不止一个,这时候就要用到复合语句。复合语句是一个以begin开头,以end结束的语句,在begin和end之间可以包含若干个用“;”隔开的语句。复合语句的一般形式为:begin语句1;语句2;……语句n;end③复合if语句在if语句中,then和else后的语句也可能是if语句,此时称为if语句的嵌套,或复合if语句。例如:IF<条件1>THEN<语句1>ELSEIF<条件2>THEN<语句2>ELSE<语句3>;(2)case语句case语句是实现选择结构程序设计的另一种语句。Case语句的一般形式为:Case表达式of表值1:语句1;表值2:语句2;……表值n:语句n;EndCase语句头上的表达式必须是有序类型,比如整型、字符型、布尔型、以及后面要学的枚举型和子界型,不能是实型。表值是一些有“,”分开的常数。表达式所有可能出现的值必须在表值中出现一次,并且只能出现一次。当表达式的值在某一个表值中出现后,该程序仅仅执行其后的语句,然后执行case语句后的其他语句。在case语句中,除最后一个语句外,其他的语句后都应该有分号“;”,最后一句可以没有,也可以有。若对应一个值表的语句不止一个,应写成复合语句的形式。Case语句的最后不要漏掉end。3、循环结构:利用循环结构,可以只编写少量语句,让计算机重复执行多次,从而完成大量同类的计算。在Pascal中,实现循环程序设计的语句有For语句、While语句和Repeat语句。(1)For语句:①在Pascal中,实现循环程序设计的一个最常用的语句是For语句,它的一般形式为:For循环变量:=初值To终值Do循环体程序的执行过程为:首先将初值赋给循环变量,然后将循环变量与终值比较,当循环变量的值小于等于终值时,执行循环体,执行完循环体以后,将循环变量的后继值赋给循环变量(For语句自动完成),然后再与终值进行比较,若仍小于终值,则再次执行循环体,直到循环变量的值大于终值,结束For语句,执行For语句后面的语句。注意:a、循环变量的初值和终值可以是常量、变量或表达式。b、循环变量的类型必须与初值和终值相同,且只能是整型、字符型、布尔型、枚举型、子界型等有序类型。c、循环体如果是多行语句,必须使用复合语句。d、在循环体中对初值和终值表达式的改变不会影响循环次数及循环变量的取值。不允许在循环体中用任何语句改变循环变量的值。e、从For语句退出时,循环变量的值是没有定义的,不得使用。f、如果初值大于终值,循环体将根本不执行。②除了以上的形式外,For语句还有另外的一种形式:For循环变量:=初值Downto终值Do循环体这是一个从较大值递减到终值的循环。首先将初值赋给循环变量,然后将循环变量与终值比较,当循环变量的值大于等于终值时,执行循环体,然后将循环变量的前导值赋给循环变量(For语句自动完成),然后再与终值进行比较,若仍大于终值,则再次执行循环体,直到循环变量的值小于终值,结束For语句,执行For语句后面的语句。如果初值小于终值,循环体将根本不执行。在循环设计中,那些语句安排在循环前,那些语句安排在循环中,那些语句安排在循环后,是一个至关重要的问题,必须仔细安排。(2)While语句:For语句用于循环次数已知的情况下,其循环次数由初值和终值决定。但当循环次数未知,而是依赖于循环过程中不断改变的某一数值时,就需要使用Pascal提供的While和Repeat语句实现了。While语句的一般形式是:While布尔表达式Do循环体执行该语句时,首先检查布尔表达式的值,如果它为真,则执行循环体,循环体中通常包含改变该布尔值表达式值的语句。每次执行完循环体之后,再次检查布尔表达式的值,如果仍为真,继续执行循环体,否则结束循环,执行While之后的语句。While循环体中一定要有能改变布尔变量值的语句,否则循环将不能结束,而形成死循环。(3)Repeat语句:Repeat语句的一般形式是:Repeat循环体Until布尔表达式执行该循环时,首先执行循环体,然后检查Until后的布尔表达式,如此继续,直到布尔表达式为真时结束循环,执行循环语句后的其他语句。同样,循环体中一定要有能改变布尔变量值的语句,否则循环将不能结束。可以看出while和Repeat的两点主要区别:a、Repeat语句是在执行完循环体后才检查布尔表达式的值,所以循环至少执行一次;而while语句是在执行循环体以前检查布尔表达式的值,有可能一次循环也不执行(布尔表达式开始就为假)。b、Repeat语句在布尔表达式为真时结束循环,而while语句在表达式为真时执行循环。什么时候用Repeat,什么时候用while,要根据具体情况来定。(4)多重循环:如果一个循环结构内部(循环体)又包含一个循环结构,就称之为多重循环结