ImageVerifierCode 换一换
格式:PPT , 页数:22 ,大小:201.50KB ,
资源ID:6495536      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6495536.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Pascal程序设计(第9课)-集合、记录类型.ppt)为本站会员(hyngb9260)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

Pascal程序设计(第9课)-集合、记录类型.ppt

1、Pascal语言,第9课,目前为止,我们已经学习了4个标准类型(实型、整型、字符型、布尔型)和2个用户定义简单类型(枚举型、子界型),1个用户定义结构类型(数组)。本节将研究另一个用户定义结构类型集合。 Pascal是包括集合数据类型的第一个通用程序设计语言,在Pascal中允许执行通常的集合运算并、交、差。此外,使用集合成员检查可以方便的知道一个特定的数据项是否是某集合中的项。 在数学中,集合由一对包含集合元素的花括号(如1,3,5,7,9)表示,由于花括号在Pascal中用于注释,所以我们用方括号代替花括号表示集合。,【集合类型】,集合类型的一般定义形式如下:Type=set of ;Va

2、r:; 可以合并成如下形式:Var:set of ; 例如: typenum=set of char;varn:num;或varn: set of char;,【集合类型说明】,集合类型的一般定义形式如下:Type=set of ;Var:; 注意1:基类型必须是有序类型,如整型子界、字符型、布尔型、枚举类型等,而整型、实型、数组等不能作为集合的基类型。但是允许数组的基类型是集合类型。 注意2:为了程序效率,Pascal编译程序都限制了集合类型值的数目,所以整型不能作为集合的基类型,而整型的子界可以作为集合的基类型。,【集合类型说明】,1、赋值空集和全集: 处理集合之前,一般都要给集合变量赋以

3、初值。例如:Typemonth=(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec);monthset=set of month;Varwinter,summer:monthset;Beginwinter:=dec,jan,feb;summer:=junaug; 说明:定义完枚举类型month之后,用它作为基类型定义了集合类型monthset,然后用集合类型标识符monthset定义了两个集合类型变量winter和summer。,【集合运算】,集合的赋值语句形式为:=; 比如上面的两个赋值语句:winter:=dec,jan,feb;第1句summ

4、er:=junaug; 第2句 注意: a、集合表达式可以是集合值,集合值由一对方括号和已定义的集合基类型的值表组成(比如第1句),连续的值可以写成子界的形式(比如第2句)。 b、集合表达式也可以是另一个集合变量或使用Pascal集合运算的两个或多个集合的运算式,但必须赋值相容。 c、集合表达式的所有元素必须包括在左端集合变量的基类型中。 d、任何集合在参加运算之前总是应该初始化的:,【集合运算】,我们有时希望使一个集合为空,不包含任何元素。在Pascal中,空集合由一对方括号 表示,如:summer:= 。 如果要将集合初始化为全集,需要包括基类型的所有值。 例: TypeLetterset

5、=set of az; VarVowel,letter:letterset; BeginVowel:=a,e,i,o,u; 初始化为元音集合Letter:=a,z; 初始化为全集,【集合运算】,2、集合的并交差 :集合的并交差要求类型相容的两个集合作为运算对象。 两个集合的并(+):定义为在任意集合中或两个集合中元素的汇集。如:1,2,4+2,3 是 1,2,3,4 1,3+2,4 是 1,2,3,4a,d+c,d,f 是 a, c,d ,f 两个集合的交(*):定义为两个集合所共有的所有元素的汇集。如:1,2,4*2,3 是 21,3*2,4 是 a,d*c,d,f 是 d 两个集合的差(-

6、):定义为在集合A中,而不在集合B中元素的汇集。如:1,2,4-2,3 是 1,41,3-2,4 是 1,3a,d-c,d,f 是 a1,2,3,4-4,1,3,2 是 ,【集合运算】,2、集合的并交差 : 注意: a、在集合中的次序是无关紧要的,集合1,2,3,4和4,1,3,2被认为是相 同的,所以上式中它们的差为空集。 b、当运算符“+、*、-”两边的运算对象是集合时,便执行相应的集合运算。如: 并 set1+set2交 set1*set2差 set1-set2其中set1和set2是集合变量或集合值(括在方括号中的元素表)。 c、集合运算的优先规则:先*后+、-,统计从左到右计算,为了

