




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Pascal基础知识一、Pascal程序设计基础1、Pascal语言程序的基本结构: 变量说明常量说明程序体执行部分程序首部例:输入半径,求出圆的周长和面积。Program example1(input,output);const pi=3.14159;var c,s,r:real;beginread(r);c:= pi*2*r;求周长s:= pi*r*r;求面积write(c,s);输出周长和面积end.PASCAL规定,用"program"来标识这是一个PASCAL 程序,任何一个PASCAL程序的首部都必须以此字开头。PASCAL规定,凡程序中用到所有变量、符号常量、
2、数组、标号、过程与函数、记录、文件等数据都必须在说明部分进行定义(或称"说明")。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(平方
3、);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(取余)
4、用于整型量的标准函数有: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
5、.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)=
6、false;succ(后继):succ(false)= true;false没有前导,true没有后继。用于布尔量的运算有布尔运算,也叫逻辑运算。3、表达式和赋值语句赋值语句是pascal程序中最常用的语句,它的一般形式为:<变量>:=<表达式>;计算右端表达式的值然后将这个值赋给左端的变量。4、read语句read语句是读语句。一般形式:read (<输入变量表>)一个读语句可以读入多个值,此时变量用“,”隔开,例如read(x,y,z);输入时各数值以空格分开。输入数据和输入变量必须赋值相容。readln()语句,它与read()语句的差别是在完成该语句
7、的最后一个变量值输入之后,将结束包括这个数值的这一行,使下一个read()语句(或readln())从下一行开始输入新的数据。输入数据: 执行输入语句: 执行结果为:1.5 2.4 3.6 read(a,b); a=1.5,b=2.44.0 5.9 6.0 read(c,d); c=3.6,d=4.0,输入数据: 执行输入语句: 执行结果为:1.5 2.4 3.6 readln(a,b); a=1.5,b=2.44.0 5.9 6.0 readln(c,d); c=4.0,d=5.95、write语句write语句是写语句。一般形式:write(<输出变量表>)一个写语句可以输出多
8、个值,此时变量用“,”隔开,例如write(x,y+x,z*y);若为变量 ,输出变量的值;若为表达式,计算表达式的值,然后输出此值;若为字符串(用两个单引号括起来的一串字符),则输出字符串本身。为了将结果打印在不同的行上,可以利用writeln()语句。它的作用是在输出最后一个输出项后结束当前输出行。比如: write(A, B);write(C, D);的输出结果为ABCDwriteln(A, B);writeln(C, D);的输出结果为ABCD Readln和writeln语句也可以不包括输入、输出表单独使用。前者用于结束当前输入行,后者用于结束当前输出行,指向下一行。例如: read
9、(x,y);readln;等价于 readln(x,y);write(x,y);writeln;等价于 writeln(x,y); 可以通过添加场宽说明来控制输出所占的场宽。常宽说明是在输出项之后加冒号,再加整型数或表达式确定输出项所占的场宽。当场宽说明大于输出数据时,左面补上空格,场宽说明小于输出数据要求的字符数时,将自动突破场宽限制说明,按实际所需要的字符数输出整数、布尔值以及字符串。对于实型数,当场宽说明较小时,输出时小数位数将减少,但不论场宽说明多么小,输出时至少保留1位小数。对于实型数,还可以用两个整型表达式来说明,第一个表示总场宽,第二个表示小数位数,此时实数以小数形式输出。二、P
10、ascal程序设计的基本结构Pascal语言程序可以用四种基本结构表示,这就是顺序结构、判断结构、循环结构以及"过程"和"函数"结构。1、顺序结构:顺序结构是一组按照书写顺序执行的语句。2、选择结构:当必须根据某个变量或表达式的值做出判断,以决定执行哪些语句和跳过哪些语句不执行时,我们使用选择结构,或叫判断结构。(1)If语句If语句的两种形式:、IF 条件THEN 语句1ELSE 语句;、IF 条件THEN 语句;(注意型IF语句中语句后无";"号)条件实际上是一个布尔表达式,它的值可以是真(true)或假(false),条件为真时
11、执行语句1,条件为假时执行语句2(形式)或不执行任何操作(形式)。复合语句在if语句中,跟在then和else后的语句可能不止一个,这时候就要用到复合语句。复合语句是一个以begin开头,以end结束的语句,在begin和end之间可以包含若干个用“;”隔开的语句。复合语句的一般形式为:begin <语句1>;<语句2>;<语句n>;end复合if语句在if语句中,then和else后的语句也可能是if语句,此时称为if语句的嵌套,或复合if语句。例如:IF 条件1THEN 语句1ELSE IF 条件2THEN 语句2ELSE 语句3;(2)case语句ca
12、se语句是实现选择结构程序设计的另一种语句。Case语句的一般形式为:Case <表达式> of<表值1>:<语句1>;<表值2>:<语句2>;<表值n>:<语句n>;EndCase语句头上的表达式必须是有序类型,比如整型、字符型、布尔型、以及后面要学的枚举型和子界型,不能是实型。表值是一些有“,”分开的常数。表达式所有可能出现的值必须在表值中出现一次,并且只能出现一次。当表达式的值在某一个表值中出现后,该程序仅仅执行其后的语句,然后执行case语句后的其他语句。在case语句中,除最后一个语句外,其他的语句后
13、都应该有分号“;”,最后一句可以没有,也可以有。若对应一个值表的语句不止一个,应写成复合语句的形式。Case语句的最后不要漏掉end。3、循环结构:利用循环结构,可以只编写少量语句,让计算机重复执行多次,从而完成大量同类的计算。在Pascal中,实现循环程序设计的语句有For语句、While语句和Repeat语句。(1)For语句:在Pascal中,实现循环程序设计的一个最常用的语句是For语句,它的一般形式为:For <循环变量> := <初值> To <终值> Do<循环体>程序的执行过程为:首先将初值赋给循环变量,然后将循环变量与终值比较,
14、当循环变量的值小于等于终值时,执行循环体,执行完循环体以后,将循环变量的后继值赋给循环变量(For语句自动完成),然后再与终值进行比较,若仍小于终值,则再次执行循环体,直到循环变量的值大于终值,结束For语句,执行For语句后面的语句。注意:a、循环变量的初值和终值可以是常量、变量或表达式。b、循环变量的类型必须与初值和终值相同,且只能是整型、字符型、布尔型、枚举型、子界型等有序类型。c、循环体如果是多行语句,必须使用复合语句。d、在循环体中对初值和终值表达式的改变不会影响循环次数及循环变量的取值。不允许在循环体中用任何语句改变循环变量的值。e、从For语句退出时,循环变量的值是没有定义的,不
15、得使用。f、如果初值大于终值,循环体将根本不执行。除了以上的形式外,For语句还有另外的一种形式:For <循环变量> := <初值> Downto <终值> Do<循环体>这是一个从较大值递减到终值的循环。首先将初值赋给循环变量,然后将循环变量与终值比较,当循环变量的值大于等于终值时,执行循环体,然后将循环变量的前导值赋给循环变量(For语句自动完成),然后再与终值进行比较,若仍大于终值,则再次执行循环体,直到循环变量的值小于终值,结束For语句,执行For语句后面的语句。如果初值小于终值,循环体将根本不执行。在循环设计中,那些语句安排在循环前
16、,那些语句安排在循环中,那些语句安排在循环后,是一个至关重要的问题,必须仔细安排。(2)While语句:For语句用于循环次数已知的情况下,其循环次数由初值和终值决定。但当循环次数未知,而是依赖于循环过程中不断改变的某一数值时,就需要使用Pascal提供的While和Repeat语句实现了。While语句的一般形式是:While <布尔表达式> Do<循环体>执行该语句时,首先检查布尔表达式的值,如果它为真,则执行循环体,循环体中通常包含改变该布尔值表达式值的语句。每次执行完循环体之后,再次检查布尔表达式的值,如果仍为真,继续执行循环体,否则结束循环,执行While之后
17、的语句。While循环体中一定要有能改变布尔变量值的语句,否则循环将不能结束,而形成死循环。(3)Repeat语句:Repeat语句的一般形式是:Repeat<循环体>Until <布尔表达式>执行该循环时,首先执行循环体,然后检查Until后的布尔表达式,如此继续,直到布尔表达式为真时结束循环,执行循环语句后的其他语句。同样,循环体中一定要有能改变布尔变量值的语句,否则循环将不能结束。可以看出while和Repeat的两点主要区别:a、Repeat语句是在执行完循环体后才检查布尔表达式的值,所以循环至少执行一次;而while语句是在执行循环体以前检查布尔表达式的值,有
18、可能一次循环也不执行(布尔表达式开始就为假)。b、Repeat语句在布尔表达式为真时结束循环,而while语句在表达式为真时执行循环。什么时候用Repeat,什么时候用while,要根据具体情况来定。(4)多重循环:如果一个循环结构内部(循环体)又包含一个循环结构,就称之为多重循环结构。任意循环语句的循环体部分都可以包含另一个循环结构语句,多重循环的嵌套次数是任意的,按照嵌套层次数,分别叫做二重循环、三重循环等。处于内部的叫内循环,处于外部的叫外循环。例如:求100-999中的水仙花数(若三位数abc,abc=a3+b3+c3,则程abc为水仙花数,如:13+53+33=1+125+27=15
19、3,则153是水仙花数)。我们可以用一个三重循环求解:Program example(input,output);Var a,b,c:integer;Begin For a:=1 to 9 do 百位上的数For b:=0 to 9 do 十位上的数For c:=0 to 9 do 个位上的数 if a*a*a+b*b*b+c*c*c=a*100+b*10+cthen write(a*100+b*10+c:6);Readln;End.练习1:分别用For语句、While语句、Repeat语句计算n!。练习2:描述 Description (2005年全国联赛普及组第一题) 陶陶家的院子里有一棵
20、苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。输入格式 Input Format 输入包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候
21、能够达到的最大高度。 输出格式 Output Format 输出包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。4、Pascal函数与过程程序设计1、函数Pascal提供了一些标准函数,比如sqrt(开方)、abs(绝对值)函数等。但Pascal提供的标准函数是有限的,并且有时不能满足某个问题的需要,这时就需要定义新的函数。函数说明(函数定义)的一般形式:Function <函数名>(<参数表>):<函数类型>; <说明部分>; Begin <函数体> End;(1)、函数必须用Function开头,然后是函数名、参数表
22、和函数类型(即结果的类型)。(2)、函数首部的后面是函数分程序,它由说明部分和语句部分组成。语句部分又称函数体,由Begin和End括起来,函数体对形式参数进行处理,然后将运算结果赋给函数名,作为函数结果传给调用它的程序,所以在函数体中至少有一个给函数名赋值的语句:<函数名>:=<表达式>在参数表中,可以有多个参数。“,”用来分开相同类型的各个参数;“;”用来分开不同类型的参数;各种类型的参数分别用“:”后的类型标识符说明。比如:(x,y,z:real;m,n:integer;ch:char)2、过程函数是有局限性的,它们仅可以用于计算单个函数值,这个值是通过函数名带回
23、给调用程序的。我们常常需要写出一些单独的程序模块送回多个结果,或者写一个模块并不需要送回任何的结果,而只执行某些任务,比如打印以前计算的结果,这时就不能用函数了,但是可以用Pascal的过程来解决。过程说明(过程定义)的一般形式:Procedure <过程名>(<形式参数表>); <说明部分>; Begin <过程体> End;过程调用的一般形式为:<过程名>(<实在参数表>)实在参数表是一些用“,”分开的参数组成的,并且应该满足:a、形式参数表中可以包括值参数和变量参数,当无参数时,形式参数表和括号应该略去。b、实在参数
24、必须与过程说明中的形式参数个数相同,且次序一一对应。c、与值参数对应的实在参数可以是表达式;与变量参数对应的实在参数只能是变量。d、实在参数必须与变量参数类型同一,与值参数类型赋值相容。l 值参数与变量参数的区别如下:a、变量参数定义时需要用保留字VAR指明,而值参数不能加VAR。b、与值参数对应的可以是表达式,而变量参数对应的实在参数只能是变量。c、值参数的改变不会影响到相应的实在参数,调用完之后实在参数的值不会改变,比如上例中t的改变不会影响x的具体数值;而对变量参数的运算实际上是对实在参数的运算,因此在函数中改变了实在参数的值,比如上例中s的值。d、实在参数与值参数应类型赋值相容,而实在
25、参数与变量参数应类型同一。l 过程与函数的不同点:(1)、函数以Function开头,而过程以Procedure开头。(2)、函数是通过函数名送回一个结果值,并且函数首部的最后要说明函数(即结果)的类型。而过程的结果由参数送回,可以包括多个结果或无结果。(3)、函数体中至少要包含一个给函数名赋值的语句;而过程不能给过程名赋值,因此过程体可以为空。(4)、函数的调用出现在表达式中,而过程的调用必须作为一个单独的语句。三、自定义数据类型1、枚举与子界类型1、枚举类型(1)枚举类型的一般定义如下:TYPE<枚举类型标识符>=(<标识符>,<标识符>,<标识符
26、>);VAR<枚举类型变量表>:<枚举类型标识符>;枚举类型是以TYPE为开始的类型说明,此类型说明应放在常量说明和变量说明之间,然后在定义变量时,用枚举类型标识符说明枚举类型的变量。例如:TYPEday=(sunday,monday,tuesday,wednesday,thursday,friday,saturday);month=(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec);VARtoday,tomorrow:day;lastmonth,firstmonth:month;x,y:real;注意:a、枚举类型
27、是以TYPE为开始的类型说明;b、每个枚举类型所允许的枚举值必须全部列在其后的括号中,每个枚举值用“,”隔开,枚举值只能是标识符(以字母开头的字母数字组合),而不能是数值常量或字符常量。以下的定义是错误的:type daystype=('sun','mon','tue','wed','thu','fri','sat')c、每个枚举值只能出现在一个枚举类型的定义中,并且只能在该定义中出现一次。以下的定义是错误的:type daytype1=(monday,tuesday);daytyp
28、e2=(monday,wednesday);(3)枚举类型变量的运算:可以直接将枚举值赋给枚举变量,或将同类型的枚举变量赋给另一个枚举变量。(4)Turbo Pascal不允许直接读写枚举值,所以枚举值的输出常用case语句间接的输入和输出,枚举值的输入和输出都要进行必要的转换,否则就会出错。2、子界类型(1)Pascal可以说明变量值的范围,当我们输入的数值不在此范围中时可以让程序提示我们,然后做相应的处理,这就需要通过定义子界类型和子界类型变量来做到这点。子界类型是由整型、字符型、枚举型、布尔型的两个常量指定该类型的值域区间。子界类型的一般定义形式:TYPE<子界类型标识符>=
29、<常量1><常量2>;VAR<子界类型变量表>:<子界类型标识符>例如:TYPEage=10.100;letter=a.z;VARworkage:age; workage是age子界类型变量char:letter; char是letter子界类型变量在程序执行时,如果将存储在workage中的值小于10或大于100或不是数值,系统将终止程序的执行,并打印出相应的提示错误的信息。同样如果准备赋给char的是数字或标点符号(非字母),程序也将终止执行,并输出诊断信息。子界类型决定了该类型变量可以取值的范围,所以两个常量必须是同一种顺序类型(整型、字符
30、型、布尔型、枚举型)的值,并且必须保证第一个值小于第二个值,比如:ab,要求a<=b,例如:type a=1.3;b='a'.'d';在定义枚举类型的子界时,一定要先定义枚举类型,然后才能定义枚举类型的子界。例如:Type day=(sunday,monday,tuesday,wednesday,thursday,friday,saturday);schoolday=monday. friday;myday= monday. saturday;一个枚举值只能出现在一个枚举类型的定义中,但是可以出现在多个子界类型的定义中。在说明子界类型时必须保证第一个值的序
31、号小于等于第二个值的序号。(2)和枚举类型一样,也可以不预先定义子界类型,而直接在变量说明中指出子界类型,即: VAR<子界类型变量表>:<常量1><常量2>;例如:VARnumber:19 number不是类型标识符,直接就是变量(3)子界类型的运算:一个子界类型继承它的常量类型的运算符和标准函数,常量类型相容的不同子界类型可以混合运算,可以赋值。子界类型的输入输出也与其继承的基类型相同。3、数组类型(1)一维数组的定义:Type<数组类型标识符>=array <下标类型> of <元素类型>;Var<数组变量表&
32、gt;:<数组类型标识符>;解释:数组类型标识符说明了存储单元的汇集。下标可以是boolean,char或任何用户自己定义的枚举类型和子界类型。而不能是标准类型real或integer,因为它们都有无数个值,而Pascal所允许的数组空间是有限的。对应下标类型的每一个枚举值有一个数组元素。通常下标类型表示成形如min.max的子界,这里ord(min)必须小于ord(max)。元素类型可以是任何类型,包括数组类型和其他类型。例如:Typeart=array 1.10 of real;Vara,b:art;第二种方法是在变量说明中直接说明数组类型,即Vara,b:array 1.10
33、 of real;第一种方法中,首先定义数组类型art,我们推荐用这一种做法。数组的运算:除了同类型的数组可以整体拷贝(赋值)和参数传递外,数组是不能作其它运算的,数组也不能整体读、写。例如定义的数组:Typeart=array <1.10> of real;Vara,b:art;如果数组a已有值,将数组a整体拷贝到数组b中,可以执行下列语句:b:=a;这样操作的结果是将数组a的每个元素拷贝到对应的数组b的每个元素中。它等价于下列语句:For i:=1 to 10 dob i:= a i;注意:对数组的读、写、赋值和其它运算,通常都是对数组的每个元素进行的。(2)多维数组的定义(1
34、)当一维数组元素的类型也是一维数组时,便构成了二维数组。二维数组定义的一般格式:Type<数组类型标识符>=array下标类型1,下标类型2 of 元素类型;说明:其中两个下标类型与一维数组定义一样,可以表示成"min1.max1"和"min2.max2"的形式,给出二维数组中每个元素( 双下标变量)可以使用下标值的范围。of后面的元素类型就是基类型。例如:Typemat=array1.5,1.10 of integer;Vara,b:mat;有时我们不定义类型标识符,直接说明数组变量的类型:例如:Vara,b:array1.5,1.10 o
35、f integer;此处的说明与前面的说明是等价的,但是在有些情况下,为了保证数组类型的同一和赋值相容必须先定义数组类型标识符,然后用类型标识符说明数组的类型。一般地,n维数组的格式为:Type<数组类型标识符>=array下标类型1,下标类型2,下标类型n of 元素类型; 其中,下标类型的个数即数组的维数,且说明了每个下标的类型及取值范围。下标类型通常是枚举或子届类型。(2)多维数组元素的引用:多维数组的数组元素引用与一维数组元素引用类似,区别在于多维数组元素的引用必须给出多个下标。引用的格式为:<数组名>下标1,下标2,下标n说明:显然,每个下标表达式的类型应与对
36、应的下标类型一致,且取值不超出下标类型所指定的范围。例如:Type matrix=array1.5,1.4of integer;var a:matrix;则表示a是二维数组,共有5*4=20个元素,它们是:a1,1a1,2a1,3a1,4a2,1a2,2a2,3a2,4a3,1a3,2a3,3a3,4a4,1a4,2a4,3a4,4a5,1a5,2a5,3a5,4对于整个二维数组的元素引用时,大多采用二重循环来实现。for i:=1 to 5 dofor j:=1 to 4 doai,j:=i*j;对二维数组的输入与输出也同样可用二重循环来实现:for i:=1 to 5 do 对数组进行赋值
37、输入beginfor j:=1 to 4 doread(ai,j);readln;end;for i:=1 to 5 do 对数组进行内容输出beginfor j:=1 to 4 dowrite(ai,j:5);writeln;end;4、集合类型(1)集合类型说明:集合类型的一般定义形式如下:Type<集合标识符>=set of <基类型>;Var<集合类型变量表>:<集合标识符>;上面的定义中首先定义了集合类型表识符,它的全部值由基类型说明,然后由集合类型表识符说明集合类型变量,此外,我们可以合并成如下形式:Var<集合类型变量表>
38、;:set of <基类型>;注意1:基类型必须是有序类型,如整型子界、字符型、布尔型、枚举类型等,而整型、实型、数组等不能作为集合的基类型。但是允许数组的基类型是集合类型。注意2:为了程序效率,Pascal编译程序都限制了集合类型值的数目,所以整型不能作为集合的基类型,而整型的子界可以作为集合的基类型。2、集合运算(1)、赋值空集和全集处理集合之前,一般都要给集合变量赋以初值。(2)、集合的并交差集合的并交差要求类型相容的两个集合作为运算对象。两个集合的并(+):定义为在任意集合中或两个集合中元素的汇集。两个集合的交(*):定义为两个集合所共有的所有元素的汇集。两个集合的差(-)
39、:定义为在集合A中,而不在集合B中元素的汇集。注意:a、在集合中的次序是无关紧要的,集合1,2,3,4和4,1,3,2被认为是相同的。b、当运算符“+、*、-”两边的运算对象是集合时,便执行相应的集合运算。如:c、集合运算的优先规则:先*后+、-,统计从左到右计算,为了避免混淆,最好使用括号。d、当我们希望在一个已有的集合中加入一个新的元素时,要通过将已有的集合与由新元素组成的单个元素集合相加得到。例如:要在集合1,2,4,5中加入新元素2应写成:1,3,4,5+2,得到的集合为1,2,3,4,5。(3)集合的关系运算在集合中可以进行的关系运算有:=(相等)、<>(不等)、<
40、=(子集)、>=(包集)。运算=和<>用于检查两个运算是否包含同样的元素。运算<=决定子集关系,如果集合a的每个元素也是集合b的元素,则称集合a是集合b的子集(a<=b)。空集是任何集合的子集。运算>=决定包集关系,如果集合b的每个元素也是集合a的元素,则称集合a是集合b的包集(a>=b)。任何集合都是空集的包集。除了上面的关系运算之外,还有一个新的运算IN,用于集合成员检查。被检查的元素必须与集合的基本类型相容。1 IN 1,2,3 结果为 true;1 IN 2,3,4 结果为 false;利用IN运算可以将布尔表达式写成更简单自然的形式,如:(c
41、h>=0)and(ch<=9) 改为 ch IN 0.9(ch>=a)and(ch<=z) 改为 ch IN a.z(4)集合元素的输入和输出集合变量不能直接输入和输出,我们通常这样进行:首先将集合变量值为空集,然后逐个读入集合的每个元素值,并构成单值集合与集合变量相加。为了输出一个集合变量的值,可以采用这样的办法:用IN运算逐个测试集合基类型所允许的每个元素,看它是否包含于这个集合变量中,若是则输出这个元素。5、记录类型(1)记录说明:记录类型的一般定义形式为:Type<记录类型标识符>=Record<域标识符表>:类型;<域标识符表&g
42、t;:类型;<域标识符表>:类型End;其中Record和End是两个保留字,必不可少。域标识符可以是一个标识符或多个标识符。类型可以是任何标准的或用户定义的数据类型,包括结构类型,比如数组或记录类型。例如:Typemont=(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec);date=recordmonth:mont;day:1.31;year:integer;end;Varday1,day2:date;记录类型date包括三个域:month,day和year。它们分别是枚举类型、子界类型和整型。day1和day2是记录类型变量。(
43、2)、记录类型的赋值同类型的记录变量可以整体拷贝。如:day2:= day1;给每个分量(域)可以分别赋值,此时应写出完整的域名,它由记录变量名后+圆点+域名组成。如:day1.month:=oct;day1.day:=26;day1.year:=2005;(3)with语句with语句又称为开域语句。它的引入使得对记录变量的各个域的访问更加简单。使用with语句时,只需将记录变量名写在with语句的开头,而其它地方只简单的使用域名就可以了,不用写完整的域名。例如:with day1 do 等价于:begin month:=oct; day1.month:=oct;day:=26; day1.day:=26;year:=2005; day1.year:=2005;endWith语句除了书写简单简单以外,还可以使记录变量域的访问迅速,提高编译执行效率。(4)记录数组:以记录类型作为基类型的数组称为记录数组。比如:Typealfa=packed array1.15 of char;student=record name:alfa;scord:real;grade:char;End;studenta= array1.20 of stud
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宋韵在苏轼美学中的呈现动态
- 健康传播相关试题及答案
- 行政法学优化政策执行的路径研究试题及答案
- 行政法学前景展望试题及答案
- 执业护士考试的知识体系构建及试题答案
- 2025年执业医师考试实践试题及答案
- 2025年自考行政管理就业前景试题及答案归纳
- 护士执行力2025年执业考试试题与答案
- 准备2025年文化概论考试的试题及答案清单
- 2025年自考行政管理目标管理题及答案
- 幼儿园绘本故事:《十二生肖》 课件
- 2022年湘潭职业技术学院中职部教师招聘笔试题库及答案解析
- 小学数学北师大五年级下册七用方程解决问题相遇问题导学单
- 新媒体运营知识考核试题与答案
- 金属材料的主要性能ppt课件(完整版)
- “新时代好少年”推荐表
- 规章制度文件评审表
- 草坪学实习报告模板-Copy
- K-H-V行星齿轮减速器 瞿鸿鹏
- 初中道德与法治课课堂课堂评价表
- sales-contract(中英文详版)
评论
0/150
提交评论