第6章1枚举子界集合(pascal程序语言基础).ppt
《第6章1枚举子界集合(pascal程序语言基础).ppt》由会员分享,可在线阅读,更多相关《第6章1枚举子界集合(pascal程序语言基础).ppt(46页珍藏版)》请在三一文库上搜索。
1、,枚举、子界、集合,pascal语言中的数据类型,目前为止我们所用到的数据类型包括:,整型(integer longint) 实型(real double) 布尔型(boolean) 字符型(char),以上数据类型是pascal规定的标准数据类型,只要 用相应的关键字,pascal编译系统就能识别并按这些类型来处理,pascal语言中的数据类型,除以上标准数据类型之外,pascal还允许用户自定义数据类型,变量与类型:,var i:integer; r:real;,其表示的类型含义为:,确定一个值域,即取值范围(i变量为整型,表示i只能在 整型数规定的-3276832767这个范围内取值,超
2、过此范 围就会出错 确定数据的存储方式(整型数据和实型数据在计算机中的 存储方式是不同的) 规定的相应运算种类(例如实型不能进行DIV,MOD运算),算法+数据结构=程序,即:不同的数据类型所使用的操作方法(算法)是不同的。,因此,针对具体的问题选择相应的数据类型是程序设计的关键,枚举类型,为什么要使用枚举类型:,如性别,月份,颜色,星期几等一系列非数值问题时,我们应当怎样处理?,例如:使变量sex为整型变量,if sex=1 then writeln(he is a man) else writeln(she is a women);,缺点:不直观,可读性差,if sex=man then
3、writeln(he is a man) else writeln(she is a women);,如果写成:,事先考虑到某一变量尽可能取的值,尽量用自然语言中含义清楚的单词来表示它的每一个值,这种方法称作枚举方法,这种方法定义的类型称为枚举类型。,枚举类型,枚举类型的定义:,type 枚举类型标识符=(标识符1,标识符2);,type color=(red,yellow,blue,white,black); xingbie=(man,women);,例如:定义颜色的枚举类型和性别的枚举类型,枚举类型,枚举类型的应用举例:,program ex1; type sextype=(man,wom
4、an); var sex:sextype; begin sex:=women; if sex=man then writeln(he is a man) else writeln(he is a women); end.,program ex2; type colortype=(red,yellow,blue); var color:colortype; begin color=red; case color of red:writeln(the color is red); yellow:writeln(the color is yellow); blue:writeln(the color
5、 is blue); end; end.,枚举类型,枚举类型的数据性质: 枚举元素只能是标识符,而不能是数字常量和 字符常量,例如下面的定义是错误的,type colortpye=(red,yellow,blue); numtype=(1,2,3,4,5);,类型标识符和枚举元素不得使用pascal中的保留字 和关键字,否则编译时将出错误,同一个枚举元素不能出现在两个或两个以上的枚举 类型定义中,type color1=(red,yellow,blue); color2=(red,black,white); 是不允许的,因为red同属于了两个枚举类型。,不要把作为枚举元素的标识符视为变量名,它
6、是不能 被赋值的,下面的赋值是错误的,Red=red woman=0,枚举类型,枚举类型属于顺序类型。根据定义类型时个枚举元素 的排列顺序确定它们的序号。(前面的序号小,从0 开始)例如:,type colortype=(red,yellow,blue,white,black); 则ord(red)=0 succ(red)=yellow pred(black)=white,枚举类型,枚举型数据只能进行关系运算(=, =)不能进行算术运算(+,-,*)和逻辑运算 (and,or),枚举变量的值只能用赋值语句来获得,不能对枚举变 量进行读写。如下语句都是不合法的:,type colortype=(
7、red,yellow,blue,white,black); Var color:colortype; Begin read(color);或write(color);,总之:枚举类型的数据不能用read和write语句进行读写,枚举变量可以作为循环变量。枚举元素可以作为循 环的初值和终值。,如: for color:=red to black do 共执行5次循环(color=red-yellow-blue- white-black),枚举类型,教材例6-1的分析,如: for color:=red to black do 共执行5次循环(color=red-yellow-blue- whit
8、e-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 do if ij then for k:=apple to pineapple do if (ik) and (jk) then begin ,枚举类型的应用 例6-1解法2,const ft:array14 of string=(苹果 ,橙子 ,香蕉 ,菠萝 ); var
9、i,j,k,l:01; begin for i:=0 to 1 do for j:=0 to 1 do for k:=0 to 1 do for l:=0 to 1 do if i+j+k+l =3 then begin if i=1 then write(ft1); if j=1 then write(ft2); if k=1 then write(ft3); if l=1 then write(ft4); writeln; end; end.,课堂练习,取球问题:求从红、黄、蓝、白、黑五种颜色的球中,取三种颜色的球的可能的取法,用red、yellow、blue、white、black描述三
10、种上颜色的所有可能的取法。 输入格式: 无 输出格式: 输出每种取法的序号(占4个字符位,左对齐)和三种颜色(每种颜色占10个字符位,左对齐) 输出样例: Red yellow blue Red yellow white ,子界类型,实际问题:,一年中有多少个月?每一个月最多有多少天?一个班最多有多少个人?,integer类型所表示的范围是多少?,如果我们能在程序中对所有的变量的值域(取值范围)作具体规定的话,就便于检查出那些不合法的数据,例如一月中的日期只能是1-31之间的一个数值,由于误操作输入了32,pascal就能指出这个错误,不需要人工的干预.,子界类型,子界类型:规定的值域的上界和
11、下界及其类型的一种数据类型,子界类型的定义:,Type days=131; Var someday:days,定义了一个days类型的变量someday someday变量值的数据类型(基类型)为整型 someday的值只能在131范围,子界类型,子界类型定义说明:,上界和下界必须是顺序类型,且为同一顺序类型。也就是说整型,字符型,布尔型,枚举型数据都可以作为上、下界。并且上界序号必须大于下界序号。,Type age=0.5100 letter1=0z letter2=az letter3=za,以上定义的子界类型中哪些正确、哪些错误?为什么?,子界类型的上、下界确定了子界类型的基类型。,由于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 枚举 集合 pascal 程序语言 基础
链接地址:https://www.31doc.com/p-2257283.html