7、避免混淆,最好使用括号。 d、当我们希望在一个已有的集合中加入一个新的元素时,要通过将已有的集合与由新元素组成的单个元素集合相加得到。 例如:要在集合1,3,4,5中加入新元素2应写成:1,3,4,5+2,得到的集合为1,2,3,4,5。,【集合运算】,3、集合的关系运算: 在集合中可以进行的关系运算有:=(相等)、(不等)、=(包集)。 运算=和用于检查两个运算是否包含同样的元素。例如:1,3=3,1 结果为 true;1,31,3 结果为 false;1,2,4=3,4 结果为 false; 运算=决定包集关系,如果集合b的每个元素也是集合a的元素,则称集合a是集合b的包集(a=b)。任何

8、集合都是空集的包集。1,3=1,3 结果为 true;1,3=1,2,3,4 结果为 false;1,3,5=1,5 结果为true;,【集合运算】,4、集合元素的输入和输出:集合变量不能直接输入和输出,我们通常这样进行:首先将集合变量值为空集,然后逐个读入集合的每个元素值,并构成单值集合与集合变量相加。为了输出一个集合变量的值,可以采用这样的办法:用IN运算逐个测试集合基类型所允许的每个元素,看它是否包含于这个集合变量中,若是则输出这个元素。,【集合运算】,分析:定义两个集合s1和s2,分别表示元音字母集合和辅音字母集合,它们的基类型是字符的子界az。再定义两个整型变量n1和n2存放个数,定

9、义字符变量ch存放读入的字符。,例1:输入一串字符,以?结束,组成元音字母集合,辅音字母集合,然后输出两个集合元素及其元素个数。,例1:输入一串字符,以?结束,组成元音字母集合,辅音字母集合,然后输出两个集合元素及其元素个数。,分析:素数是大于1,且除了1和它本身外不能被其它任何整数所整除的整数。 用筛选法求素数的基本思想是:首先将整数存放于某集合中,然后从集合中选出当前最小的元素,将它作为素数输出,再从集合中去掉其所有倍数;再找集合中最小的元素,将它作为素数输出,从集合中去掉其所有的倍数如此继续,直到集合为空。 用筛选法求2-100中的所有素数的算法如下:1、建立集合21002、Repeat

10、3、 找出当前集合中最小的数(即素数)4、 打印该最小数5、 从集合中去掉该素数的所有倍数6、Until 集合为空,例2:用筛选法求素数。,Program example2(input,output);Constn=100;Var s:set of 1n;i,j:integer;Begin s:=2n;i:=2;RepeatWhile not(i in s) do 找到当前最小的数i:=i+1;Writeln(i); j:=i;While j=n doBegins:=s-j;j:=j+i;End;Until s= ;End.,例2:用筛选法求素数。,记录类型是Pascal允许用户定义的又一新的

11、结构数据类型。象数组一样,一个记录是两个或多个有关数据项的汇集,但它与数组不同,一个记录的每个分量可以具有不同的类型。,【记录类型】,1、记录说明:在使用一个记录之前,必须说明它的类型。 记录类型的一般定义形式为:Type=Record:类型;:类型;:类型End; 其中Record和End是两个保留字,必不可少。域标识符可以是一个标识符或多个标识符。类型可以是任何标准的或用户定义的数据类型,包括结构类型,比如数组或记录类型。,【记录类型】,记录类型的一般定义形式为:Type=Record:类型;:类型;:类型End; 例如:Typemont=(jan,feb,mar,apr,may,jun,

12、jul,aug,sep,oct,nov,dec);date=recordmonth:mont;day:131;year:integer;end;Varday1,day2:date;,【记录类型】,记录类型date包括三个域:month,day和year。它们分别是枚举类型、子界类型和整型。day1和day2是记录类型变量。,1、记录类型的赋值: (1)同类型的记录变量可以整体拷贝。如:day2:= day1;(2)给每个分量(域)可以分别赋值,此时应写出完整的域名,它由记录变量名后+圆点+域名组成。如:day1.month:=oct;day1.day:=26;day1.year:=2005;,

13、【记录类型】,练习1:计算Xn。X,n由键盘输入 练习2:顺序读入字符,以“?”结束,然后以和输入相反的次序输出读入的字符,用递归做。,练习,参考,参考,返回,program lianxi1(input,output);vara:string;i,j:integer;beginread(a);for i:=97 to 122 dofor j:=1 to 20 doif ord(aj) = i then write(aj);end.,练习1:从键盘上随意输入20个字母,按照字母表的顺序将它们输出。,参考程序:,返回,练习2:读入10个单词,按照字典次序排列单词。,program lianxi2(input,output);typeword=packed array115 of char;vara:array110 of word;t:word;i,j:integer;beginfor i:=1 to 10 do readln(ai);for i:=1 to 9 dofor j:=i+1 to 10 doif ai aj then begint:=ai;ai:=aj;aj:=tend;for i:=1 to 10 dowriteln(ai);end.,参考程序:,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报