《枚举和子界类型》PPT课件.ppt_第1页
《枚举和子界类型》PPT课件.ppt_第2页
《枚举和子界类型》PPT课件.ppt_第3页
《枚举和子界类型》PPT课件.ppt_第4页
《枚举和子界类型》PPT课件.ppt_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第六章 枚举、子界,河师大附中信息技术教研组,以前章节简单地介绍了Pascal语言的数据类型,并较详细地讨论了整数类型、实数类型、字符类型和布尔类型等四种标准的数据类型。这些类型对应的常数、变量及函数的取值范围和它们所能执行的运算是由Pascal语言本身规定的(即程序员不必在程序中加以说明),因此称为标准类型。由于实际问题中出现的数据形式是多种多样的,若只局限于这四种标准类型来编写程序,将会限制语言的应用范围。 从本章开始,将讨论其余的数据类型。这些类型的数据,可以完全由用户自已依据Pascal语言的语法规则来确定,即进行类型定义。通过类型的定义,进一步确定它们各自的特性。 本章仅仅介绍两种用

2、户自定义型数据类型即枚举类型和子界类型。它们都属于简单数据类型。它们所包含的数据通常被称为这种类型的元素。,第一节 枚举,通过预定义(type)列出所有值的标识符来定义一个有序集合,这些值的次序与枚举类型说明中的标识符的次序是一致的。 枚举类型的一般形式: type =(标识符表); 其中括号内的标识符表是一串由逗号隔开的标识符,它列举了枚举类型所能取值的范围。例如: type colors=(red,green,blue); days=(sunday,monday,tuesday,wednesday,thursday,friday,saturday);,定义枚举类型时,需要注意的是: 1枚举

3、元素只能是标识符,而不能是数值常量或字符常量。例如下面的定义是错误的。 type days=(sun,mon,tue,wed,thu,fri,sat); number=(1,2,3,4,5); 2枚举元素是标识符,不要把作为枚举元素的标识符视作变量名,它不能被赋值。 3同一个枚举元素不能出现在两个或两个以上的枚举类型定义中。如下面的定义是错误的: type daytype1=(sunday,monday,tuesday); daytype2=(wednesday,tuesday,friday,saturday,sunday);,4枚举类型属于顺序类型。根据定义类型时各枚举元素的排列顺序确定它们

4、的序号,序号从0开始。 例如在已定义的枚举类型days中,ord(sunday)=0、succ(sunday)=Monday、pred(monday)=sunday。 枚举类型中的第一个元素无前趋,最末一个元素无后继,如pred(sunday)或succ(saturday)是错误的。 由于枚举类型常量的有序性,常常用枚举类型变量作为for语句的控制变量。假如,已有变量说明语句 var day:days,则能使用 for day:=sunday to saturday do 语句。,case语句的表达式类型也经常使用枚举类型,而分情况常量为枚举类型的标识符。例如: case day of sun

5、day: write(SUNDAY); monday: write(MONDAY); tuesday: write(TUESDAY); wednesday:write(WEDNESDAY); thursday: write(THURSDAY); friday: write(FRIDAY); saturday: write(SATURDAY); end;case 由于标准Pascal不允许直接读写枚举值,所以枚举值的输出常用case语句构造。,例6-1 一家水果店出售四种水果,每公斤价格是苹果1.5元,桔子1.40元,香蕉1.48元,波萝1.08元。编一个程序,使售货员只要在键盘上打入货品的代码

