大榕树——让我们共成长!
大榕树 myDrs.org
您的位置:大榕树 \ 编程       |  Logo语言   |  Pascal语言   |  信息学奥赛   |  高考保送    |  HTML版本
|  Pascal语言>>Pascal入门>>Pascal基本教程 第九章         本站全文搜索: 友情提示:

Pascal基本教程 第九章
http://www.mydrs.org  6/16/2001  大榕树


集合与记录

9.1 集合
  以已知序数类型值的集合为值,所构成的类型是集合类型,称已知序数类型为基类型。集合类型的定义形式为:
      集合类型名=set of 基类型
  限定基类型为枚举类型、字符型、布尔型以及它们的子界和整型子界。由于基类型中不能超过256个可能值,且它们的序数值应在0..255之间,因此基类型不能是短整型、整型、长整型。
  表示一个集合值的最通用的方法是逐个枚举集合的元素。下面是集合值标记的例子:
[3,9,15,20] {由3,9,15,20组成的集合}
[ ] {空集}
['l'..'p','z' ]{由字符l,m,n,o,p,z组成的集合}
  两个相连的集合对象之间,可以通过下列运算符进行运算
集合运算符: +
产生一个包含两个集合元素的集合

*
产生一个只包含两个集合元素公共元素的集合


产生一个包含所有属于第一个集合、但不属于第二个机和的元素的集合

例如:[A,B,C]+[D]等于[A,B,C,D]
[A,B,C]*[A]等于[A]
[A,B,C]-[A]等于[B,C]

关系运算符

=
检查两个集合所包含的元素相同

<>
检查两个集合不相等

<=
检查第一个集合中的元素都在第二个集合中出现

>=
检查第一个集合中的元素包含第二个集合中的所有元素

in
检查集合基类型的一个元素属于集合

例如:[A,B,C]=[A,B,C] 等于true
[A,B,C]<>[C,B,A] 等于FALSE

9.2 记录
  记录是描述同一对象的一组类型可能不同的数据的集合。使用记录类型实现了数据逻辑关系和存放形式上的一致。定义记录类型的一般形式
         记录类型名=record
               域名1:类型1;
               域名2:类型2;
               ……
               域名m:类型m;
               end;
例如:表示学生信息的记录定义
type
    stype=record
         name:string[20];
         number:integer;
    sex:(male,female);
  class:1..20
  address:string
         end;
  域为记录类型的元素。记录的每个域都有名称,不同域的数据类型可以各不相同,这一点是数组所不能做到的。引用记录变量的元素采用以下标记法:
(1)直接引用,其形式为
   记录变量名.域名
例如:var str1,str2:stype;
   则str1.name表示学生str1的姓名,str2.sex表示学生str2的性别。
(2)使用with开域语句,其形式为
   with 记录变量名 do 语句
  在with语句中,引用记录变量名不再冠以记录变量名,以简化对记录中域的引用写法。例如描述100个学生的数据信息,引入元素类型为stype的数组students。
  var
   students:array[1..100]of stype;
number_of_boy,number_of _girl,k:integer:
例如下面是一段统计一个班级中男生人数和女生人数的程序。
 begin
  number_of_boy:=0;number_of_girl:=0;
  for k:=1 to 100 do
  with student[k] do
  if sex=male then number_of_boy:=number_of_boy+1
   else number_of_girl:=number_of_girl+1
 end;
  with语句的嵌套结构的一般形式:
  with <记录变量名1> do
   with <记录变量名2> do
    ……
     with <记录变量名n> do
      <语句>;
  使用with嵌套结构时,with的嵌套顺序必须和所打开的记录的嵌套顺序一致,以就是说外层with打开外层记录,内层with打开内层记录。上面的嵌套格式也可以简写为:
  with <记录变量名1,记录变量名2,……,记录变量名n> do
   <语句>;
  若记录是由一部分固定不变和另一部分变化部分是随固定部分中的某个数据项的具体取值而定的数据项所组成的称为记录变体。带记录变体的记录类型定义有以下形式:
  type
   <类型标识符>=record
     <域名1>:<类型1>;
     <域名2>:<类型2>;
     ……
     <域名n-1>:<类型n-1>;
     case <标志域>:<类型n> of
      <常量表1>:<域表1>;
      <常量表2>:<域表2>;
      ……
      <常量表m>:<域表m>;
   end;
例:重新定义描述学生信息的记录类型stype,对于大专生,不需要增加其他信息,对于本科生,增加专业信息。
type
    stype=record
         name:string[20];
         number:integer;
    sex:(male,female);
  class:1..20
  address:string
         case studtype:(s,u) of
          s:( );
          u:(major:string);
         end;

作 者:联合空间网络工作室
来 源:cpascal.com
共有14915位读者阅读过此文

  • 上篇文章Pascal基本教程 第八章
  • 下篇文章Pascal基本教程 第十章

  • 发送邮件
    保存页面 打印文章 HTML版本 发表评论

    □- 近期热门文章 □- 相关文章
    1. NOIP2006竞赛大纲 [8307]
    2. 七类高中生具有保送资格 [5911]
    3. NOI2006获奖选手名单 [4956]
    4. 关于举办NOIP2006模拟赛的通告 [4107]
    5. Turbo Pascal各语句运行速... [3595]
    6. Turbo王者归来新Delphi免费... [3182]
    7. IOI2006我国4名选手全部获得金... [2946]
    8. 关于APIO2007与IOI2007... [2764]
    9. noip倒计时 by 枯叶蝴蝶 [2684]
    10. 朱泽园:思想上的金牌更重要 [2169]
    [专题] Pascal基本教程
    Pascal基本教程 第11章
    Pascal基本教程 第十章
    Pascal基本教程 第九章
    Pascal基本教程 第八章
    Pascal基本教程 第七章
    Pascal基本教程 第六章
    Pascal基本教程 第五章
    Pascal基本教程 第四章
    Pascal基本教程 第三章
     

    关于本站 | 合作伙伴 | 联系方式
    大榕树 版权所有 ©1999-2006 www.myDrs.org 闽ICP备05000721号