好文档 - 专业文书写作范文服务资料分享网站

广东省汕头市金山中学高中信息技术竞赛班第二阶段培训第四课自定义数据类型教案

天下 分享 时间: 加入收藏 我要投稿 点赞

§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型由加、减、乘、除四个成份组成。接下来的变量说明中,类型,即这两个变量只能在组成p3被说明为operator

型。

days的七种成份中取值。

today、holiday

被说明为days

f被说明为colors型,p1、p2、

枚举型的定义可以不预先在类型定义中定义类型标识符,而在说明中直接定义枚举类型,如上例中,可省去

type类型定义,将变量说明改为:

var p1 , p2 , p3 : (plus , minus , times , divide) 【注意】

①每个枚举类型所允许的枚举值,必须全部列在其后的括号中;

②枚举值只能是标识符(单个字符或以字母开头的字母数字组合);

③每个枚举值只能出现在一个枚举类型定义中,并且只能在该定义中出现一次;④枚举变量只能在该枚举类型定义的值中取,即变量的取值受变量的类型限制;如下列枚举类型定义都是错误:

type

zm = (‘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 (p1);

read或write语句直接读写。或 write (p2);

都是错误的。

但枚举变量可以赋值,如: f := blue; p1:= plus; p2:= p1;

4.枚举类型是有序类型,即在类型定义中列出的值是有序的。

它的序号从0开始,按自左至右,从小到大的顺序编排。如在号为0,mon为1,……,satur为6。

因此枚举类型的量可以进行关系比较运算,如可用于枚举类型的标准函数有:

mon < wed 。

days类型中, sun的序

pred、succ、ord。

的前驱元素为的后继元素为

对应的序号为

3}

blue}

如: pred (green) = blue; { green succ (red) = yellow; {red ord (Wed) = 3; {Wed【例1】取球问题

yellow}

黑箱中有红、黄、蓝、白、黑五种颜色的球(数量均有多个)求取出三种颜色的球的所有可能。思路分析:

,现从箱中依次取三个球,

我们穷举出所有的可能,从中输出符合条件的方案,并统计方案总数。设每次取出的球依次为次取出的球颜色不同时,

i,j,k,它们分别是五种色球之一。当第

2次取出的球与第

则输出该方

1

才看第3次取出的球,若三次取出的球颜色互不相同,

案。但枚举变量不能直接输出,我们利用了避免重复写三个结构相似的

case语句来输出“red”、“yellow”等字符串。为

i、j、k),设一中间变量

p来存放

case语句(分别用来输出

某一球的颜色,循环三次,p依次代表i、j、k的颜色,每次根据p值来输出相应的字符串。

program type

color = ( red , yellow , blue , while , black );

var

i , 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 (i<>j) then

for k:=red to black do {

列举第3次取球的所有可能

}

if (k<>i) and (k<>j) then begin

n:=n+1;

write(n ,

’ :

’);

for loop :=1 to 3 do begin

case loop of

1 : 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; {for} writeln;

end; {if} writeln (‘total: ’,n); {

输出方案总数}

end.

§4.2 子界类型

Pascal语言允许说明变量的范围,通过定义子界类型来限定数据的取值范围。.子界类型定义的一般形式为:子界类型标识符> = <下界> . . <

上界>;

其中下界必须小于等于上界,且属于同一有序类型的常量(可以是整型、布尔型、字

1 TYPE <

广东省汕头市金山中学高中信息技术竞赛班第二阶段培训第四课自定义数据类型教案

§4自定义数据类型Pascal语言允许用户按语法规则自己定义一些数据类型。数据类型定义的一般形式为:TYPE=;§4.1枚举类型在程序设计中常用到一些非数值的数据,如:月份、星期、颜色、科目等。在程序中直接用自然语言来代表这些数据,将使程序易读易理解。枚举类型是用户自定义类型,值。<
推荐度:
点击下载文档文档为doc格式
68t806dg3z6b8ve00zsa83uyx967u500var
领取福利

微信扫码领取福利

微信扫码分享