6、及重量,计算机将显示货品名、单价、重量及总价。,program example7_1; const priapple=1.50; priorange=1.40; pribanana=1.48; pripineapple=1.08; type fruittype=(apple,orange,banana,pineapple); var code:integer; weight:real; fruit:fruittype; begin main repeat writeln(1.apple;2.orange;3.banana,pineapple); writeln(input code and w

7、eight: ); readln(code, weight); until (weight0) and (code=1) or (code=2) or (code=3) or (code=4); case code of 1: fruit:=apple; 2: fruit:=orange; 3: fruit:=banana; 4: fruit:=pineapple; end; case,case fruit of apple: writeln(apple,priapple:6:2, *,weight:6:2,=, priapple*weight:8:2); orange:writeln(ora

8、nge,priorange:6:2,*,weight:6:2,=, priorange*weight:8:2); banana:writeln(banana,pribanana:6:2,*,weight:6:2,=, pribanana*weight:8:2); pineapple:writeln(pineapple,pripineapple:6:2,*,weight:6:2,=,pripineapple*weight:8:2); end case end. main,例6-2 从红、黄、兰、白、黑五个球中任取三个球,求所有可能的组合。 type colour=(red,yellow,blue

9、,white,black); var i,j,k,pri:colour; loop,n:integer; begin n:=0; for i:=red to black do for j:=red to black do if (ij) then for k:=red to black do if (ki) and (kj) then begin n :=n+1; write(n:4); for loop:=1 to 3 do begin,case loop of 1: pri:=i; 2: pri:=j; 3: pri:=k; end;case case pri of red: write(

10、 red); yellow: write(yellow); blue: write( blue); white: write( white); black: write( black); end;case end;for loop writeln; end;if writeln(TOTAL NUM: ,n); end. main,第二节 子界,子界类型是由整型,字符型,枚举型,布尔型的两个常量指定该类型的值域区间。 子界类型的一般形式: type =.; 其中,常量1称为下界,常量2称为上界,它们必须属于同一个顺序类型,不能为实型。下界必须小于等于上界。例如: var index: 1.20;

11、 letter:a.z; digit: 0.9; examscores:0.100;,一个子界类型继承它的常量类型的运算符和标准函数,常量类型相容的不同子界类型可以混合运算,可以赋值。 例如表达式examscores+digit*index是合法的;语句 examscores:=index*digit 也是正确的。然而程序执行时,若index*digit的值大于100,则会出错,因为不能给任何一个子界类型变量赋一个超出它指定界限的值。,例6-3 按月、日、年的顺序读入一个日期,输出该日期是这一年中的第几天。,program example7_3; var year: 0.2050; month

12、,i: 1.12; day: 1.31; dayth: integer; begin main readln(month,day,year); dayth:=0; for i:=1 to month-1 do case i of 1,3,5,7,8,10,12: dayth:=dayth+31; 2 : if (year mod 4=0) and (year mod 1000)or(year mod 400=0) then dayth:=dayth+29 else dayth:=dayth+28; 4,6,9,11: dayth:=dayth+30; end; case dayth:=dayt

13、h+day; writeln(month:2,/,day:2,/,year:4,=,dayth:5,th day) end. main,第四节 枚举类型和子界类型的应用,例6-4 输入星期日至星期六的英文缩写(Sun,Mon,Tue,Wed,Thu,Fri,Sat),输出完整单词。 分析 首先定义一个包含Sun、Mon、Tue、Wed、Thu、Fri和Sat的枚举类型,利用case语句,输出任一枚举值对应的完整单词。 Program ex7_4; Var Wd: (Sun,Mon,Tue,Wed,Thu,Fri,Sat); Begin For wd:=Sun to Sat do Case wd

14、 of Sun:writeln(Sunday); Mon:writeln(Monday); Tue:writeln(Tuesday); Wed:writeln(Wednesday); Thu:writeln(Thursday); Fri:writeln(Friday); Sat:writeln(Saturday) End End.,练 习 题,1.下面类型定义是否正确?为什么? (1) type char=(A,B,C,D); (2) type month=(jan,feb,mar,apr) (3) type A=(A1,A2,A3) 2编写一个程序,从键盘读入今天是星期几,输出昨天、今天、明天是星期几? 3.下述类型定义哪些有效?哪些无效?为什么? (1) type a=10.m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论