



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4 自定义数据类型pascal语言允许用户按语法规则自己定义一些数据类型。数据类型定义的一般形式为:type = ;4.1 枚举类型在程序设计中常用到一些非数值的数据,如:月份、星期、颜色、科目等。在程序中直接用自然语言来代表这些数据,将使程序易读易理解。枚举类型是用户自定义类型,用户能够直接用标识符来依次列举枚举类型的每一种可取值。1枚举类型定义的一般形式为:type = (标识符表);其中标识符表是一串用逗号隔开的标识符,它列举了枚举类型所有可取的值。2上面仅仅是类型的定义,使用枚举类型的变量还需进行类型说明: var : ;例如: type days = (sun , mon , tue , wed , thur , fri , satur); colors = (red , yellow , blue , green , black , white); operator = (plus , minus , times , divide)var today , holiday : days; f : colors; p1 , p2 , p3 : operator;上例中,首先进行类型定义,days定义了一星期中的各天,由星期日、一、二、六共七各成份组成;命名为colors的枚举类型由红、黄、蓝、绿、黑、白六种颜色;operator型由加、减、乘、除四个成份组成。接下来的变量说明中,today、holiday被说明为days类型,即这两个变量只能在组成days的七种成份中取值。f被说明为colors型,p1、p2、p3被说明为operator型。枚举型的定义可以不预先在类型定义中定义类型标识符,而在说明中直接定义枚举类型,如上例中,可省去type类型定义,将变量说明改为:var p1 , p2 , p3 : (plus , minus , times , divide)【注意】 每个枚举类型所允许的枚举值,必须全部列在其后的括号中; 枚举值只能是标识符(单个字符或以字母开头的字母数字组合); 每个枚举值只能出现在一个枚举类型定义中,并且只能在该定义中出现一次; 枚举变量只能在该枚举类型定义的值中取,即变量的取值受变量的类型限制;如下列枚举类型定义都是错误:typezm = (a , b , c , d ); sz = ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ); t1 = (sum , mon , tue , wed , sun ); t2 = ( wed , thu , fri , sat ); 3枚举类型的变量不能用read或write语句直接读写。如: read (p1); 或 write (p2); 都是错误的。 但枚举变量可以赋值,如: f := blue; p1:= plus; p2:= p1;4枚举类型是有序类型,即在类型定义中列出的值是有序的。它的序号从0开始,按自左至右,从小到大的顺序编排。如在days类型中, sun的序号为0,mon为1,satur为6。因此枚举类型的量可以进行关系比较运算,如mon wed 。可用于枚举类型的标准函数有:pred、succ、ord。如: pred (green) = blue; green 的前驱元素为blue succ (red) = yellow; red的后继元素为yellow ord (wed) = 3; wed对应的序号为3【例1】取球问题黑箱中有红、黄、蓝、白、黑五种颜色的球(数量均有多个),现从箱中依次取三个球,求取出三种颜色的球的所有可能。思路分析:我们穷举出所有的可能,从中输出符合条件的方案,并统计方案总数。设每次取出的球依次为i,j,k,它们分别是五种色球之一。当第2次取出的球与第1次取出的球颜色不同时,才看第3次取出的球,若三次取出的球颜色互不相同,则输出该方案。但枚举变量不能直接输出,我们利用case语句来输出“red”、“yellow”等字符串。为了避免重复写三个结构相似的case语句(分别用来输出i、j、k),设一中间变量p来存放某一球的颜色,循环三次,p依次代表i、j、k的颜色,每次根据p值来输出相应的字符串。programtypecolor = ( red , yellow , blue , while , black );vari , j , k , pri : clolor;loop , n : integer;begin n:=0; for i := red to black do 列举第1次取球的所有可能 for j := red to black do 列举第2次取球的所有可能if (ij) thenfor k:=red to black do 列举第3次取球的所有可能if (ki) and (kj) then begin n:=n+1; write(n , : ); for loop :=1 to 3 do begincase loop of1 : pri:=i;2 : pri:=j;3 : pri:=k;end;case pri of 根据pri的值输出对应字符串red : write (red) ;yellow : write (yellow);blue : write (blue);white : write (white);black : write (black);end;end; forwriteln; end; if writeln (total: ,n); 输出方案总数end.4.2 子界类型pascal语言允许说明变量的范围,通过定义子界类型来限定数据的取值范围。1子界类型定义的一般形式为: type = . . ;其中下界必须小于等于上界,且属于同一有序类型的常量(可以是整型、布尔型、字符型、枚举型,但不能是实型)。2子界类型变量说明: var : ;例如: type month = 1 . . 12; letter = a . . z;var m1 , m2 : month; c1 , c2 , d1 , d2 : letter;我们对子界类型变量(如m1,c1等)的赋值和运算必须在子界类型所定义的范围内,否则程序运行时会出错。子界类型是有序的,其元素序号是该元素在宿主类型中的序号。如对枚举子界变量求序数,得到的是相应枚举型数据本身的序号;而字符子界变量的序数是对应的ascii码(十进制数)。【例2】字符判别。输入一字符,判别属于数字、大写字符、小写字符或其它字符。program zf; var c : char;begin readln (c); case c of0 . . 9 : writeln (digits);a . . z : writeln (upper-letter);a . . z : writeln (lower-letter);else writeln (other); end;end.练 习 四1. 下列哪组类型的变量可以作为for循环中的循环控制变量 ( ) a枚举型和实数型 b. 枚举型和记
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年下半年吉林延边公交集团公开招聘10人易考易错模拟试题(共500题)试卷后附参考答案-1
- 高铁制梁场复垦施工合同(3篇)
- 高速公路改造合同模板(3篇)
- 安全施工考试题及答案
- 高明租房合同台账模板(3篇)
- 事业单位聘用合同解除与竞业限制期限合同
- 2025河南公务员面试题及答案
- 《中小学校学生家长参与学校课程改革协议》
- 股权代持解除与控制权恢复-法律程序与执行合同
- 中央预算单位公务卡支付结算与财务管理合作协议
- 第3章 即时定位与地图构建技术课件讲解
- 锚杆格梁施工合同书
- 汽车用品采购合同
- P.E.T.父母效能训练
- 《研学旅行课程设计》课件-了解研学旅行概念
- 传统中医针灸技术操作规范
- 沅陵旅游宣传方案
- 个人防护用品使用和检查知识
- MBTI量表完整版本
- 《检验手册》全文
- 基本不等式-高考历年真题
评论
0/150
提交评论