




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、会计学1枚举子界集合枚举子界集合pascal程序语言基础程序语言基础目前为止我们所用到的数据类型包括目前为止我们所用到的数据类型包括: :以上数据类型是以上数据类型是pascalpascal规定的标准数据类型,只要规定的标准数据类型,只要用相应的关键字,用相应的关键字,pascalpascal编译系统就能识别并按这编译系统就能识别并按这些类型来处理些类型来处理第1页/共46页除以上标准数据类型之外,除以上标准数据类型之外,pascalpascal还允许用户还允许用户自定义数据类型自定义数据类型数据类型数据类型简单类型简单类型构造类型构造类型指针类型指针类型基本类型基本类型枚举枚举子界子界数组数
2、组集合集合记录记录文件文件整型整型实型实型字符型字符型布尔型布尔型自定义数据类型自定义数据类型第2页/共46页变量与类型:变量与类型:var i:integer; r:real;其表示的类型含义为:其表示的类型含义为: 确定一个值域,即取值范围(确定一个值域,即取值范围(i i变量为整型,表示变量为整型,表示i i只能在只能在 整型数规定的整型数规定的-32768-327683276732767这个范围内取值,超过此范这个范围内取值,超过此范 围就会出错围就会出错 确定数据的存储方式(整型数据和实型数据在计算机中的确定数据的存储方式(整型数据和实型数据在计算机中的 存储方式是不同的存储方式是不
3、同的) ) 规定的相应运算种类(例如实型不能进行规定的相应运算种类(例如实型不能进行DIVDIV,MODMOD运算)运算)算法算法+ +数据结构数据结构= =程序程序即:不同的数据类型所使用的操作方法(算法)是不同的。即:不同的数据类型所使用的操作方法(算法)是不同的。因此,针对具体的问题选择相应的数据类型是程序设计的关键因此,针对具体的问题选择相应的数据类型是程序设计的关键第3页/共46页为什么要使用枚举类型:为什么要使用枚举类型:如性别,月份,颜色,星期几等一系列非数值问题时,我如性别,月份,颜色,星期几等一系列非数值问题时,我们应当怎样处理?们应当怎样处理?例如:使变量例如:使变量sex
4、sex为整型变量为整型变量if sex=1 then writeln(he is a man)else writeln(she is a women);缺点:不直观,可读性差缺点:不直观,可读性差if sex=man then writeln(he is a man)else writeln(she is a women);如果写成:如果写成:第4页/共46页事先考虑到某一变量尽可能取的值,尽量用自然语言中含义事先考虑到某一变量尽可能取的值,尽量用自然语言中含义清楚的单词来表示它的每一个值,这种方法称作枚举方法,清楚的单词来表示它的每一个值,这种方法称作枚举方法,这种方法定义的类型称为这种方法
5、定义的类型称为枚举类型枚举类型。枚举类型的定义:枚举类型的定义:type 枚举类型标识符枚举类型标识符=(标识符(标识符1,标识符,标识符2););type color=(red,yellow,blue,white,black); xingbie=(man,women);例如:定义颜色的枚举类型和性别的枚举类型例如:定义颜色的枚举类型和性别的枚举类型第5页/共46页枚举类型的应用举例:枚举类型的应用举例:program ex1;program ex1;typetype sextype=(man,woman); sextype=(man,woman);varvar sex:sextype; se
6、x:sextype;beginbegin sex:=women; sex:=women; if sex=man then if sex=man then writeln( writeln(he is a manhe is a man) ) else else writeln( writeln(he is a womenhe is a women); );gram ex2;program ex2;typetype colortype=(red,yellow,blue); colortype=(red,yellow,blue);varvar color:colortype;
7、color:colortype;beginbegin color=red; color=red; case color of case color of red:writeln( red:writeln(the color is redthe color is red); ); yellow:writeln( yellow:writeln(the color is yellowthe color is yellow); ); blue:writeln( blue:writeln(the color is bluethe color is blue); ); end; end;end.end.第
8、6页/共46页枚举类型的数据性质:枚举类型的数据性质: 枚举元素只能是标识符,而不能是枚举元素只能是标识符,而不能是数字常量数字常量和和 字符常量,字符常量,例如下面的定义是错误的例如下面的定义是错误的type colortpye=(red,yellow,blue); numtype=(1,2,3,4,5); 类型标识符和枚举元素不得使用类型标识符和枚举元素不得使用pascal中的保留字中的保留字和关键字,否则编译时将出错误和关键字,否则编译时将出错误 同一个枚举元素不能出现在两个或两个以上的枚举同一个枚举元素不能出现在两个或两个以上的枚举 类型定义中类型定义中type color1=(red
9、,yellow,blue); color2=(red,black,white);是不允许的,因为是不允许的,因为red同属于了两个枚举类型同属于了两个枚举类型。第7页/共46页 不要把作为枚举元素的标识符视为变量名,它是不能不要把作为枚举元素的标识符视为变量名,它是不能 被赋值的,下面的赋值是错误的被赋值的,下面的赋值是错误的Red=red woman=0 枚举类型属于顺序类型枚举类型属于顺序类型。根据定义类型时个枚举元素。根据定义类型时个枚举元素 的排列顺序确定它们的序号。(前面的序号小,从的排列顺序确定它们的序号。(前面的序号小,从0 开始)例如:开始)例如:type colortype=
10、(red,yellow,blue,white,black);则则ord(red)=0 succ(red)=yellow pred(black)=white第8页/共46页 枚举型数据只能进行关系运算(枚举型数据只能进行关系运算(=, =)不能进行算术运算()不能进行算术运算(+,-,*)和逻辑运算)和逻辑运算 (and,or) 枚举变量的值只能枚举变量的值只能用赋值语句来获得用赋值语句来获得,不能对枚举变,不能对枚举变 量进行读写。如下语句都是不合法的:量进行读写。如下语句都是不合法的:typetype colortype=(red,yellow,blue,white,black); colo
11、rtype=(red,yellow,blue,white,black);VarVar color:colortype; color:colortype;BeginBegin read(color); read(color);或或write(color);write(color);总之:枚举类型的数据不能用总之:枚举类型的数据不能用readread和和writewrite语句进行读写语句进行读写第9页/共46页 枚举变量可以作为循环变量。枚举元素可以作为循枚举变量可以作为循环变量。枚举元素可以作为循 环的初值和终值。环的初值和终值。如:如: for color:=red to black do共
12、执行共执行5次循环(次循环(color=red-yellow-blue- white-black)第10页/共46页教材例教材例6-1的分析的分析如:如: for color:=red to black do共执行共执行5次循环(次循环(color=red-yellow-blue- white-black)For i:=apple to orange do for j:=succ(i) to banana do for k:=succ(j) do pineapple do可改成:可改成:For i:=apple to pineapple do for j:=apple to pineapple
13、 do if ij thenfor k:=apple to pineapple do if (ik) and (jk) then begin第11页/共46页constft:array1.4 of string=(苹果苹果 ,橙子橙子 ,香蕉香蕉 ,菠萝菠萝 );vari,j,k,l:0.1;beginfor i:=0 to 1 dofor j:=0 to 1 dofor k:=0 to 1 dofor l:=0 to 1 doif i+j+k+l =3 then beginif i=1 then write(ft1);if j=1 then write(ft2);if k=1 then wr
14、ite(ft3);if l=1 then write(ft4);writeln;end;end.第12页/共46页取球问题:求从红、黄、蓝、白、黑五种颜色的球中,取球问题:求从红、黄、蓝、白、黑五种颜色的球中,取三种颜色的球的可能的取法,用取三种颜色的球的可能的取法,用redred、yellowyellow、blueblue、whitewhite、blackblack描述三种上颜色的所有可能的取法。描述三种上颜色的所有可能的取法。输入格式:输入格式: 无无输出格式:输出格式:输出每种取法的序号输出每种取法的序号( (占占4 4个字符位,左对齐个字符位,左对齐) )和三种颜色和三种颜色( (每种
15、颜色占每种颜色占1010个字符位,左对齐个字符位,左对齐) )输出样例:输出样例:1 1RedRed yellowyellow blueblue2 2RedRed yellowyellow whitewhite第13页/共46页实际问题实际问题: :一年中有多少个月一年中有多少个月? ?每一个月最多有多少天每一个月最多有多少天? ?一个班最多有一个班最多有多少个人多少个人? ?integerinteger类型所表示的范围是多少类型所表示的范围是多少? ?如果我们能在程序中对所有的变量的值域如果我们能在程序中对所有的变量的值域( (取值范围取值范围) )作具作具体规定的话体规定的话, ,就便于检
16、查出那些不合法的数据就便于检查出那些不合法的数据例如一月中的日期只能是例如一月中的日期只能是1-311-31之间的一个数值之间的一个数值, ,由于误操作输由于误操作输入了入了32,pascal32,pascal就能指出这个错误就能指出这个错误, ,不需要人工的干预不需要人工的干预. .第14页/共46页子界类型子界类型: :规定的值域的规定的值域的上界上界和和下界下界及其及其类型类型的一种数据类型的一种数据类型子界类型的定义子界类型的定义: :TypeType days=1.31; days=1.31;Var Var someday:days someday:days 定义了一个定义了一个da
17、ysdays类型的变量类型的变量somedaysomeday somedaysomeday变量值的变量值的数据类型(基类型)为整型数据类型(基类型)为整型 somedaysomeday的值只能在的值只能在1 13131范围范围第15页/共46页子界类型定义说明:子界类型定义说明: 上界和下界必须是顺序类型,且为同一顺序类型。也上界和下界必须是顺序类型,且为同一顺序类型。也就是说整型,字符型,布尔型,枚举型数据都可以作就是说整型,字符型,布尔型,枚举型数据都可以作为上、下界。并且上界序号必须大于下界序号。为上、下界。并且上界序号必须大于下界序号。TypeType age=0.5.100 age=
18、0.5.100 letter1=0.z letter1=0.z letter2=a.z letter2=a.z letter3=z.a letter3=z.a以上定义的子界类型中哪些正确、哪些错误?为什么?以上定义的子界类型中哪些正确、哪些错误?为什么?第16页/共46页 子界类型的上、下界确定了子界类型的基类型。子界类型的上、下界确定了子界类型的基类型。由于由于1和和31都是属整型数据,因此都是属整型数据,因此days类型的基类型类型的基类型为整型;为整型; someday变量的值为整型变量的值为整型 其值范围在其值范围在131之间之间TypeType days=1.31; days=1.3
19、1;Var Var someday:days someday:days 如果子界类型的基类型为枚举型,则应在类型中先如果子界类型的基类型为枚举型,则应在类型中先 定义枚举类型定义枚举类型type type week=(mon,tue,wed,thu,fri,sat,sun);week=(mon,tue,wed,thu,fri,sat,sun); studyday=mon.fri; studyday=mon.fri;varvar day1:studyday; day1:studyday;day1day1变量的值只能变量的值只能取取mon,tue,wed,thu,mon,tue,wed,thu,f
20、rifri之一之一第17页/共46页子界类型的作用:子界类型的作用: 在程序设计中对数据在程序设计中对数据“界界”的检查是很重要的一项的检查是很重要的一项 工作而又常常被人忽略。定义子界类型后,就可工作而又常常被人忽略。定义子界类型后,就可 以把界的检查工作交给编译器完成,不需要人工以把界的检查工作交给编译器完成,不需要人工 进行。进行。 节省内存空间,增强程序的可读性。节省内存空间,增强程序的可读性。第18页/共46页子界类型的运算规则:子界类型的运算规则: 凡可以使用子界类型的基类型数据之处,均可以使凡可以使用子界类型的基类型数据之处,均可以使 用子界类型的数据。用子界类型的数据。type
21、type r=1.10; r=1.10;VarVar radius:r; radius:r;问问sqr(radius)合法吗?合法吗? 对基类型的运算规则同样适用于该类型的子界类型。对基类型的运算规则同样适用于该类型的子界类型。TypeType person=1.100; person=1.100;Var Var total:person total:person;问:问:total div 100 total mod 100 total div 100 total mod 100 合法吗?合法吗?第19页/共46页 基类型相同的不同子界类型数据,可以出现在同基类型相同的不同子界类型数据,可以
22、出现在同 一个表达式内,即混合运算一个表达式内,即混合运算type a=1.100; b=1.1000; c=1.500;var x:a; y:b; z:c; t:integer;begin read(x,y,z); t:=x+y+z; writeln(t=,t);end.输入:输入:50 100 15050 100 150问:将红色标出部分改为问:将红色标出部分改为 z:=x+y+z;z:=x+y+z;合法吗?合法吗?第20页/共46页结论:在上例中当然也可以将表达式的值赋给一个子界类型结论:在上例中当然也可以将表达式的值赋给一个子界类型 变量,因为表达式中的几个子界类型的变量的变量,因为表
23、达式中的几个子界类型的变量的基类型基类型 都是整型,都是整型,但是要注意:运算结果不能超出它在类型但是要注意:运算结果不能超出它在类型 说明中定义的范围说明中定义的范围上例中如果将红色标出部分改上例中如果将红色标出部分改为为x:=x+y+z;x:=x+y+z;合法吗?合法吗?X X为为5050,y y为为100100,z z为为150150,将运算结果,将运算结果x+y+zx+y+z的值的值300300赋给赋给x x,这超出了,这超出了x x的取值范围(的取值范围(0.1000.100),就会出错。),就会出错。第21页/共46页program cas;var c:char;begin rea
24、dln(c); case c of 0.9:writeln(digits); A.Z:writeln(UPPER-CASELETTERS); a.z:writeln(lower-caseletters); else writeln(special charactors); end;end.可以利用子界类型作为情况语句标号可以利用子界类型作为情况语句标号对数字,对数字, 大小写字母和特殊字符进行判别的程序大小写字母和特殊字符进行判别的程序第22页/共46页第23页/共46页集合(数学)集合的概念:某些具有集合的概念:某些具有共性共性,又相互区别又相互区别的对象汇的对象汇集在一起所构成的整体集在一
25、起所构成的整体0 02020之间的所有素数;之间的所有素数; 共性:小于共性:小于2020的素数,相互区别:的素数,相互区别:各元素有不同的值各元素有不同的值 2626个小写英文字母;(共性:小写英文字母,相互区别:各个小写英文字母;(共性:小写英文字母,相互区别:各自的写法和读法都不同。自的写法和读法都不同。第24页/共46页1. 1.枚举法:将集合中的所有元素列举出来枚举法:将集合中的所有元素列举出来对于上例对于上例1 1可写成:可写成:元素元素 2 2,3 3,5 5,7 7,1111,1313,1717,19 19 集合集合集合的特点:集合的特点:1. 1.同一性;同一性; 2. 2.
26、无序性;无序性; 3. 3.唯一性唯一性第25页/共46页无序性:无序性:1 1,3 3,5 5,7 = 17 = 1,5 5,3 3,7 7 唯一性:唯一性: 1 1,3 3,5 5,7 = 17 = 1,5 5,3 3,3 3,7 7 第26页/共46页2 . 2 . 不属于不属于5 5 2 2,3 3,5 5,7 7,1111,1313,1717,19 19 1 . 1 . 属于属于一个元素可以属于和不属于某一个集合,分别用一个元素可以属于和不属于某一个集合,分别用和和表示表示5 5 2 2,4 4,6 6,8 8,1010,1212,1414,16 16 第27页/共46页1. 1.相
27、等关系相等关系两个集合的成员完全相同时,称这两个集合相等。两个集合的成员完全相同时,称这两个集合相等。2 2,3 3,5 5,7 = 27 = 2,3 3,5 5,7 7 2 2,3 3,5 5,7 = 27 = 2,5 5,3 3,7 7 2 2,3 3,5 5,7 = 27 = 2,5 5,3 3,3 3,7 7 第28页/共46页集集A A的的所有成员所有成员都是集都是集B B的所有成员时,称的所有成员时,称B B蕴含蕴含A A,或称,或称A A是是B B的子集合的子集合2. 2.蕴涵关系蕴涵关系 2 2,3 23 2,3 3,5 5,7 7 2 2,3 3,5 5,7 27 2,3 3
28、,5 5,7 7 2 2,3 3,9 29 2,3 3,5 5,7 7 问问第29页/共46页3. 3.空集:空集:空集是任何集合的子集空集是任何集合的子集4. 4.幂集:一个集合的所有子集所组成的集合称为此集合的幂集:一个集合的所有子集所组成的集合称为此集合的 幂集。幂集。 1 1,2 2,3 3 的幂集是:的幂集是: ,11,22,33,1 1,2 2,1 1,3 3,2 2,3 3, 1 1,2 2,3 3 没有任何元素的集合称为空集,记作没有任何元素的集合称为空集,记作 或或第30页/共46页1. 1.交交运算运算A A B B A A B B 1 1,2 2,3 3 2 2,3 3,
29、5 5,7 7 2 2,3 3集集A A和集和集B B共有的成员所组成的集合共有的成员所组成的集合第31页/共46页1. 1.并并运算运算A A B B 2 2,3 3,5 5 5 5,7 7 2 2,3 3,5 5,7 7集集A A和集和集B B的所有成员并起来(重复的只算一个)所组成的所有成员并起来(重复的只算一个)所组成的一个新集合的一个新集合A A B B 第32页/共46页1. 1.差差运算运算A A - -B B 2 2,3 3,5 5 - 5 5,7 7 2 2,3 3集集A A的成员去掉集的成员去掉集B B中也包含的成员所组成的一个新集合中也包含的成员所组成的一个新集合;(相当
30、于;(相当于A A- -(A AB B)A A B B 第33页/共46页PascalPascal定义集合类型的一般形式定义集合类型的一般形式: : = set of = set of 基类型基类型第34页/共46页typetype int1=0.255; int1=0.255; weekday=(sun,mon,tue,wed,thu,fri,sat,sun); weekday=(sun,mon,tue,wed,thu,fri,sat,sun); weekset=set of weekday;weekset=set of weekday; intset=set of int1 intset=
31、set of int1varvar wvar:weekset; wvar:weekset; ivar:intset; ivar:intset;或写成或写成 varvar wvar: set of weekday;wvar: set of weekday; ivar: set of int1; ivar: set of int1;第35页/共46页规则:规则:pascalpascal规定一个集合的元素个数不能超规定一个集合的元素个数不能超 过过256256个;(也就是说个;(也就是说基类型基类型所表示的值(整所表示的值(整 数)的范围不能超过数)的范围不能超过256256) 2 2基类型的序数值
32、必须在基类型的序数值必须在0 0255255的范围内。的范围内。思考思考typetype int0=set of integer; int0=set of integer; int1=set of -20. . 100; int1=set of -20. . 100; int2=set of 50. . 300; int2=set of 50. . 300; int3= 1int3= 1,sqrt(4)sqrt(4),sqrt(4)+1,sqr(4)sqrt(4)+1,sqr(4) 第36页/共46页在在pascalpascal中使用集合的一些规则:中使用集合的一些规则:1 1表示集合的符号是
33、表示集合的符号是 。例如:。例如:22,332 2集合的值放在一对集合的值放在一对 中,各元素用中,各元素用“,”隔开。隔开。3 3集合内的值与集合内的值与 内元素出现的次序无关。内元素出现的次序无关。22,3=33=3,224 4集合中的同一元素的重复出现对集合的值没有影响。集合中的同一元素的重复出现对集合的值没有影响。 22,2 2,3=23=2,335 5“ ”用来表示空集。用来表示空集。6 6集合中,如果元素的值是连续的,则可用集合中,如果元素的值是连续的,则可用“. . .”来表示。来表示。 11,2 2,3 3,4 4,5 5,7 7,8 8,9=1. .59=1. .5,7. .
34、9 7. .9 7 7每个元素可以用基类型的表达式来表示。每个元素可以用基类型的表达式来表示。 11,succ(4)succ(4),ord(a),pred(4)ord(a),pred(4)第37页/共46页集合的运算的数学符号和集合的运算的数学符号和pascalpascal符号对照表符号对照表数学数学pascalin第38页/共46页集合变量的读入:集合变量的读入:只能通过赋值语句给集合变量赋值,不能用只能通过赋值语句给集合变量赋值,不能用readread语句给语句给集合变量赋值。集合变量赋值。( (跟枚举类型变量一样跟枚举类型变量一样)color:=color:=;color2:=red ,
35、 black;color2:=red , black;第39页/共46页集合集合并,交,差并,交,差运算:运算:,A:= 1A:= 1,3 3,4 4 ;B:= 1B:= 1,2 2,4 ;4 ;A+B=A+B=? ?A-B=A-B=? ?A A* *B=B=? ?第40页/共46页集合的集合的关系关系运算:运算:=,= =,11,3 3,5 5 =11,5511,3 3,5 5 =11,5 5,3 3,77 =11,5 5,33第41页/共46页集合元素的测试:(集合元素的测试:(in in)判断一个元素是否在某个集合当中。判断一个元素是否在某个集合当中。1 1 in in11,5 5,3 3,7 7 7 7 in in11,5 5,33集合的输出:不能直接用集合的输出:不能直接用writewrite语句对集合变量进行输出语句对集合变量进行输出第42页/共46页1. 1.若若a a是是 a a , , c c , , f f , , u u ,b b是是 c c , , d d , , e e, , f f , , g g
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 象棋知识培训教案课件
- 2025年安防产品购销合同书标准范本
- 2025版人工智能产业融资合作协议合同范本
- 2025大连二手房地产抵押贷款服务合同
- 2025年度生态农业产品店铺装修补贴及农产品直销合同
- 2025不锈钢玻璃地弹门工程环保验收及排放合同
- 2025版融资租赁合同违约责任及处理办法
- 2025版智能物流国内货物公路运输服务合同模板
- 请假条说课课件
- 2025制片合同产品样本
- 2025年秋新北师大版数学三年级上册全册教学设计
- 2025-2026人教版(2024)物理九年级全册教学进度表
- 义务教育质量监测学校成绩分析报告
- 2025版房地产抵押按揭续贷合同
- 2025年秋季小学四年级上册语文教学计划及教学进度表
- 北京市西城区2024-2025学年七年级下学期期末道德与法治试题(解析版)
- 2025年广东省高考化学试题(含答案解析)
- 【2025秋新版】三年级上册语文生字组词
- 《智能建造概论》高职完整全套教学课件
- 2025年中小学教师师德师风考试题库及答案
- 节能环保供货保证措施
评论
0/150
提交评论