集合类型

文档属性

名称 集合类型
格式 rar
文件大小 16.3KB
资源类型 教案
版本资源 通用版
科目 信息技术(信息科技)
更新时间 2010-10-17 23:54:00

图片预览

文档简介

(共22张PPT)
枚举子界作业:P135
6.1 (today yesterday)
6.2
6.1 输入今天是星期几的序号,给今天和昨天赋成枚举值,并输出昨天是星期几的枚举值。
Program ex61(input,output);
Type
day=(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);
Var today,yesterday: day; number: integer;
Begin
read(number);
CASE number OF
0 : today:=Sunday;
1 : today:=Monday;
2 : today:=Tuesday;
3 : today:=Wednesday;
4 : today:=Thursday;
5 : today:=Friday;
6 : today:=Saturday
End;
If today=Sunday
Then yesterday:=Saturday
Else yesterday:=pred(today);
write(‘ yesterday is ’);
CASE yesterday OF
Sunday : writeln(‘Sunday’);
Monday : writeln(‘Monday’);
Tuesday : writeln(‘Tuesday’);
Wednesday : writeln(‘Wednesday’);
Thursday : writeln(‘Thursday’);
Friday : writeln(‘Friday’);
Saturday : writeln(‘Saturday’)
End
End.
6.2 输入年、月、日,输出它是该年的第几天?
PROGRAM ex62 ( input , output ) ;
VAR year :1..10000; month:1..12; day:1..31;
days:28..31; s:1..366; i:integer;
BEGIN
read( year , month , day ) ;
s:=day;
for i:= 1 to month-1 do
begin
CASE i OF
1,3,5,7,8,10,12 : days:=31 ;
4,6,9,11 : days:=30 ;
2 : IF (year MOD 4=0) AND (year MOD 100<>0)
OR (year MOD 400=0)
THEN days:=29
ELSE days:=28
end;
s:=s+days
end;
writeln( ‘ It is ’, s, ‘th’)
END.
标准数据类型
实型、整型、字符型、布尔型
用户定义类型
枚举类型、子界类型
结构类型
数组类型、集合类型、记录类型、文件类型
指针类型
书本第25页
数组类型格式:
TYPE
<数组类型标识符> = ARRAY [<下标类型>] OF <基类型>;
VAR
<数组类型变量表> : <数组类型标识符>;

VAR
<数组类型变量表>:ARRAY [<下标类型>] OF <基类型>;
VAR
<数组类型变量表>:ARRAY [<下标类型>] OF <基类型>;
数组例子:
Var
n : ARRAY [1 ..10] OF real;
num : ARRAY [‘a’ .. ‘z’] OF integer;
集合类型格式:
TYPE
<集合类型标识符> = SET OF <基类型>;
VAR
<集合类型变量表> : <集合类型标识符>;

VAR
<集合类型变量表> : SET OF <基类型>;
TYPE
<集合类型标识符> = SET OF <基类型>;
VAR
<集合类型变量表> : <集合类型标识符>;
集合例子:
TYPE
digit = SET OF 1..9;
VAR
od,even : digit;
BEGIN
od:=[1,3,5,7,9];
even:=[2,4,6,8];
基类型必须是有序类型。可以是整型子界、字符型、布尔型、枚举型。整型、实型、数组不能作为集合的基类型。
集合类型说明: TYPE
<集合类型标识符> = SET OF <基类型>;
VAR
<集合类型变量表> : <集合类型标识符>;
赋值
Type
month=(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec);
monthset = SET OF month;
Var
winter,summer : monthset;
Begin
winter:=[dec,jan,feb];
summer:=[jun..aug];
全集 [ jan..dec ]
空集 [ ]
赋值
Type
letterset = SET OF ‘a’ .. ‘z’;
Var
vowel,letter : letterset;
Begin
vowel:=[ ‘a’, ‘e’, ‘i’, ‘o’, ‘u’ ];
letter:=[ ‘a’ .. ‘z’];
集合运算:(并、交、差)
运算符 运算名称 运算方法
+ 并 产生一个包含两个集合元素的集合
* 交 产生一个只包含两个集合元素公共元素的集合
- 差 产生一个包含所有属于第一个集合但不属于第二个集合的元素的集合

[1,3,4] + [1,2,4]
[1,3] + [2,4]
[‘a’,‘c’,‘f’] + [‘b’,‘c’,‘d’,‘f’]

[1,3,4] * [1,2,4]
[1,3] * [2,4]
[‘a’,‘c’,‘f’] * [‘b’,‘c’,‘d’,‘f’]

[1,3,4] - [1,2,4]
[1,3] - [2,4]
[‘a’,‘c’,‘f’] - [‘b’,‘c’,‘d’,‘f’]
[1,2,3,4]
[1,2,3,4]
[‘a’,‘b’,‘c’,‘d’,‘f’]
[1,4]
[ ]
[‘c’,‘f’]
[3]
[1,3]
[‘a’]
集合关系运算 = <> <= >=
关系运算符 关系运算名称 关系运算的含义
set1=set2 相同 检查两个集合所包含的元素相同
set1< >set2 不相同 检查两个集合不相同
set1<=set2 包含于
set1是子集 检查第一个集合中的元素是否都在第二个集合中出现
set1>=set2 包含
set1是包集 检查第一个集合中的元素是否包含第二个集合中的所有元素
in 属于 检查集合基类型的一个元素是否属于集合
判断TRUE / FALSE
[‘a’,‘b’,‘c’] = [‘a’,‘b’,‘c’]
[‘a’,‘b’,‘c’] <> [‘c’,‘b’,‘a’]
[ ] <= [‘a’,‘b’,‘c’]
[2,3] <= [2,3]
[1,2,3] >= [2,3]
[1,2,3] >= [ ]
1 in [1,2,3]
例8.1 输入一串字符,以‘?’结束,
组成元音字母集合、辅音字母集合,
然后输出两集合元素及其元素个数。
(思路:定义两个集合变量s1、s2,分别表示元音字母集合和辅音字母集合,基类型是字符的子界‘a’..‘z’。再定义两个整型变量n1、n2,用来记录两集合的元素个数。定义字符变量ch,存放读入的字符。)
PROGRAM sets ( input , output ) ;
VAR s1,s2 : set of ‘a’ .. ‘z’; n1,n2:integer; ch:char;
BEGIN
s1:=[ ]; s2:=[ ]; n1:=1; n2:=0; {初始化}
read(ch);
while ch<> ‘ ’ do
begin
if ch IN [‘a’ .. ‘z’]
then if ch IN [‘a’, ‘e’, ‘i’, ‘o’, ‘u’]
then s1:=s1+[ch]
else s2:=s2+[ch];
read(ch)
end; {形成元音与辅音字母集合}
for ch:=‘a’ to ‘z’ do {输出元音字母集合及其个数}
if ch IN s1
then begin
write(ch);
n1:=n1+1
end;
writeln;
writeln(‘n1=’,n1);
for ch:=‘a’ to ‘z’ do {输出辅音字母集合及其个数}
if ch IN s2
then begin
write(ch);
n2:=n2+1
end;
writeln;
writeln(‘n2=’,n2)
End.
集合类型作业:P188
8.1 编程序,且写出结果
定义集合s=set of 1..10
且编一个print的过程,
输出集合的元素
8.2 字母 ‘a’..‘z’
数字 ‘0’..‘9’
同课章节目录